#include <SD.h>
#include <LCD-I2C.h>
#include <Keypad.h>
#include <TMRpcm.h>
#define SD_ChipSelectPin 10 // Pin CS untuk kartu SD
#define LED1_PIN A1
#define LED2_PIN A2
#define LED3_PIN A3
#define LED4_PIN 11
#define LED5_PIN 12
#define LED6_PIN A6
#define LED7_PIN A7
#define BUTTON_PIN A0 // Pin untuk tombol push button
LCD_I2C lcd(0x27, 16, 2); // Alamat default dari sebagian besar modul PCF8574
const byte ROWS = 4; // Jumlah baris
const byte COLS = 4; // Jumlah kolom
// Definisikan pin baris dan kolom
byte rowPins[ROWS] = {1, 2, 3, 4}; // Pin untuk baris
byte colPins[COLS] = {5, 6, 7, 8}; // Pin untuk kolom
// Layout keypad
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
// Membuat objek keypad
Keypad keypad = Keypad(makeKeymap(keys), rowPins, colPins, ROWS, COLS);
TMRpcm audio; // Objek TMRpcm untuk memainkan audio
char selectedKey = ' '; // Variabel untuk menyimpan tombol yang dipilih
void setup() {
// Initialize LCD
lcd.begin();
lcd.display();
lcd.backlight();
// Initialize SD card
if (!SD.begin(SD_ChipSelectPin)) {
lcd.setCursor(0, 0);
lcd.print("Masukkan Kartu SD!");
lcd.setCursor(0, 1);
lcd.print("Check SD Card");
} else {
displayCentered(0, "Ready");
displayCentered(1, "RE.AUDIO");
delay(5000); // Delay 5 detik sebelum melanjutkan
}
// Initialize TMRpcm
audio.speakerPin = 9; // Pin speaker (sesuaikan dengan pin yang Anda gunakan)
// Inisialisasi LED pins
pinMode(LED1_PIN, OUTPUT);
pinMode(LED2_PIN, OUTPUT);
pinMode(LED3_PIN, OUTPUT);
pinMode(LED4_PIN, OUTPUT);
pinMode(LED5_PIN, OUTPUT);
pinMode(LED6_PIN, OUTPUT);
pinMode(LED7_PIN, OUTPUT);
// Inisialisasi tombol push button pin
pinMode(BUTTON_PIN, INPUT_PULLUP); // Gunakan pull-up internal
}
void loop() {
char key = keypad.getKey(); // Mendapatkan tombol yang ditekan
if (key) {
selectedKey = key; // Simpan tombol yang dipilih
// Tampilkan pesan di baris pertama di tengah
switch (selectedKey) {
case '1':
displayCentered(0, "Play Audio 1");
break;
case '2':
displayCentered(0, "Play Audio 2");
break;
case '3':
displayCentered(0, "Play Audio 3");
break;
case '4':
displayCentered(0, "Play Audio 4");
break;
case '5':
displayCentered(0, "Play Audio 5");
break;
case '6':
displayCentered(0, "Play Audio 6");
break;
case '7':
displayCentered(0, "Play Audio 7");
break;
default:
displayCentered(0, ""); // Kosongkan baris pertama
break;
}
}
// Matikan semua LED terlebih dahulu
digitalWrite(LED1_PIN, LOW);
digitalWrite(LED2_PIN, LOW);
digitalWrite(LED3_PIN, LOW);
digitalWrite(LED4_PIN, LOW);
digitalWrite(LED5_PIN, LOW);
digitalWrite(LED6_PIN, LOW);
digitalWrite(LED7_PIN, LOW);
// Cek status tombol push button
if (digitalRead(BUTTON_PIN) == LOW) { // Tombol ditekan
// Nyalakan LED berdasarkan tombol yang dipilih dan mainkan audio
switch (selectedKey) {
case '1':
digitalWrite(LED1_PIN, HIGH);
audio.play("suara1.wav"); // Ganti dengan nama file audio yang sesuai
break;
case '2':
digitalWrite(LED2_PIN, HIGH);
audio.play("suara2.wav"); // Ganti dengan nama file audio yang sesuai
break;
case '3':
digitalWrite(LED3_PIN, HIGH);
audio.play("suara3.wav"); // Ganti dengan nama file audio yang sesuai
break;
case '4':
digitalWrite(LED4_PIN, HIGH);
audio.play("suara4.wav"); // Ganti dengan nama file audio yang sesuai
break;
case '5':
digitalWrite(LED5_PIN, HIGH);
audio.play("suara5.wav"); // Ganti dengan nama file audio yang sesuai
break;
case '6':
digitalWrite(LED6_PIN, HIGH);
audio.play("suara6.wav"); // Ganti dengan nama file audio yang sesuai
break;
case '7':
digitalWrite(LED7_PIN, HIGH);
audio.play("suara7.wav"); // Ganti dengan nama file audio yang sesuai
break;
default:
break;
}
}
}
void displayCentered(int row, String text) {
int len = text.length();
int pos = (16 - len) / 2; // Hitung posisi awal
lcd.setCursor(pos, row);
lcd.print(text);
}