#include <Wire.h> // Library untuk komunikasi I2C
#include <LiquidCrystal_I2C.h> // Library untuk LCD I2C
// Inisialisasi LCD I2C (alamat 0x27 atau 0x3F tergantung modul I2C)
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Pin yang digunakan
const int buttonUp = 2; // Tombol tambah
const int buttonDown = 3; // Tombol kurang
const int ledPin = 9; // Pin LED
int count = 0; // Variabel untuk menyimpan angka
const int targetValue = 10; // Target angka untuk menyalakan LED
void setup() {
lcd.init(); // Inisialisasi LCD
lcd.backlight
// Menyalakan backlight LCD
pinMode(buttonUp, INPUT_PULLUP); // Tombol tambah menggunakan pullup internal
pinMode(buttonDown, INPUT_PULLUP); // Tombol kurang menggunakan pullup internal
pinMode(ledPin, OUTPUT); // Atur pin LED sebagai output
lcd.setCursor(0, 0);
lcd.print("Angka: "); // Tampilkan teks awal di LCD
updateDisplay(); // Tampilkan angka awal
}
void loop() {
// Cek apakah tombol tambah ditekan
if (digitalRead(buttonUp) == LOW) {
delay(200); // Debouncing
count++; // Tambah angka
updateDisplay(); // Perbarui tampilan
}
// Cek apakah tombol kurang ditekan
if (digitalRead(buttonDown) == LOW) {
delay(200); // Debouncing
count--; // Kurangi angka
updateDisplay(); // Perbarui tampilan
}
// Jika angka memenuhi target, nyalakan LED
if (count == targetValue) {
digitalWrite(ledPin, HIGH); // Nyalakan LED
} else {
digitalWrite(ledPin, LOW); // Matikan LED
}
}
// Fungsi untuk memperbarui tampilan angka di LCD
void updateDisplay() {
lcd.setCursor(0, 1); // Pindah ke baris kedua
lcd.print(" "); // Hapus baris kedua
lcd.setCursor(0, 1); // Pindah ke awal baris kedua
lcd.print(count); // Tampilkan angka saat ini
}