#define TRUE 1
#define AVCC 5 //referencia de 5 volts
void setup() {
Serial.begin(9600);
Serial.println("Teste do ADC, canal 0");
/*selecione referencia AVCC, habilita ADC e faz Clk 2 Mhz*/
ADMUX = 1<<REFS0;
ADCSRA = (1<<ADEN)|(1<<ADPS1)|(1<<ADPS0);
ADCSRB = 0;
}
void loop() {
char msg[50];
uint16_t adc, iv, fv;
float valor;
while(TRUE){
ADCSRA |= 1<<ADSC; //inicia a conversão
while((ADCSRA &(1<<ADSC)) == (1<<ADSC)); //espera terminar
adc = ADCL;
adc = adc | (ADCH<<8); //lê depois ADCH
valor = AVCC * (adc/1024.0); //volts
iv = valor; //separa parte inteira
fv = (valor-iv)*100; //parte fracionaria
sprintf(msg,"ADC = %XH --> %d,%d volta\n", adc,iv,fv);
Serial.print(msg);
delay(10000);
}
}