#define K1 (!(PINB & (1 << PB1)))
uint8_t richting = 1; // 1 = rechts, 0 = links
uint16_t drukTijd = 0;
uint8_t pK1 = 0;
uint16_t loopTimer = 0;
uint8_t pos = 2;
void setup() {
DDRD = 0b00111100; //ledpinnen op 2,3,4,5 als output
PORTD = (1 << PD2);
DDRB = 0x00; //alles van pinnen bank B op inputzetten
PORTB = 0xFF; // over de pull-up weerstand aansluiten
}
void loop() {
// --- Looplicht loopt altijd ---
if (loopTimer == 0) {
if (richting)
pos++;
else
pos--;
if (pos > 5) pos = 2;
if (pos < 2) pos = 5;
PORTD = (1 << pos); //hoge bit telkens opschuiven volgens de huidige postie 0 <-L/R->1 <-L/R-> 2 etc
loopTimer = 200;
}
else loopTimer--;
// --- Knop K1 korte/lange druk ---
if (K1) drukTijd++;
else if (!K1 && pK1) {
if (drukTijd > 200) //kijken of drukknop wel 200ms ingeduwd geweest is
richting = 0;
else
richting = 1;
drukTijd = 0;
}
pK1 = K1;
delay(1); //zorgen dat elke loop 1ms duurt
}