#define BUTTON1_PIN 4
#define BUTTON2_PIN 2
#define LED0_PIN 8
#define LED1_PIN 9
#define LED2_PIN 10
#define LED3_PIN 11
volatile byte counter = 0;
void resetCounter() {
counter = 0;
}
void setup() {
pinMode(BUTTON1_PIN, INPUT_PULLUP);
pinMode(BUTTON2_PIN, INPUT_PULLUP);
pinMode(LED0_PIN, OUTPUT);
pinMode(LED1_PIN, OUTPUT);
pinMode(LED2_PIN, OUTPUT);
pinMode(LED3_PIN, OUTPUT);
attachInterrupt(
digitalPinToInterrupt(BUTTON2_PIN),
resetCounter,
RISING);
}
void loop() {
static bool buttonPrevious = 0;
if(!digitalRead(BUTTON1_PIN) == 1 && buttonPrevious == 0) {
delay(100);
counter++;
if(counter > 15) counter = 0;
buttonPrevious = 1;
} else if (!digitalRead(BUTTON1_PIN) == 0) {
delay(100);
buttonPrevious = 0;
}
digitalWrite(LED0_PIN, counter%2);
digitalWrite(LED1_PIN, counter/2%2);
digitalWrite(LED2_PIN, counter/4%2);
digitalWrite(LED3_PIN, counter/8%2);
}