#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Pin tombol
const int buttonAdd = 2; // Tombol tambah
const int buttonSub = 3; // Tombol kurang
// Variabel tombol
int lastAddState = HIGH;
int lastSubState = HIGH;
int count = 0;
void setup() {
pinMode(buttonAdd, INPUT_PULLUP);
pinMode(buttonSub, INPUT_PULLUP);
lcd.init();
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Smart Counter");
delay(1000);
lcd.clear();
}
void loop() {
int addState = digitalRead(buttonAdd);
int subState = digitalRead(buttonSub);
// ============================
// TOMBOL TAMBAH
// ============================
if (lastAddState == HIGH && addState == LOW) {
count++;
updateLCD();
delay(200); // debouncing
}
// ============================
// TOMBOL KOMURANG
// ============================
if (lastSubState == HIGH && subState == LOW) {
if (count > 0) { // agar tidak minus
count--;
}
updateLCD();
delay(200);
}
lastAddState = addState;
lastSubState = subState;
}
// =====================================
// FUNGSI UNTUK UPDATE TAMPILAN
// =====================================
void updateLCD() {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Jumlah: ");
lcd.print(count);
lcd.setCursor(0, 1);
if (count >= 10) {
lcd.print("Ruangan Penuh!");
} else {
lcd.print("Ruangan Tersedia");
}
}
Tombol Tambah
Tombol Kurang