#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const int potPin = A0; // Pin untuk potensiometer
const int redPin = 2; // Pin untuk LED merah
const int yelPin = 3; // Pin untuk LED kuning
const int grePin = 4; // Pin untuk LED hijau
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C LCD: 0x27, 16 kolom, 2 baris
void setup() {
pinMode(redPin, OUTPUT);
pinMode(grePin, OUTPUT);
pinMode(yelPin, OUTPUT);
// Inisialisasi LCD
lcd.begin(16, 2);
lcd.print("Persentase:");
}
void loop() {
int potValue = analogRead(potPin); // Membaca nilai potensiometer
int brightness = map(potValue, 0, 1023, 0, 100); // Mapping nilai ke persentase
analogWrite(redPin, map(brightness, 0, 100, 0, 255)); // Mengatur kecerahan lampu LED
// Menyala berdasarkan nilai persentase
if (brightness <= 33) {
digitalWrite(grePin, HIGH);
digitalWrite(yelPin, LOW);
digitalWrite(redPin, LOW);
} else if (brightness >= 34 && brightness <= 66) {
digitalWrite(grePin, HIGH);
digitalWrite(yelPin, HIGH);
digitalWrite(redPin, LOW);
} else if (brightness >= 67 && brightness <= 99) {
digitalWrite(grePin, HIGH);
digitalWrite(yelPin, HIGH);
digitalWrite(redPin, HIGH);
} else {
// Kedipkan ketiga LED
digitalWrite(grePin, HIGH);
digitalWrite(yelPin, HIGH);
digitalWrite(redPin, HIGH);
delay(500);
digitalWrite(grePin, LOW);
digitalWrite(yelPin, LOW);
digitalWrite(redPin, LOW);
delay(500);
}
// Menampilkan persentase di LCD
lcd.setCursor(0, 1);
lcd.print(" "); // Menghapus nilai sebelumnya
lcd.setCursor(0, 1);
lcd.print(brightness);
lcd.print("%");
delay(100); // Memberikan sedikit keterlambatan agar tampilan stabil
}