# define btn 2
bool debounce() {
static uint16_t state = 0;
state = (state<<1) | digitalRead(btn) | 0xfe00;
return (state == 0xff00);
}
void setup() {
pinMode(btn, INPUT_PULLUP);
pinMode(8, OUTPUT);
}
void loop() {
if (debounce()) {
digitalWrite(8, !digitalRead(8));
}
delay(20); // poor man's RTOS scheduler
}