#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C dan ukuran LCD (sesuaikan dengan LCD yang Anda gunakan)
const int potPin = A0; // Pin analog untuk potensiometer
const int ledPinGreen = 3; // Pin untuk LED hijau
const int ledPinYellow = 4; // Pin untuk LED kuning
const int ledPinRed = 5; // Pin untuk LED merah
void setup() {
lcd.begin(16, 2); // Inisialisasi LCD
lcd.print("Potentiometer:");
pinMode(ledPinGreen, OUTPUT); // Mengatur pin LED hijau sebagai output
pinMode(ledPinYellow, OUTPUT); // Mengatur pin LED kuning sebagai output
pinMode(ledPinRed, OUTPUT); // Mengatur pin LED merah sebagai output
}
void loop() {
int potValue = analogRead(potPin); // Membaca nilai potensiometer
int brightness = map(potValue, 0, 1023, 0, 100); // Memetakan nilai potensiometer ke persentase
if (brightness <= 33) {
analogWrite(ledPinGreen, map(brightness, 0, 33, 0, 255)); // Mengatur kecerahan LED hijau sesuai persentase
analogWrite(ledPinYellow, 0); // Mematikan LED kuning
analogWrite(ledPinRed, 0); // Mematikan LED merah
} else if (brightness <= 66) {
analogWrite(ledPinGreen, 255); // Menyalakan LED hijau penuh
analogWrite(ledPinYellow, map(brightness, 34, 66, 0, 255)); // Mengatur kecerahan LED kuning sesuai persentase
analogWrite(ledPinRed, 0); // Mematikan LED merah
} else if (brightness <= 99) {
analogWrite(ledPinGreen, 255); // Menyalakan LED hijau penuh
analogWrite(ledPinYellow, 255); // Menyalakan LED kuning penuh
analogWrite(ledPinRed, map(brightness, 67, 99, 0, 255)); // Mengatur kecerahan LED merah sesuai persentase
} else {
// Ketiga LED berkedip jika potensiometer mencapai 100%
digitalWrite(ledPinGreen, HIGH);
digitalWrite(ledPinYellow, HIGH);
digitalWrite(ledPinRed, HIGH);
delay(500);
digitalWrite(ledPinGreen, LOW);
digitalWrite(ledPinYellow, LOW);
digitalWrite(ledPinRed, LOW);
delay(500);
}
lcd.setCursor(0, 1); // Pindah ke baris kedua LCD
lcd.print(" "); // Menghapus teks sebelumnya
lcd.setCursor(0, 1);
lcd.print("Brightness: " + String(brightness) + "%"); // Menampilkan persentase di LCD
delay(100); // Delay untuk stabilitas tampilan
}