#include "pitches.h"//Mendeklarasikan library pitches.h yang berisi definisi dari not-not musik dan frekuensi yang sesuai.
#define SPEAKER_PIN 8//Menentukan pin yang terhubung ke speaker.
const uint8_t buttonPins[] = { 12, 11, 10, 9, 7, 6, 5, 4 };//
const int buttonTones[] = {//Mendefinisikan array buttonTones yang berisi nilai not-not musik yang sesuai dengan setiap tombol.
NOTE_C4, NOTE_D4, NOTE_E4, NOTE_F4,
NOTE_G4, NOTE_A4, NOTE_B4, NOTE_C5
};
const int numTones = sizeof(buttonPins) / sizeof(buttonPins[0]);//Menghitung jumlah elemen dalam array buttonPins untuk mengukur jumlah tombol yang digunakan.
void setup() {//Mengatur pin-pin tombol sebagai input dengan resistor pull-up internal.
for (uint8_t i = 0; i < numTones; i++) {
pinMode(buttonPins[i], INPUT_PULLUP);
}
pinMode(SPEAKER_PIN, OUTPUT);
}
void loop() {
int pitch = 0;
for (uint8_t i = 0; i < numTones; i++) {
if (digitalRead(buttonPins[i]) == LOW) {
pitch = buttonTones[i];
}
}
if (pitch) {
tone(SPEAKER_PIN, pitch);
} else {
noTone(SPEAKER_PIN);
}
}//Memindai setiap tombol, dan jika tombol tertentu ditekan (logika LOW), maka pitch diatur sesuai dengan not musik yang telah ditentukan.
//Menggunakan fungsi tone() untuk menghasilkan suara pada speaker dengan frekuensi yang sesuai dengan pitch.
//Jika tidak ada tombol yang ditekan, fungsi noTone() digunakan untuk mematikan suara pada speaker.