// https://forum.arduino.cc/t/can-somebody-create-a-code-for-me/1029913
#include <EButton.h>
class EEButton : public EButton {
public:
EEButton(uint8_t const pin, size_t const id) : EButton(pin), id(id) {}
size_t const id;
};
uint8_t const pincode[] = {1, 4, 1, 4, 2, 1, 3, 5, 6, 2, 3};
EEButton buttons[] = {{6, 1}, {4, 2}, {2, 3}, {7, 4}, {5, 5}, {3, 6}};
uint8_t const relayPin = 8;
void click(EEButton& button) {
static size_t index = 0;
if (not digitalRead(relayPin)) {
if (button.id == pincode[index]) {
if (++index != sizeof(pincode)) {
return;
}
digitalWrite(relayPin, HIGH);
}
index = 0;
}
}
void lock(EEButton& button) {
digitalWrite(relayPin, LOW);
}
void setup() {
pinMode(relayPin, OUTPUT);
for (EEButton& button: buttons) {
button.attachSingleClick(click);
}
buttons[1].attachDoubleClick(lock);
}
void loop() {
for (EEButton& button: buttons) {
button.tick();
}
}