#include <LiquidCrystal.h>
// Inisialisasi pin LCD
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// Definisi pin
const int coinButton = 7;
const int coffeeButton = 6;
const int sugarButton = 13;
const int coffeeRelay = 10;
const int sugarRelay = 9;
const int waterRelay = 8;
// Variabel untuk koin
int coins = 0;
void setup() {
// Inisialisasi pin tombol
pinMode(coinButton, INPUT_PULLUP);
pinMode(coffeeButton, INPUT_PULLUP);
pinMode(sugarButton, INPUT_PULLUP);
// Inisialisasi pin relay
pinMode(coffeeRelay, OUTPUT);
pinMode(sugarRelay, OUTPUT);
pinMode(waterRelay, OUTPUT);
// Matikan relay di awal
digitalWrite(coffeeRelay, LOW);
digitalWrite(sugarRelay, LOW);
digitalWrite(waterRelay, LOW);
// Inisialisasi LCD
lcd.begin(16, 2);
lcd.setCursor(0, 0);
lcd.print("Selamat Datang!");
lcd.setCursor(0, 1);
lcd.print("Masukkan 4 coin");
}
void loop() {
// Deteksi coin input
if (digitalRead(coinButton) == LOW) {
delay(200); // Debounce
coins++;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Koin: ");
lcd.print(coins);
delay(500);
}
// Jika koin cukup
if (coins >= 4) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Pilih Minuman");
// Deteksi tombol kopi hitam
if (digitalRead(coffeeButton) == LOW) {
delay(200); // Debounce
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Membuat Kopi...");
digitalWrite(coffeeRelay, HIGH);
delay(3000); // Kopi keluar 3 detik
digitalWrite(coffeeRelay, LOW);
// Air panas
lcd.setCursor(0, 1);
lcd.print("Menambahkan Air");
digitalWrite(waterRelay, HIGH);
delay(3000); // Air panas 3 detik
digitalWrite(waterRelay, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Kopi Siap!");
lcd.setCursor(0, 1);
lcd.print("Tambah gula?");
delay(3000); // Tampilkan pesan selama 3 detik
}
// Deteksi tombol gula setelah kopi disiapkan
if (digitalRead(sugarButton) == LOW) {
delay(200); // Debounce
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Menambah Gula...");
digitalWrite(sugarRelay, HIGH);
delay(2000); // Gula keluar 2 detik
digitalWrite(sugarRelay, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Kopi Manis Siap!");
delay(2000);
}
}
}