#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi objek LCD
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Pin definisi untuk LED Bar Graph
const int ledPins[] = {2, 3, 4, 5, 6, 7, 8, 9};
const int numLeds = 8;
// Pin definisi untuk potensiometer
const int potPin = A0;
// Variabel
int potValue = 0;
int ledLevel = 0;
void setup() {
// Inisialisasi LCD
lcd.begin(16, 2);
lcd.backlight();
lcd.print("LED Bar Graph");
// Inisialisasi pin LED sebagai output
for (int i = 0; i < numLeds; i++) {
pinMode(ledPins[i], OUTPUT);
}
// Inisialisasi komunikasi serial
Serial.begin(9600);
}
void loop() {
// Membaca nilai potensiometer
potValue = analogRead(potPin);
// Konversi nilai potensiometer ke tingkat LED (0-8)
ledLevel = map(potValue, 0, 1023, 0, numLeds);
// Tampilkan nilai di LCD
lcd.setCursor(0, 1);
lcd.print("Value: ");
lcd.print(potValue);
lcd.print(" "); // Clear extra characters
// Menyalakan LED Bar Graph sesuai nilai potensiometer
for (int i = 0; i < numLeds; i++) {
if (i < ledLevel) {
digitalWrite(ledPins[i], HIGH);
} else {
digitalWrite(ledPins[i], LOW);
}
}
// Debug di Serial Monitor
Serial.print("Pot Value: ");
Serial.print(potValue);
Serial.print(" | LED Level: ");
Serial.println(ledLevel);
delay(100);
}