// 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();
  }
}