#include <LiquidCrystal_I2C.h>
#include "pitches.h"
LiquidCrystal_I2C lcd(0x27, 16, 2);
#define NOTE_C4 262
#define NOTE_D4 294
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_G4 392
#define NOTE_A4 440
#define NOTE_B4 494
#define NOTE_C5 523
#define NOTE_D5 587
#define NOTE_E5 659
#define NOTE_F5 698
#define NOTE_G5 784
#define NOTE_A5 880
#define NOTE_B5 988
const int buzzer = 10;
const float songSpeed = 1.0;
int notes[] = {
NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
NOTE_A4, NOTE_G4, NOTE_A4, 0,
NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
NOTE_A4, NOTE_G4, NOTE_A4, 0,
NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
NOTE_A4, NOTE_C5, NOTE_D5, NOTE_D5, 0,
NOTE_D5, NOTE_E5, NOTE_F5, NOTE_F5, 0,
NOTE_E5, NOTE_D5, NOTE_E5, NOTE_A4, 0,
NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
NOTE_D5, NOTE_E5, NOTE_A4, 0,
NOTE_A4, NOTE_C5, NOTE_B4, NOTE_B4, 0,
NOTE_C5, NOTE_A4, NOTE_B4, 0,
NOTE_A4, NOTE_A4,
//Repeat of first part
NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
NOTE_A4, NOTE_G4, NOTE_A4, 0,
NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0,
NOTE_A4, NOTE_G4, NOTE_A4, 0,
NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0,
NOTE_A4, NOTE_C5, NOTE_D5, NOTE_D5, 0,
NOTE_D5, NOTE_E5, NOTE_F5, NOTE_F5, 0,
NOTE_E5, NOTE_D5, NOTE_E5, NOTE_A4, 0,
NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0,
NOTE_D5, NOTE_E5, NOTE_A4, 0,
NOTE_A4, NOTE_C5, NOTE_B4, NOTE_B4, 0,
NOTE_C5, NOTE_A4, NOTE_B4, 0,
//End of Repeat
NOTE_E5, 0, 0, NOTE_F5, 0, 0,
NOTE_E5, NOTE_E5, 0, NOTE_G5, 0, NOTE_E5, NOTE_D5, 0, 0,
NOTE_D5, 0, 0, NOTE_C5, 0, 0,
NOTE_B4, NOTE_C5, 0, NOTE_B4, 0, NOTE_A4,
NOTE_E5, 0, 0, NOTE_F5, 0, 0,
NOTE_E5, NOTE_E5, 0, NOTE_G5, 0, NOTE_E5, NOTE_D5, 0, 0,
NOTE_D5, 0, 0, NOTE_C5, 0, 0,
NOTE_B4, NOTE_C5, 0, NOTE_B4, 0, NOTE_A4};
int durations[] = {
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 375, 125,
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 375, 125,
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 125, 250, 125,
125, 125, 250, 125, 125,
250, 125, 250, 125,
125, 125, 250, 125, 125,
125, 125, 375, 375,
250, 125,
//Rpeat of First Part
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 375, 125,
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 375, 125,
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 250, 125, 125,
125, 125, 125, 250, 125,
125, 125, 250, 125, 125,
250, 125, 250, 125,
125, 125, 250, 125, 125,
125, 125, 375, 375,
//End of Repeat
250, 125, 375, 250, 125, 375,
125, 125, 125, 125, 125, 125, 125, 125, 375,
250, 125, 375, 250, 125, 375,
125, 125, 125, 125, 125, 500,
250, 125, 375, 250, 125, 375,
125, 125, 125, 125, 125, 125, 125, 125, 375,
250, 125, 375, 250, 125, 375,
125, 125, 125, 125, 125, 500};
const int pinBuzzer = 6;
const int buttonPins = 2;
const int buttonPind = 3;
const int buttonPinz = 4;
const int buttonPine = 5;
byte ledPinred = 13;
byte ledPinyellow = 12;
byte ledPingreen = 11;
const int a = 10;
const int b = 9;
const int c = A1;
const int d = A2;
const int e = A3;
const int f = 8;
const int g = 7;
int buttonState1 = 0;
int buttonState2 = 0;
int buttonState3 = 0;
int buttonState4 = 0;
void setup() {
lcd.init();
pinMode(buttonPins, INPUT);
pinMode(buttonPind, INPUT);
pinMode(buttonPinz, INPUT);
pinMode(buttonPine, INPUT);
pinMode(ledPinred, OUTPUT);
pinMode(ledPinyellow, OUTPUT);
pinMode(ledPingreen, OUTPUT);
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
digitalWrite(ledPinred, 0);
digitalWrite(ledPinyellow, 0);
digitalWrite(ledPingreen, 0);
pinMode(pinBuzzer, OUTPUT);
segoff();
}
void loop() {
buttonState1 = digitalRead(buttonPins);
buttonState2 = digitalRead(buttonPind);
buttonState3 = digitalRead(buttonPinz);
buttonState4 = digitalRead(buttonPine);
if (buttonState1 == 1) {
digitalWrite(ledPinred, 1);
digitalWrite(ledPinyellow, 0);
digitalWrite(ledPingreen, 0);
delay(1000);
digitalWrite(ledPinred, 0);
digitalWrite(ledPinyellow, 1);
digitalWrite(ledPingreen, 0);
delay(1000);
digitalWrite(ledPinred, 0);
digitalWrite(ledPinyellow, 0);
digitalWrite(ledPingreen, 1);
delay(1000);
digitalWrite(ledPinred, 0);
digitalWrite(ledPinyellow, 0);
digitalWrite(ledPingreen, 0);
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(" wulan ");
delay(1000);
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 1);
lcd.print(" wulan ");
delay(1000);
lcd.clear();
nol();
delay(1000);
satu();
delay(1000);
dua();
delay(1000);
tiga();
delay(1000);
empat();
delay(1000);
lima();
delay(1000);
enam();
delay(1000);
tujuh();
delay(1000);
delapan();
delay(1000);
sembilan();
delay(1000);
segoff();
lcd.noBacklight();
}
if (buttonState2 == 1) {
digitalWrite(ledPinred, 1);
digitalWrite(ledPinyellow, 0);
digitalWrite(ledPingreen, 0);
delay(1000);
digitalWrite(ledPinred, 0);
digitalWrite(ledPinyellow, 1);
digitalWrite(ledPingreen, 0);
delay(1000);
digitalWrite(ledPinred, 0);
digitalWrite(ledPinyellow, 0);
digitalWrite(ledPingreen, 1);
delay(1000);
digitalWrite(ledPinred, 0);
digitalWrite(ledPinyellow, 0);
digitalWrite(ledPingreen, 0);
lcd.backlight();
lcd.clear();
lcd.setCursor(2, 0);
lcd.print(" ahlul ");
delay(1000);
lcd.backlight();
lcd.clear();
lcd.setCursor(2, 3);
lcd.print(" ahlul ");
delay(1000);
lcd.clear();
nol();
delay(1000);
satu();
delay(1000);
dua();
delay(1000);
tiga();
delay(1000);
empat();
delay(1000);
lima();
delay(1000);
enam();
delay(1000);
tujuh();
delay(1000);
delapan();
delay(1000);
sembilan();
delay(1000);
segoff();
lcd.noBacklight();
}
if (buttonState3 == 1) {
digitalWrite(ledPinred, 1);
digitalWrite(ledPinyellow, 0);
digitalWrite(ledPingreen, 0);
delay(1000);
digitalWrite(ledPinred, 0);
digitalWrite(ledPinyellow, 1);
digitalWrite(ledPingreen, 0);
delay(1000);
digitalWrite(ledPinred, 0);
digitalWrite(ledPinyellow, 0);
digitalWrite(ledPingreen, 1);
delay(1000);
digitalWrite(ledPinred, 0);
digitalWrite(ledPinyellow, 0);
digitalWrite(ledPingreen, 0);
lcd.backlight();
lcd.clear();
lcd.setCursor(3, 0);
lcd.print(" raihan ");
delay(1000);
lcd.backlight();
lcd.clear();
lcd.setCursor(3, 1);
lcd.print(" RAIHAN ");
delay(1000);
lcd.clear();
nol();
delay(1000);
satu();
delay(1000);
dua();
delay(1000);
tiga();
delay(1000);
empat();
delay(1000);
lima();
delay(1000);
enam();
delay(1000);
tujuh();
delay(1000);
delapan();
delay(1000);
sembilan();
delay(1000);
segoff();
lcd.noBacklight();
}
if (buttonState4 == 1) {
lcd.noBacklight();
lcd.clear();
digitalWrite(ledPinred, 0);
digitalWrite(ledPinyellow, 0);
digitalWrite(ledPingreen, 0);
}
}
void nol () {
digitalWrite(a, 0);
digitalWrite(b, 0);
digitalWrite(c, 0);
digitalWrite(d, 0);
digitalWrite(e, 0);
digitalWrite(f, 0);
digitalWrite(g, 1);
}
void satu () {
digitalWrite(a, 1);
digitalWrite(b, 0);
digitalWrite(c, 0);
digitalWrite(d, 1);
digitalWrite(e, 1);
digitalWrite(f, 1);
digitalWrite(g, 1);
}
void dua () {
digitalWrite(a, 0);
digitalWrite(b, 0);
digitalWrite(c, 1);
digitalWrite(d, 0);
digitalWrite(e, 0);
digitalWrite(f, 1);
digitalWrite(g, 0);
}
void tiga () {
digitalWrite(a, 0);
digitalWrite(b, 0);
digitalWrite(c, 0);
digitalWrite(d, 0);
digitalWrite(e, 1);
digitalWrite(f, 1);
digitalWrite(g, 0);
}
void empat () {
digitalWrite(a, 1);
digitalWrite(b, 0);
digitalWrite(c, 0);
digitalWrite(d, 1);
digitalWrite(e, 1);
digitalWrite(f, 0);
digitalWrite(g, 0);
}
void lima () {
digitalWrite(a, 0);
digitalWrite(b, 1);
digitalWrite(c, 0);
digitalWrite(d, 0);
digitalWrite(e, 1);
digitalWrite(f, 0);
digitalWrite(g, 0);
}
void enam () {
digitalWrite(a, 0);
digitalWrite(b, 1);
digitalWrite(c, 0);
digitalWrite(d, 0);
digitalWrite(e, 0);
digitalWrite(f, 0);
digitalWrite(g, 0);
}
void tujuh () {
digitalWrite(a, 0);
digitalWrite(b, 0);
digitalWrite(c, 0);
digitalWrite(d, 1);
digitalWrite(e, 1);
digitalWrite(f, 1);
digitalWrite(g, 1);
}
void delapan () {
digitalWrite(a, 0);
digitalWrite(b, 0);
digitalWrite(c, 0);
digitalWrite(d, 0);
digitalWrite(e, 0);
digitalWrite(f, 0);
digitalWrite(g, 0);
}
void sembilan () {
digitalWrite(a, 0);
digitalWrite(b, 0);
digitalWrite(c, 0);
digitalWrite(d, 0);
digitalWrite(e, 1);
digitalWrite(f, 0);
digitalWrite(g, 0);
}
void segoff () {
digitalWrite(a, 1);
digitalWrite(b, 1);
digitalWrite(c, 1);
digitalWrite(d, 1);
digitalWrite(e, 1);
digitalWrite(f, 1);
digitalWrite(g, 1);
}
void musik() {
const int totalNotes = sizeof(notes) / sizeof(int);
// Loop through each note
for (int i = 0; i < totalNotes; i++)
{
const int currentNote = notes[i];
float wait = durations[i] / songSpeed;
// Play tone if currentNote is not 0 frequency, otherwise pause (noTone)
if (currentNote != 0)
{
tone(buzzer, notes[i], wait); // tone(pin, frequency, duration)
}
else
{
noTone(buzzer);
}
// delay is used to wait for tone to finish playing before moving to next loop
delay(wait);
}
}