#include <Toggle.h>
const byte but1 = 2;
const byte but2 = 3;
const byte but3 = 4;
const byte but4 = 5;
const byte led1 = 8;
const byte led2 = 9;
const byte led3 = 10;
const byte led4 = 11;
const byte ledUnlocked = 12;
byte butState = 0;
Toggle b1(but1);
Toggle b2(but2);
Toggle b3(but3);
Toggle b4(but4);
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(ledUnlocked, OUTPUT);
b1.begin(but1);
b2.begin(but2);
b3.begin(but3);
b4.begin(but4);
}
void loop() {
b1.poll();
b2.poll();
b3.poll();
b4.poll();
if (b1.onRelease()) {
if (butState == 0b00000000) {
butState |= 0b00000001;
digitalWrite(led1, HIGH);
} else {
clr();
}
}
if (b2.onRelease()) {
if (butState == 0b00000001) {
butState |= 0b00000001;
digitalWrite(led2, HIGH);
butState |= 0b00000010;
} else {
clr();
}
}
if (b3.onRelease()) {
if (butState == 0b00000011) {
butState |= 0b00000001;
digitalWrite(led3, HIGH);
butState |= 0b00000100;
} else {
clr();
}
}
if (b4.onRelease()) {
if (butState == 0b00000111) {
butState |= 0b00000001;
digitalWrite(led4, HIGH);
butState |= 0b00001000;
} else {
clr();
}
}
if (butState == 0b00001111) {
digitalWrite(ledUnlocked, HIGH);
butState = 0;
}
}
void clr() {
butState = 0;
digitalWrite(ledUnlocked, LOW);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
}