/* * i2c_test_attiny85.c * * Created: 12/11/2021 15:26:38 * Author : 40008304 */ #include #define F_CPU 1000000 #include #define FRONT 0x51 #define RIGHT 0x52 #define LEFT 0x53 #define NOTHING 0x54 #define ERROR 0xF0 #define VOLTMIN 1 void led1_init(void); void led2_init(void); void led1_stop(void); void led2_stop(void); void ADC_init(void); char ADC_read_value(void); float ADC_averaging(void); float measureLed1(void); float measureLed2(void); char compareLed(void); int main(void) { DDRB |= (1< 0 ; precision --) { valeur_finale = valeur_finale +(((ADC_read_value() * 0.01961) - valeur_finale) / 15); } return valeur_finale; }; float measureLed1(void) { float adcLed; led2_stop(); led1_init(); _delay_ms(250); adcLed=ADC_averaging(); _delay_ms(250); return adcLed; }; float measureLed2(void) { float adcLed; led1_stop(); led2_init(); _delay_ms(250); adcLed=ADC_averaging(); _delay_ms(250); return adcLed; }; char compareLed(void) { float adcLed1 = measureLed1(); float adcLed2 = measureLed2(); float adcCompare = adcLed1 - adcLed2; if (adcCompare < -VOLTMIN) // adcLed2 > adcLed1 { return LEFT; } else if (adcCompare > VOLTMIN) { return RIGHT; } else { if((adcLed1 > VOLTMIN) && (adcLed2 > VOLTMIN)) { return FRONT; } else { return NOTHING; }; }; };