I am trying to program a push button so that the lullaby should play once a button is pressed, and loop until the same button is pressed. Hence I have a problem to code it. Thanks in advance
// notes and frequencies used
//note frequency
// c 261 Hz
// d 294 Hz
// e 329 Hz
// f 349 Hz
// g 392 Hz
// a 440 Hz
// b 493 Hz
#include <LiquidCrystal.h>
int notes[] = {261,392,440,349,294,329,493}; //declaring the notes Frequencies
LiquidCrystal lcd( 12, 11, 5, 4, 3, 2);
int speaker = 9;
const int pushButton = 7;
int led = 8;
int switchState = 0;
int prevSwitchState = 0;
void setup() {
Serial.begin(9600);
pinMode(pushButton, INPUT);
lcd.begin(16, 2);
lcd.setCursor(0,0);
lcd.print("Press to play");
lcd.setCursor(0,1);
lcd.print("Baby Lullaby");
}
void loop() {
switchState = digitalRead(pushButton);
if( switchState != prevSwitchState){
while (switchState == LOW){
lcd.clear();
noTone(speaker);
delay(10);
lcd.setCursor(4,0);
lcd.print("Twinkle");
tone(speaker, notes[0]); //verse 1: ccggaag
delay(200);
noTone(speaker);
delay(50);
tone(speaker, notes[0]);
delay(200);
lcd.clear();
delay(10);
lcd.setCursor(4,0);
lcd.print("Twinkle");
tone(speaker, notes[1]);
delay(500);
noTone(8);
delay(50);
tone(speaker, notes[1]);
delay(300);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Little");
tone(speaker, notes[2]);
delay(350);
noTone(speaker);
delay(50);
tone(speaker, notes[2]);
delay(350);
lcd.clear();
lcd.setCursor(6,0);
lcd.print("Star");
tone(speaker, notes[1]);
delay(1000);
lcd.clear();
lcd.setCursor(6,0);
lcd.print("How");
tone(speaker, notes[3]); //verse 2: ffeeddc
delay(400);
noTone(speaker);
delay(50);
lcd.clear();
lcd.setCursor(7,0);
lcd.print("I");
tone(speaker, notes[3]);
delay(400);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wonder");
tone(speaker, notes[5]);
delay(500);
noTone(speaker);
delay(50);
tone(speaker, notes[5]);
delay(500);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("What");
tone(speaker, notes[4]);
delay(500);
noTone(speaker);
delay(20);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("You");
tone(speaker, notes[4]);
delay(500);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Are");
tone(speaker, notes[0]);
delay(1000);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Up");
tone(speaker, notes[1]); //verse 3: ggffeed
delay(600);
noTone(speaker);
delay(20);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Above");
tone(speaker, notes[1]);
delay(500);
tone(speaker, notes[3]);
delay(400);
noTone(speaker);
delay(50);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("The");
tone(speaker, notes[3]);
delay(400);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("World");
tone(speaker, notes[5]);
delay(400);
noTone(speaker);
delay(50);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("So");
tone(speaker, notes[5]);
delay(400);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("High");
tone(speaker, notes[4]);
delay(500);
noTone(speaker);
delay(30);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Like");
tone(speaker, notes[1]); //verse 4: ggffeed
delay(650);
noTone(speaker);
delay(20);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("A");
tone(speaker, notes[1]);
delay(300);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Diamond");
tone(speaker, notes[3]);
delay(400);
noTone(speaker);
delay(50);
tone(speaker, notes[3]);
delay(400);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("In");
tone(speaker, notes[5]);
delay(400);
noTone(speaker);
delay(50);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("The");
tone(speaker, notes[5]);
delay(400);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Sky");
tone(speaker, notes[4]);
delay(500);
noTone(speaker);
delay(30);
lcd.clear();
lcd.setCursor(4,0);
lcd.print("Twinkle");
tone(speaker, notes[0]); //verse 5: ccggag
delay(330);
noTone(speaker);
delay(50);
tone(speaker, notes[0]);
delay(330);
lcd.clear();
delay(10);
lcd.setCursor(4,0);
lcd.print("Twinkle");
tone(speaker, notes[1]);
delay(500);
noTone(speaker);
delay(50);
tone(speaker, notes[1]);
delay(500);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Little");
tone(speaker, notes[2]);
delay(500);
noTone(speaker);
delay(50);
tone(speaker, notes[2]);
delay(500);
lcd.clear();
lcd.setCursor(6,0);
lcd.print("Star");
tone(speaker, notes[1]);
delay(1000);
lcd.clear();
lcd.setCursor(6,0);
lcd.print("How");
tone(speaker, notes[3]); //verse 6: ffeedde
delay(400);
noTone(speaker);
delay(50);
lcd.clear();
lcd.setCursor(7,0);
lcd.print("I");
tone(speaker, notes[3]);
delay(400);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Wonder");
tone(speaker, notes[5]);
delay(500);
noTone(speaker);
delay(50);
tone(speaker, notes[5]);
delay(500);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("What");
tone(speaker, notes[4]);
delay(500);
noTone(speaker);
delay(20);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("You");
tone(speaker, notes[4]);
delay(500);
lcd.clear();
lcd.setCursor(5,0);
lcd.print("Are");
tone(speaker, notes[0]);
delay(1000);
lcd.clear();
}
}
prevSwitchState = switchState;
}
