Mam dwa czujniki na portach ADC.
int LEFT_CZUJNIK()
{
ADMUX |= (ADMUX & 0xF8) | 4; //kanał w porcie C
ADCSRA |= (1<<ADSC);
while(ADCSRA & (1<<ADSC));
delay_us(5);
ADMUX |= (ADMUX & 0xF8);
if(ADCW > WARTOSC_L) return 1;
else return 0;
}
int RIGHT_CZUJNIK()
{
ADMUX |= (ADMUX & 0xF8) | 5; //kanał w porcie C
ADCSRA |= (1<<ADSC);
while(ADCSRA & (1<<ADSC));
delay_us(5);
ADMUX |= (ADMUX & 0xF8);
if(ADCW > WARTOSC_R) return 1;
else return 0;
}
Gdy w main sprawdzam np. jeden czujnik, to wszystko gra. Ale gdy wywołam je tak:
while
{
if(RIGHT_CZUJNIK())
{
BACK(150, 150);
delay_ms(500);
LEFT(150, 150);
delay_ms(1000);
MOTOR_STOP();
}
if(LEFT_CZUJNIK())
{
BACK(150, 150);
delay_ms(500);
RIGHT(150, 150);
delay_ms(1000);
MOTOR_STOP();
}
}
To pojawia się błąd, ponieważ program nie reaguje na lewy czujnik, ale tylko na prawy.
Problem jest jeszcze w tym, że akcja dla obu czujników są wykonywane losowo, choć łapie sygnał tylko z prawego czujnika.
Proszę o pomoc.