Este es el código que hemos probado, muestra algunos valores digitales pero no los valores analógicos. ¿Hay algo mal con el código? ¿Se puede mejorar de alguna manera?
#include "a library"
void setup (void)
{
ADMUX =_BV(REFS0);
ADCSRA = _BV(ADEN) | _BV(ADPS2) |_BV(ADPS1) |_BV(ADPS0);
}
unsigned int analogInput(char ch)
{
ch &= 0b00000111;
ADMUX |= ch;
ADCSRA |= _BV(ADSC);
while (!(ADCSRA & _BV(ADIF)));
ADCSRA |= _BV(ADIF);
return(ADC);
}
int main (void)
{
setup();
SetupComputerConnection();
unsigned int value;
double analoguevalue;
setup();
while(1)
{
value=analogInput(0);
analoguevalue=(value/1024)*5.0;
printf("digital=%d analog=%.2lf\n", value);
}
}