/******************************************************************* * Function: float getRightLight(void) * Input Variables: none * Output Return: float * Overview: getRightLight() converts ADC voltage to value inverse proportional to right light ********************************************************************/ float getRightLight( void ) { float voltage; ADC_SAMPLE adcsample; ADC_set_VREF( ADC_VREF_AVCC ); ADC_set_channel( RIGHT_LIGHT_CHAN ); adcsample = ADC_sample(); //LCD_printf( "ADC: %i\n",adcsample); voltage = adcsample * ( 5.0 / 1024 ); //LCD_printf( "right: %f\n",voltage); return voltage; }
int main(int argc, char **argv) { initialize(); clear_array(); PORTE = 0; ADC_enable(); ADC_set_channel(ADC_MUX_ADC5); ADC_set_prescaler(ADC_PRESCALER_128); ADC_start(); while(1){ set_array_red(read_ADC(ADC_MUX_ADC5)); } }
// getRightIR() converts ADC voltage to inches float getRightIR(){ float voltage;//IR range -0.4 to 5.3 V float distance;// (cm) 30 cm = 12 inches = 0.4 V float dist;//distance in inches ADC_SAMPLE adcsample; // Set the Voltage Reference first so VREF=5V. ADC_set_VREF( ADC_VREF_AVCC ); // Set the channel we will sample from. ADC_set_channel( IRRIGHT_CHAN ); // Now sample it! adcsample = ADC_sample(); // Convert to meaningful voltage value. voltage = adcsample * ( 5.0 / 1024 ); // Convert to distance in cm distance = (2914/(adcsample+5.0))-1.0; //Convert distance to inches dist = distance*0.3937; return dist; }
/******************************************************************* * Function: float float getLeftIR(void) * Input Variables: none * Output Return: float * Overview: getLeftIR() converts ADC voltage to inches ********************************************************************/ float getLeftIR( void ) { float voltage;//IR range -0.4 to 5.3 V float distance;// (cm) 30 cm = 12 inches = 0.4 V float dist;//distance in inches ADC_SAMPLE adcsample; // Set the Voltage Reference first so VREF=5V. ADC_set_VREF( ADC_VREF_AVCC ); // Set the channel we will sample from. ADC_set_channel( IRLEFT_CHAN ); // Now sample it! adcsample = ADC_sample(); //LCD_printf( "ADC: %i\n",adcsample); // Convert to meaningful voltage value. voltage = adcsample * ( 5.0 / 1024 ); // Convert to distance in cm distance = (2914/(adcsample+5.0))-1.0; dist = distance*1; return dist; }
/******************************************************************* * Function: float float getFrontIR(void) * Input Variables: none * Output Return: float * Overview: getFrontIR() converts ADC voltage to inches ********************************************************************/ float getFrontIR( void ) { //1 inch = 2.54 cm //1 cm = 0.3937 inches float voltage;//IR range -0.4 to 5.3 V float distance;// (cm) 30 cm = 12 inches = 0.4 V float dist;//distance in inches ADC_SAMPLE adcsample; // Set the Voltage Reference first so VREF=5V. ADC_set_VREF( ADC_VREF_AVCC ); // Set the channel we will sample from. ADC_set_channel(IRFRONT_CHAN); // Now sample it! adcsample = ADC_sample(); // Convert to meaningful voltage value. voltage = adcsample * ( 5.0 / 1024 ); // Convert to distance in cm distance = (2914/(adcsample+5.0))-1.0; dist = distance*1; return dist; }