#define K1 (!(PINB & (1 << PB1)))
#define K2 (!(PINB & (1 << PB2)))
#define K3 (!(PINB & (1 << PB3)))
uint16_t teller = 0;
uint8_t pK1 = 0, pK2 = 0;
uint16_t knipper = 0;
void uart_init() {
UBRR0L = 103; // 9600 baud
UCSR0B = (1 << TXEN0);
}
void uart_send(char c) {
while (!(UCSR0A & (1 << UDRE0)));
UDR0 = c;
}
void uart_send_num(uint16_t n) {
char buf[10];
itoa(n, buf, 10);
for (char* p = buf; *p; p++) uart_send(*p);
uart_send('\n');
}
void setup() {
DDRD = (1 << PD2); // knipper LED
DDRB = 0x00;
PORTB = 0xFF;
uart_init();
}
void loop() {
// --- blink LED onafhankelijk van knoppen ---
knipper++;
if (knipper >= 200) {
PORTD ^= (1 << PD2);
knipper = 0;
}
// --- reset met K3 ---
if (K3) teller = 0;
// --- K1 voorrang ---
if (K1 && !pK1) {
teller++;
}
else if (!K1) {
if (K2 && !pK2)
uart_send_num(teller);
}
pK1 = K1;
pK2 = K2;
delay(10);
}