#include <Servo.h>
int btn = 8;
int buzzer = 10;
Servo myservo;
int pos = 0;
bool isOn = false;
unsigned long lastDebounceTime = 0;
unsigned long debounceDelay = 50;
void setup() {
pinMode(0, OUTPUT);
pinMode(1, OUTPUT);
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(btn, INPUT_PULLUP);
pinMode(buzzer, OUTPUT);
}
void loop() {
int reading = digitalRead(btn);
if (reading == LOW && (millis() - lastDebounceTime) > debounceDelay) {
isOn = !isOn;
lastDebounceTime = millis();
while (digitalRead(btn) == LOW);
}
if (isOn) {
myservo.attach(9);
digitalWrite(0, HIGH);
tone(buzzer, 261);
for (pos = 0; pos <= 180; pos += 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
for (pos = 180; pos >= 0; pos -= 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
noTone(buzzer);
digitalWrite(0, LOW);
delay(500);
if (!isOn) return;
digitalWrite(1, HIGH);
tone(buzzer, 294);
for (pos = 0; pos <= 180; pos += 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
for (pos = 180; pos >= 0; pos -= 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
noTone(buzzer);
digitalWrite(1, LOW);
delay(500);
if (!isOn) return;
digitalWrite(2, HIGH);
tone(buzzer, 329);
for (pos = 0; pos <= 180; pos += 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
for (pos = 180; pos >= 0; pos -= 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
noTone(buzzer);
digitalWrite(2, LOW);
delay(500);
if (!isOn) return;
digitalWrite(3, HIGH);
tone(buzzer, 349);
for (pos = 0; pos <= 180; pos += 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
for (pos = 180; pos >= 0; pos -= 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
noTone(buzzer);
digitalWrite(3, LOW);
delay(500);
if (!isOn) return;
digitalWrite(4, HIGH);
tone(buzzer, 392);
for (pos = 0; pos <= 180; pos += 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
for (pos = 180; pos >= 0; pos -= 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
noTone(buzzer);
digitalWrite(4, LOW);
delay(500);
if (!isOn) return;
digitalWrite(0, HIGH);
digitalWrite(1, HIGH);
tone(buzzer, 493);
for (pos = 0; pos <= 180; pos += 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
for (pos = 180; pos >= 0; pos -= 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
noTone(buzzer);
digitalWrite(0, LOW);
digitalWrite(1, LOW);
delay(500);
if (!isOn) return;
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
tone(buzzer, 523);
for (pos = 0; pos <= 180; pos += 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
for (pos = 180; pos >= 0; pos -= 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
noTone(buzzer);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
delay(500);
if (!isOn) return;
digitalWrite(4, HIGH);
tone(buzzer, 264);
for (pos = 0; pos <= 180; pos += 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
for (pos = 180; pos >= 0; pos -= 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
noTone(buzzer);
digitalWrite(4, LOW);
delay(500);
if (!isOn) return;
digitalWrite(0, HIGH);
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
tone(buzzer, 292);
for (pos = 0; pos <= 180; pos += 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
for (pos = 180; pos >= 0; pos -= 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
noTone(buzzer);
digitalWrite(0, LOW);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
delay(500);
if (!isOn) return;
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
tone(buzzer, 330);
for (pos = 0; pos <= 180; pos += 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
for (pos = 180; pos >= 0; pos -= 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
noTone(buzzer);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
delay(500);
digitalWrite(0, HIGH);
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
tone(buzzer, 352);
for (pos = 0; pos <= 180; pos += 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
for (pos = 180; pos >= 0; pos -= 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
noTone(buzzer);
digitalWrite(0, LOW);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
delay(500);
digitalWrite(0, HIGH);
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
tone(buzzer, 396);
for (pos = 0; pos <= 180; pos += 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
for (pos = 180; pos >= 0; pos -= 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
noTone(buzzer);
digitalWrite(0, LOW);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
delay(500);
digitalWrite(0, HIGH);
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
tone(buzzer, 440);
for (pos = 0; pos <= 180; pos += 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
for (pos = 180; pos >= 0; pos -= 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
noTone(buzzer);
digitalWrite(0, LOW);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
delay(500);
digitalWrite(0, HIGH);
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
tone(buzzer, 495);
for (pos = 0; pos <= 180; pos += 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
for (pos = 180; pos >= 0; pos -= 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
noTone(buzzer);
digitalWrite(0, LOW);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
delay(500);
digitalWrite(0, HIGH);
digitalWrite(1, HIGH);
digitalWrite(2, HIGH);
digitalWrite(3, HIGH);
digitalWrite(4, HIGH);
tone(buzzer, 528);
for (pos = 0; pos <= 180; pos += 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
for (pos = 180; pos >= 0; pos -= 1) {
if (digitalRead(btn) == LOW) {
isOn = false;
break;
}
myservo.write(pos);
delay(5);
}
noTone(buzzer);
digitalWrite(0, LOW);
digitalWrite(1, LOW);
digitalWrite(2, LOW);
digitalWrite(3, LOW);
digitalWrite(4, LOW);
delay(500);
myservo.detach();
} else {
for (int i = 0; i <= 5; i++) {
digitalWrite(i, LOW);
}
myservo.detach();
noTone(buzzer);
}
}