#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#define BUZZER_PIN 10 // Mengubah pin buzzer ke pin 10
LiquidCrystal_I2C lcd(0x27, 20, 4); // Alamat I2C, lebar 20, tinggi 4
// Frekuensi untuk setiap not dan nama not
int notes[] = {262, 294, 330, 349, 392, 440, 494, 523}; // C4, D4, E4, F4, G4, A4, B4, C5
String noteNames[] = {"Do", "Re", "Mi", "Fa", "Sol", "La", "Si", "Do"};
// Pin LED
int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9}; // Pin untuk LED
void setup() {
pinMode(BUZZER_PIN, OUTPUT); // Atur pin buzzer sebagai output
lcd.init(); // Inisialisasi LCD
lcd.backlight(); // Nyalakan backlight LCD
// Atur setiap pin LED sebagai output
for (int i = 0; i < 8; i++) {
pinMode(ledPins[i], OUTPUT);
}
}
void loop() {
for (int i = 0; i < 8; i++) {
tone(BUZZER_PIN, notes[i]); // Mainkan not dengan frekuensi yang sesuai
lcd.clear(); // Hapus tampilan LCD
lcd.setCursor(0, 0); // Atur kursor ke baris pertama
lcd.print("Playing Note: "); // Tampilkan teks
lcd.setCursor(0, 1); // Pindah ke baris kedua
lcd.print(noteNames[i]); // Tampilkan nama not
// Nyalakan LED yang sesuai
digitalWrite(ledPins[i], HIGH);
delay(500); // Durasi tiap not 500 ms
// Matikan LED setelah not selesai dimainkan
digitalWrite(ledPins[i], LOW);
noTone(BUZZER_PIN); // Matikan suara buzzer
delay(100); // Jeda antar not 100 ms
}
delay(1000); // Jeda 1 detik sebelum ulang tangga nada
}