#include <LiquidCrystal_I2C.h>
// Inisialisasi LCD I2C
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Pin definisi
const int potPin = A0; // Pin potensiometer
const int greenLed = 5; // Pin LED hijau
const int yellowLed = 4; // Pin LED kuning
const int redLed = 3; // Pin LED merah
void setup() {
// Inisialisasi pin sebagai output
pinMode(greenLed, OUTPUT);
pinMode(yellowLed, OUTPUT);
pinMode(redLed, OUTPUT);
// Inisialisasi LCD
lcd.begin(16,2);
lcd.init();
lcd.backlight();
}
void loop() {
int potValue = analogRead(potPin); // Membaca nilai potensiometer
int percentage = map(potValue, 0, 1023, 0, 100); // Mengubah nilai menjadi 0-100%
int a = analogRead(A0);
int pwm = map(a,0,1023,0,100);
analogWrite(3, pwm);
// Menyalakan LED berdasarkan persentase
if (percentage <= 33) {
digitalWrite(greenLed, HIGH);
digitalWrite(yellowLed, LOW);
digitalWrite(redLed, LOW);
} else if (percentage <= 66) {
digitalWrite(greenLed, HIGH);
digitalWrite(yellowLed, HIGH);
digitalWrite(redLed, LOW);
} else if (percentage < 100) {
digitalWrite(greenLed, HIGH);
digitalWrite(yellowLed, HIGH);
digitalWrite(redLed, HIGH);
} else {
// Ketika 100%, ketiga LED berkedip
digitalWrite(greenLed, HIGH);
digitalWrite(yellowLed, HIGH);
digitalWrite(redLed, HIGH);
delay(300); // Tunggu 300ms
digitalWrite(greenLed, LOW);
digitalWrite(yellowLed, LOW);
digitalWrite(redLed, LOW);
delay(300);
}
// Menampilkan nilai persentase pada LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(pwm);
lcd.print("%");
delay(250);
}