#include <LiquidCrystal.h>
#include <HoldButton.h>
const int ledPins[] = {2, 3, 4, 5}; // Pin LED
HoldButton Up(6, 500); // Pin Tombol Up
HoldButton Down(7, 500); // Pin Tombol Down
LiquidCrystal lcd(A5, A4, A3, A2, A1, A0); // Inisialisasi LCD dengan alamat I2C
int ledCount = 1; // Jumlah LED yang menyala
void setup() {
// Inisialisasi pin LED sebagai OUTPUT
for (int i = 0; i < 4; i++) {
pinMode(ledPins[i], OUTPUT);
}
// Inisialisasi pin tombol sebagai INPUT_PULLUP
// Inisialisasi LCD
lcd.begin(16, 2);
lcd.print("Led ON : ");
lcd.setCursor(8, 0);
lcd.print(ledCount);
lcd.setCursor(0, 1);
lcd.print("Led OFF: ");
lcd.setCursor(8,1);
lcd.print(4 - ledCount);
// Menghidupkan LED pertama pada kondisi awal
digitalWrite(ledPins[0], HIGH);
}
void loop() {
// Membaca status tombol Up
if (Up.read()) {
incrementLED();
delay(200); // Debounce
}
// Membaca status tombol Down
if (Down.read()) {
decrementLED();
delay(200); // Debounce
}
}
void incrementLED() {
if (ledCount < 5) {
digitalWrite(ledPins[ledCount], HIGH); // Menyalakan LED
ledCount++;
// Update tampilan LCD
lcd.setCursor(8, 0);
lcd.print(ledCount);
lcd.setCursor(8, 1);
lcd.print(4 - ledCount);
}
if (ledCount == 5) {
ledCount = 0;
lcd.setCursor(8, 0);
lcd.print(ledCount);
lcd.setCursor(9, 0);
lcd.print(" ");
lcd.setCursor(8,1);
lcd.print(4 - ledCount);
lcd.setCursor(9, 1);
lcd.print(" ");
digitalWrite(ledPins[0], LOW);
digitalWrite(ledPins[1], LOW);
digitalWrite(ledPins[2], LOW);
digitalWrite(ledPins[3], LOW);
}
}
void decrementLED() {
if (ledCount > -1) {
ledCount--;
digitalWrite(ledPins[ledCount], LOW); // Mematikan LED
// Update tampilan LCD
lcd.setCursor(8, 0);
lcd.print(ledCount);
lcd.setCursor(8, 1);
lcd.print(4 - ledCount);
}
if (ledCount == -1) {
ledCount = 4;
lcd.setCursor(8, 0);
lcd.print(ledCount);
lcd.setCursor(9, 0);
lcd.print(" ");
lcd.setCursor(8, 1);
lcd.print(4 - ledCount);
lcd.setCursor(9, 1);
lcd.print(" ");
digitalWrite(ledPins[0], HIGH);
digitalWrite(ledPins[1], HIGH);
digitalWrite(ledPins[2], HIGH);
digitalWrite(ledPins[3], HIGH);
}
}