bool test1 = true;
int stav = 0; // 0 = červená, 1 = oranžová, 2 = zelená
void setup() {
DDRB |= (1<<0) | (1<<1) | (1<<2); // PB0, PB1, PB2 ako výstupy (LED)
DDRD &= ~(1<<2); // PD2 ako vstup (tlačidlo)
PORTD |= (1<<2); // Pull-up rezistor na PD2
}
void loop() {
if (!(PIND & (1<<2)) && test1 == true) { // tlačidlo stlačené a povolené čítanie
test1 = false; // zablokuj ďalšie stlačenia, kým sa neuvoľní
// Zvýšime stav a ak presiahne 2, vrátime späť na 0
stav++;
if (stav > 2) {
stav = 0;
}
// Nastavíme LED podľa stavu
switch(stav) {
case 0:
PORTB = (1<<0); // Červená
break;
case 1:
PORTB = (1<<1); // Oranžová
break;
case 2:
PORTB = (1<<2); // Zelená
break;
}
delay(50); // Krátky debounce delay
}
if ((PIND & (1<<2)) != 0) { // tlačidlo uvoľnené
test1 = true; // môžeme znova čakať na nové stlačenie
}
}