uint8_t distance_sense() { /*Assumes to be called every 8ms. To reduce wear on infrared LED, measure *only every DIST_TIMER_MAX calls. On all the other calls, return old *value. */ static uint16_t dist_timer = 0; static uint8_t current_distance = 0; if(dist_timer == 0) { distance_supply_on(); _delay_us(400); //Rise time for infrared LED //select channel 2 for ADC clearbit(ADMUX, MUX0); setbit(ADMUX, MUX1); clearbit(ADMUX, MUX2); clearbit(ADMUX, MUX3); current_distance = 255-adc_conversion(); distance_supply_off(); dist_timer = DIST_TIMER_MAX; } dist_timer--; return(current_distance); }
uint8_t current_sense() { //select channel 1 for ADC setbit(ADMUX, MUX0); clearbit(ADMUX, MUX1); clearbit(ADMUX, MUX2); clearbit(ADMUX, MUX3); return(adc_conversion()); }
int main(){ lcd_init(); adc_port_config(); adc_init(); while(1){ //11 is the channel number lcd_print(1, 6, adc_conversion(11), 3); _delay_ms(500); } }