#define LED_PIN_1 11
#define LED_PIN_2 10
#define LED_PIN_3 9
#define LED_PIN_4 6
#define LED_PIN_5 5
#define LED_PIN_6 4
#define PUSH_PIN_1 12
#define PUSH_PIN_2 7
#define PUSH_PIN_3 3
#define BUZ_PIN 13
#define NUM_BUTTONS 3
int led[NUM_BUTTONS] = {LED_PIN_1, LED_PIN_2, LED_PIN_3};
int led2[NUM_BUTTONS] = {LED_PIN_4, LED_PIN_5, LED_PIN_6};
int push[NUM_BUTTONS] = {PUSH_PIN_1, PUSH_PIN_2, PUSH_PIN_3};
bool state[NUM_BUTTONS] = {false, false, false};
bool lastState[NUM_BUTTONS] = {true, true, true};
bool buttonReleased[NUM_BUTTONS] = {true, true, true};
void setup() {
Serial.begin(9600);
for (int i = 0; i < NUM_BUTTONS; i++) {
pinMode(led[i], OUTPUT);
pinMode(led2[i], OUTPUT);
pinMode(push[i], INPUT_PULLUP);
}
pinMode(BUZ_PIN, OUTPUT);
}
void loop() {
for (int i = 0; i < NUM_BUTTONS; i++) {
if (digitalRead(push[i]) == LOW && buttonReleased[i]) {
state[i] = !state[i];
buttonReleased[i] = false;
}
else if (digitalRead(push[i]) == HIGH) {
buttonReleased[i] = true;
}
if (state[i] != lastState[i]) {
lastState[i] = state[i];
}
}
if (state[0] == true) {
for (int i = 0; i < 3; i++) {
digitalWrite(led[i], HIGH);
delay(300);
digitalWrite(led[i], LOW);
}
delay(300);
for (int i = 0; i < 3; i++) {
digitalWrite(led[i], LOW);
}
}
if (state[1] == true) {
for (int i = 0; i < 3; i++) {
tone(BUZ_PIN, 200 * (i + 1), 300);
delay(300);
}
noTone(BUZ_PIN);
delay(300);
}
if (state[2] == true) {
for (int i = 0; i < 3; i++) {
digitalWrite(led2[i], HIGH);
delay(300);
digitalWrite(led2[i], LOW);
}
delay(300);
for (int i = 0; i < 3; i++) {
digitalWrite(led2[i], LOW);
}
}
}