const int buttonPin = 2;
const int buzzerPins[3] = {3, 4, 5};
const int frequencies[3] = {440, 660, 880}; // A4, E5, A5
unsigned long pressStartTime;
bool isPressed = false;
void setup() {
pinMode(buttonPin, INPUT);
for (int i = 0; i < 3; i++) {
pinMode(buzzerPins[i], OUTPUT);
}
}
void loop() {
int buttonState = digitalRead(buttonPin);
if (buttonState == HIGH && !isPressed) {
isPressed = true;
pressStartTime = millis();
}
if (buttonState == LOW && isPressed) {
isPressed = false;
unsigned long pressDuration = (millis() - pressStartTime) / 1000;
if (pressDuration >= 1) {
unsigned long baseTime = 5;
unsigned long extraTime = (pressDuration > baseTime) ? pressDuration - baseTime : 0;
unsigned long totalPlayTime = baseTime + extraTime;
playBuzzers(totalPlayTime);
}
}
}
void playBuzzers(unsigned long seconds) {
unsigned long endTime = millis() + seconds * 1000;
while (millis() < endTime) {
for (int i = 0; i < 3; i++) {
tone(buzzerPins[i], frequencies[i]);
delay(200);
noTone(buzzerPins[i]);
}
// change the order each cycle
int temp = frequencies[0];
frequencies[0] = frequencies[1];
frequencies[1] = frequencies[2];
frequencies[2] = temp;
}
}