#include <LiquidCrystal_I2C.h>
#include <Wire.h>
const int pinTombol = 2; // Pin untuk tombol
const int pinLEDR = 9; // Pin untuk LED RGB (Merah)
const int pinLEDG = 10; // Pin untuk LED RGB (Hijau)
const int pinLEDB = 11; // Pin untuk LED RGB (Biru)
const int buzzerPin = 8; // Pin untuk buzzer
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C LCD: 0x27, 16 kolom, 2 baris
const uint8_t heartIcon[8] = { // Karakter khusus love heart untuk LCD
B00000,
B01010,
B11111,
B11111,
B01110,
B00100,
B00000,
B00000
};
void ledRGB(int red, int green, int blue);
void matikanLED();
int lemparDaduCinta();
void tampilkanHasil(int hasil);
void setup() {
Serial.begin(9600);
pinMode(pinTombol, INPUT);
pinMode(pinLEDR, OUTPUT);
pinMode(pinLEDG, OUTPUT);
pinMode(pinLEDB, OUTPUT);
pinMode(buzzerPin, OUTPUT);
lcd.begin(16, 2); // Inisialisasi LCD
lcd.createChar(0, heartIcon); // Membuat karakter khusus love heart
lcd.clear();
lcd.print("Hallo Sayang");
lcd.setCursor(0, 1);
lcd.print("Bingung Mau Ngapain?");
Serial.println("Hallo Sayang Bingung Mau Ngapain?");
Serial.println("Tekan tombol untuk melempar dadu cinta.");
}
void loop() {
if (digitalRead(pinTombol) == HIGH) {
int hasil = lemparDaduCinta();
tampilkanHasil(hasil);
delay(20); // Tunggu sebentar sebelum memungkinkan input lagi
}
}
int lemparDaduCinta() {
analogWrite(pinLEDR, 255); // Hidupkan warna merah pada LED RGB
tone(buzzerPin, 523); // Mainkan nada C5 pada buzzer
delay(20); // LED dan buzzer berbunyi sejenak untuk efek dramatis
noTone(buzzerPin); // Berhenti memainkan nada pada buzzer
analogWrite(pinLEDR, 0); // Matikan warna merah pada LED RGB
int hasilDadu = random(1, 7); // Menghasilkan angka acak antara 1 dan 6
return hasilDadu;
}
void tampilkanHasil(int hasil) {
lcd.clear();
lcd.print("Hasil Dadu Cinta:");
lcd.setCursor(0, 1);
lcd.write(0); // Menampilkan karakter love heart
lcd.print(" ");
lcd.print(hasil);
Serial.print("Hasil Dadu Cinta: ");
Serial.println(hasil);
matikanLED(); // Matikan LED RGB
switch (hasil) {
case 1:
lcd.setCursor(0, 1);
lcd.print("Sedekah atau kasih makan kucing?");
ledRGB(255, 0, 0); // Warna merah untuk hasil 1
Serial.println("Sedekah atau kasih makan kucing?");
break;
case 2:
lcd.setCursor(0, 1);
lcd.print("Coding Or Melukis?");
ledRGB(0, 255, 0); // Warna hijau untuk hasil 2
Serial.println("Coding Or Melukis?");
break;
case 3:
lcd.setCursor(0, 1);
lcd.print("Kiss hugg Mika!");
ledRGB(0, 0, 255); // Warna biru untuk hasil 3
Serial.println("Kiss hugg Mika!!");
break;
case 4:
lcd.setCursor(0, 1);
lcd.print("Ajak mika main");
ledRGB(255, 255, 0); // Warna kuning untuk hasil 4
Serial.println("Ajak mika main");
break;
case 5:
lcd.setCursor(0, 1);
lcd.print("Study date!");
ledRGB(75, 0, 130); // Warna ungu untuk hasil 5 (warna RGB untuk ungu)
Serial.println("Study date!");
break;
case 6:
lcd.setCursor(0, 1);
lcd.print("Beli Eskrim");
ledRGB(255, 165, 0); // Warna oranye untuk hasil 6
Serial.println("Beli Eskrim");
break;
}
delay(20); // Tahan tampilan hasil sejenak sebelum kembali ke loop
}
void ledRGB(int red, int green, int blue) {
analogWrite(pinLEDR, red);
analogWrite(pinLEDG, green);
analogWrite(pinLEDB, blue);
}
void matikanLED() {
analogWrite(pinLEDR, 0);
analogWrite(pinLEDG, 0);
analogWrite(pinLEDB, 0);
}