#define BUTTON_X 2
#define BUTTON_A 5
#define BUTTON_B 4
#define BUTTON_C 3
#define LED_A 10
#define LED_B 9
#define LED_C 8
#define LED_X 11
bool lock = false;
bool stateA = false;
bool stateB = false;
bool stateC = false;
int code[3] = {0, 0, 0};
void setup() {
pinMode(BUTTON_X, INPUT);
pinMode(BUTTON_A, INPUT);
pinMode(BUTTON_B, INPUT);
pinMode(BUTTON_C, INPUT);
pinMode(LED_A, OUTPUT);
pinMode(LED_B, OUTPUT);
pinMode(LED_C, OUTPUT);
pinMode(LED_X, OUTPUT);
}
void loop() {
if (digitalRead(BUTTON_X) == HIGH) {
lock = !lock;
digitalWrite(LED_X, lock ? HIGH : LOW);
delay(500);
}
if (!lock) {
if (digitalRead(BUTTON_A) == HIGH) {
stateA = !stateA;
digitalWrite(LED_A, stateA ? HIGH : LOW);
code[0] = stateA ? 1 : 0;
delay(500);
}
if (digitalRead(BUTTON_B) == HIGH) {
stateB = !stateB;
digitalWrite(LED_B, stateB ? HIGH : LOW);
code[1] = stateB ? 1 : 0;
delay(500);
}
if (digitalRead(BUTTON_C) == HIGH) {
stateC = !stateC;
digitalWrite(LED_C, stateC ? HIGH : LOW);
code[2] = stateC ? 1 : 0;
delay(500);
}
if (code[0] == 1 && code[1] == 0 && code[2] == 1) {
for (int i = 0; i < 3; i++) {
digitalWrite(LED_A, HIGH);
digitalWrite(LED_B, HIGH);
digitalWrite(LED_C, HIGH);
delay(500);
digitalWrite(LED_A, LOW);
digitalWrite(LED_B, LOW);
digitalWrite(LED_C, LOW);
delay(500);
}
code[0] = 0;
code[1] = 0;
code[2] = 0;
}
}
}