#include <ezButton.h>
#include "pitches.h"
#include <LiquidCrystal_I2C.h>
byte clk = 2;
byte dt = 3;
byte sw = 4;
byte buzzerPin = 5;
LiquidCrystal_I2C lcd(0x27, 20, 4);
ezButton button(sw);
int counter = 0;
int flag = 1, prevCount = -1;
void setup() {
Serial.begin(9600);
attachInterrupt(digitalPinToInterrupt(clk), encoder, FALLING);
pinMode(buzzerPin, OUTPUT);
button.setDebounceTime(25);
lcd.init();
lcd.clear();
lcd.backlight();
delay(500);
}
void loop() {
button.loop();
if (button.isPressed()) {
selectMode();
}
changeMode();
delay(20);
}
void encoder() {
prevCount = counter;
if (digitalRead(dt) == HIGH) counter++;
else counter--;
counter = constrain(counter, 0, 1);
flag = 1;
}
void changeMode() {
if (flag == 1 && prevCount != counter) {
if (counter == 0) {
lcd.clear();
lcdPrint(0, 1, "Play Mario Theme?");
} else if (counter == 1) {
lcd.clear();
lcdPrint(0, 1, "Play Coffin Dance?");
}
flag = 0;
}
}
void selectMode() {
if (counter == 0) mario();
else if (counter == 1) coffin();
}
void lcdPrint(byte x, byte y, String msg) {
lcd.setCursor(x, y);
lcd.print(msg);
}
void coffin() {
lcd.clear();
lcdPrint(0, 1, "Now playing:");
lcdPrint(0, 2, "Coffin Dance");
int melody[] = {
NOTE_AS4, NOTE_AS4, NOTE_AS4, NOTE_AS4,
NOTE_D5, NOTE_D5, NOTE_D5, NOTE_D5,
NOTE_C5, NOTE_C5, NOTE_C5, NOTE_C5,
NOTE_F5, NOTE_F5, NOTE_F5, NOTE_F5,
NOTE_G5, NOTE_G5, NOTE_G5, NOTE_G5,
NOTE_G5, NOTE_G5, NOTE_G5, NOTE_G5,
NOTE_G5, NOTE_G5, NOTE_G5, NOTE_G5,
NOTE_C5, NOTE_AS4, NOTE_A4, NOTE_F4,
NOTE_G4, 0, NOTE_G4, NOTE_D5,
NOTE_C5, 0, NOTE_AS4, 0,
NOTE_A4, 0, NOTE_A4, NOTE_A4,
NOTE_C5, 0, NOTE_AS4, NOTE_A4,
NOTE_G4, 0, NOTE_G4, NOTE_AS5,
NOTE_A5, NOTE_AS5, NOTE_A5, NOTE_AS5,
NOTE_G4, 0, NOTE_G4, NOTE_AS5,
NOTE_A5, NOTE_AS5, NOTE_A5, NOTE_AS5,
NOTE_G4, 0, NOTE_G4, NOTE_D5,
NOTE_C5, 0, NOTE_AS4, 0,
NOTE_A4, 0, NOTE_A4, NOTE_A4,
NOTE_C5, 0, NOTE_AS4, NOTE_A4,
NOTE_G4, 0, NOTE_G4, NOTE_AS5,
NOTE_A5, NOTE_AS5, NOTE_A5, NOTE_AS5,
NOTE_G4, 0, NOTE_G4, NOTE_AS5,
NOTE_A5, NOTE_AS5, NOTE_A5, NOTE_AS5
};
for (int n = 0; n < 112; n++) {
int dur = 185;
tone(buzzerPin, melody[n], dur);
delay(dur * 1.3);
noTone(buzzerPin);
}
}
void mario() {
lcd.clear();
lcdPrint(0, 1, "Now playing:");
lcdPrint(0, 2, "Mario Theme");
tone(buzzerPin, 660, 100);
delay(150);
tone(buzzerPin, 660, 100);
delay(300);
tone(buzzerPin, 660, 100);
delay(300);
tone(buzzerPin, 510, 100);
delay(100);
tone(buzzerPin, 660, 100);
delay(300);
tone(buzzerPin, 770, 100);
delay(550);
tone(buzzerPin, 380, 100);
delay(575);
tone(buzzerPin, 510, 100);
delay(450);
tone(buzzerPin, 380, 100);
delay(400);
tone(buzzerPin, 320, 100);
delay(500);
tone(buzzerPin, 440, 100);
delay(300);
tone(buzzerPin, 480, 80);
delay(330);
tone(buzzerPin, 450, 100);
delay(150);
tone(buzzerPin, 430, 100);
delay(300);
tone(buzzerPin, 380, 100);
delay(200);
tone(buzzerPin, 660, 80);
delay(200);
tone(buzzerPin, 760, 50);
delay(150);
tone(buzzerPin, 860, 100);
delay(300);
tone(buzzerPin, 700, 80);
delay(150);
tone(buzzerPin, 760, 50);
delay(350);
tone(buzzerPin, 660, 80);
delay(300);
tone(buzzerPin, 520, 80);
delay(150);
tone(buzzerPin, 580, 80);
delay(150);
tone(buzzerPin, 480, 80);
delay(500);
tone(buzzerPin, 510, 100);
delay(450);
tone(buzzerPin, 380, 100);
delay(400);
tone(buzzerPin, 320, 100);
delay(500);
tone(buzzerPin, 440, 100);
delay(300);
tone(buzzerPin, 480, 80);
delay(330);
tone(buzzerPin, 450, 100);
delay(150);
tone(buzzerPin, 430, 100);
delay(300);
tone(buzzerPin, 380, 100);
delay(200);
tone(buzzerPin, 660, 80);
delay(200);
tone(buzzerPin, 760, 50);
delay(150);
tone(buzzerPin, 860, 100);
delay(300);
tone(buzzerPin, 700, 80);
delay(150);
tone(buzzerPin, 760, 50);
delay(350);
tone(buzzerPin, 660, 80);
delay(300);
tone(buzzerPin, 520, 80);
delay(150);
tone(buzzerPin, 580, 80);
delay(150);
tone(buzzerPin, 480, 80);
delay(500);
tone(buzzerPin, 500, 100);
delay(300);
tone(buzzerPin, 760, 100);
delay(100);
tone(buzzerPin, 720, 100);
delay(150);
tone(buzzerPin, 680, 100);
delay(150);
tone(buzzerPin, 620, 150);
delay(300);
tone(buzzerPin, 650, 150);
delay(300);
tone(buzzerPin, 380, 100);
delay(150);
tone(buzzerPin, 430, 100);
delay(150);
tone(buzzerPin, 500, 100);
delay(300);
tone(buzzerPin, 430, 100);
delay(150);
tone(buzzerPin, 500, 100);
delay(100);
tone(buzzerPin, 570, 100);
delay(220);
tone(buzzerPin, 500, 100);
delay(300);
tone(buzzerPin, 760, 100);
delay(100);
tone(buzzerPin, 720, 100);
delay(150);
tone(buzzerPin, 680, 100);
delay(150);
tone(buzzerPin, 620, 150);
delay(300);
tone(buzzerPin, 650, 200);
delay(300);
tone(buzzerPin, 1020, 80);
delay(300);
tone(buzzerPin, 1020, 80);
delay(150);
tone(buzzerPin, 1020, 80);
delay(300);
tone(buzzerPin, 380, 100);
delay(300);
tone(buzzerPin, 500, 100);
delay(300);
tone(buzzerPin, 760, 100);
delay(100);
tone(buzzerPin, 720, 100);
delay(150);
tone(buzzerPin, 680, 100);
delay(150);
tone(buzzerPin, 620, 150);
delay(300);
tone(buzzerPin, 650, 150);
delay(300);
tone(buzzerPin, 380, 100);
delay(150);
tone(buzzerPin, 430, 100);
delay(150);
tone(buzzerPin, 500, 100);
delay(300);
tone(buzzerPin, 430, 100);
delay(150);
tone(buzzerPin, 500, 100);
delay(100);
tone(buzzerPin, 570, 100);
delay(420);
tone(buzzerPin, 585, 100);
delay(450);
tone(buzzerPin, 550, 100);
delay(420);
tone(buzzerPin, 500, 100);
delay(360);
tone(buzzerPin, 380, 100);
delay(300);
tone(buzzerPin, 500, 100);
delay(300);
tone(buzzerPin, 500, 100);
delay(150);
tone(buzzerPin, 500, 100);
delay(300);
tone(buzzerPin, 500, 100);
delay(300);
tone(buzzerPin, 760, 100);
delay(100);
tone(buzzerPin, 720, 100);
delay(150);
tone(buzzerPin, 680, 100);
delay(150);
tone(buzzerPin, 620, 150);
delay(300);
tone(buzzerPin, 650, 150);
delay(300);
tone(buzzerPin, 380, 100);
delay(150);
tone(buzzerPin, 430, 100);
delay(150);
tone(buzzerPin, 500, 100);
delay(300);
tone(buzzerPin, 430, 100);
delay(150);
tone(buzzerPin, 500, 100);
delay(100);
tone(buzzerPin, 570, 100);
delay(220);
tone(buzzerPin, 500, 100);
delay(300);
tone(buzzerPin, 760, 100);
delay(100);
tone(buzzerPin, 720, 100);
delay(150);
tone(buzzerPin, 680, 100);
delay(150);
tone(buzzerPin, 620, 150);
delay(300);
tone(buzzerPin, 650, 200);
delay(300);
tone(buzzerPin, 1020, 80);
delay(300);
tone(buzzerPin, 1020, 80);
delay(150);
tone(buzzerPin, 1020, 80);
delay(300);
tone(buzzerPin, 380, 100);
delay(300);
tone(buzzerPin, 500, 100);
delay(300);
tone(buzzerPin, 760, 100);
delay(100);
tone(buzzerPin, 720, 100);
delay(150);
tone(buzzerPin, 680, 100);
delay(150);
tone(buzzerPin, 620, 150);
delay(300);
tone(buzzerPin, 650, 150);
delay(300);
tone(buzzerPin, 380, 100);
delay(150);
tone(buzzerPin, 430, 100);
delay(150);
tone(buzzerPin, 500, 100);
delay(300);
tone(buzzerPin, 430, 100);
delay(150);
tone(buzzerPin, 500, 100);
delay(100);
tone(buzzerPin, 570, 100);
delay(420);
tone(buzzerPin, 585, 100);
delay(450);
tone(buzzerPin, 550, 100);
delay(420);
tone(buzzerPin, 500, 100);
delay(360);
tone(buzzerPin, 380, 100);
delay(300);
tone(buzzerPin, 500, 100);
delay(300);
tone(buzzerPin, 500, 100);
delay(150);
tone(buzzerPin, 500, 100);
delay(300);
tone(buzzerPin, 500, 60);
delay(150);
tone(buzzerPin, 500, 80);
delay(300);
tone(buzzerPin, 500, 60);
delay(350);
tone(buzzerPin, 500, 80);
delay(150);
tone(buzzerPin, 580, 80);
delay(350);
tone(buzzerPin, 660, 80);
delay(150);
tone(buzzerPin, 500, 80);
delay(300);
tone(buzzerPin, 430, 80);
delay(150);
tone(buzzerPin, 380, 80);
delay(600);
tone(buzzerPin, 500, 60);
delay(150);
tone(buzzerPin, 500, 80);
delay(300);
tone(buzzerPin, 500, 60);
delay(350);
tone(buzzerPin, 500, 80);
delay(150);
tone(buzzerPin, 580, 80);
delay(150);
tone(buzzerPin, 660, 80);
delay(550);
tone(buzzerPin, 870, 80);
delay(325);
tone(buzzerPin, 760, 80);
delay(600);
tone(buzzerPin, 500, 60);
delay(150);
tone(buzzerPin, 500, 80);
delay(300);
tone(buzzerPin, 500, 60);
delay(350);
tone(buzzerPin, 500, 80);
delay(150);
tone(buzzerPin, 580, 80);
delay(350);
tone(buzzerPin, 660, 80);
delay(150);
tone(buzzerPin, 500, 80);
delay(300);
tone(buzzerPin, 430, 80);
delay(150);
tone(buzzerPin, 380, 80);
delay(600);
tone(buzzerPin, 660, 100);
delay(150);
tone(buzzerPin, 660, 100);
delay(300);
tone(buzzerPin, 660, 100);
delay(300);
tone(buzzerPin, 510, 100);
delay(100);
tone(buzzerPin, 660, 100);
delay(300);
tone(buzzerPin, 770, 100);
delay(550);
tone(buzzerPin, 380, 100);
delay(575);
}