You are on page 1of 6

const byte adcPin = 0;

volatile int adcReading;

volatile boolean adcDone;

boolean adcStarted;

typedef struct{

float AdcNow[8];

float AdcPass[8];

bool flag = false;

int Channel : 3;

}ADC_VAR;

//

ADC_VAR ADC_T;

//

//

float read_temp();

float to_voltage();

void espera(long t) ;

void channel_select(int channel);

float Channel_make(int Channel);

void setup() {

Serial.begin(115200) ; //9600

espera(10);

ADCSRA = bit (ADEN);


ADCSRA |= bit (ADPS0) | bit (ADPS1) | bit (ADPS2);

ADMUX &= B01000000 ;

ADMUX |= B01000000 ;

ADC_T.Channel = 0;

//----------------------------------------------------------------

ISR (ADC_vect)

adcReading = ADC;

adcDone = true ;

//------------------------------------------------------------------

void loop() {

for(int i = 0; i < 6; i++){

ADC_T.AdcNow[i] = Channel_make(i);

espera(20);

if(ADC_T.AdcNow[i] != ADC_T.AdcPass[i]){

ADC_T.flag = true;

else{

ADC_T.flag = false;

if (ADC_T.flag == true){

Serial.print("CH0 =");Serial.print(ADC_T.AdcNow[0], 3);

Serial.print("\t CH1 =");Serial.print(ADC_T.AdcNow[1], 3);

Serial.print("\t CH2 =");Serial.print(ADC_T.AdcNow[2], 3);


Serial.print("\t CH3 =");Serial.print(ADC_T.AdcNow[3], 3);

Serial.print("\t CH4 =");Serial.print(ADC_T.AdcNow[4], 3);

Serial.print("\t CH5 =");Serial.print(ADC_T.AdcNow[5], 3);

Serial.print("\n");

}//if

ADC_T.AdcPass[i] = ADC_T.AdcNow[i];

}//for

}//loop

//------------------------------------

float to_voltage(){

float voltage = 0.0; // a running total of the measurements for that channel

voltage = ((adcReading + 0.5) * 4.096)/ 1024.0 ;

return (voltage);

}//to voltage

//--------------------------------------

void espera(long t){

long pt = millis();

while(millis()-pt<t){}

}//espera

//---------------------------------

void channel_select(int channel){

switch(channel){

case 0:

ADMUX &= B01000000 ;

break;

case 1:

ADMUX &= B01000000 ;


ADMUX |= B01000001 ;

break;

case 2:

ADMUX &= B01000000 ;

ADMUX |= B01000010 ;

break;

case 3:

ADMUX &= B01000000 ;

ADMUX |= B01000011 ;

break;

case 4:

ADMUX &= B01000000 ;

ADMUX |= B01000100 ;

break;

case 5:

ADMUX &= B01000000 ;

ADMUX |= B01000101 ;

break;

default:

break;

//------------------------------------------------

}//switch

}//channel_select

float Channel_make(int Channel){

switch(Channel){

case 0:

channel_select(Channel);

ADCSRA |= bit (ADSC) | bit (ADIE);

float voltage_CH0;
voltage_CH0 = to_voltage();

return voltage_CH0;

break;

case 1:

channel_select(Channel);

ADCSRA |= bit (ADSC) | bit (ADIE);

float voltage_CH1;

voltage_CH1 = to_voltage();

return voltage_CH1;

break;

case 2:

channel_select(Channel);

ADCSRA |= bit (ADSC) | bit (ADIE);

float voltage_CH2;

voltage_CH2 = to_voltage();

return voltage_CH2;

break;

case 3:

channel_select(Channel);

ADCSRA |= bit (ADSC) | bit (ADIE);

float voltage_CH3;

voltage_CH3 = to_voltage();

return voltage_CH3;

break;

case 4:

channel_select(Channel);

ADCSRA |= bit (ADSC) | bit (ADIE);

float voltage_CH4;

voltage_CH4 = to_voltage();
return voltage_CH4;

break;

case 5:

channel_select(Channel);

ADCSRA |= bit (ADSC) | bit (ADIE);

float voltage_CH5;

voltage_CH5 = to_voltage();

return voltage_CH5;

break;

//---------------------------------------------------------

}//switch

}//channel make

You might also like