Beispiel #1
0
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);
}
Beispiel #2
0
uint8_t current_sense()
{
    //select channel 1 for ADC
    setbit(ADMUX, MUX0);
    clearbit(ADMUX, MUX1);
    clearbit(ADMUX, MUX2);
    clearbit(ADMUX, MUX3);

    return(adc_conversion());
}
Beispiel #3
0
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);
	}
	
}