#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi LCD I2C dengan alamat 0x27 dan ukuran 16x2
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
pinMode(A0, INPUT); // Pin analog sebagai input
pinMode(3, OUTPUT); // Pin 3 sebagai output PWM
Serial.begin(9600); // Inisialisasi komunikasi serial
lcd.init(); // Memulai LCD
lcd.backlight(); // Menghidupkan lampu latar LCD
lcd.clear(); // Membersihkan layar LCD
lcd.setCursor(0, 0); // Set posisi kursor ke baris 0 kolom 0
lcd.print("PWM Controller"); // Tampilkan teks pada LCD
}
void loop()
{
int a = analogRead(A0); // Membaca nilai analog dari A0
int pwm = map(a, 0, 1023, 0, 255); // Memetakan nilai analog ke rentang 0-255
int percent = map(a, 0, 1023, 0, 100); // Memetakan nilai analog ke rentang 0-100%
analogWrite(3, pwm); // Mengirim sinyal PWM ke pin 3
// Tampilkan nilai ke Serial Monitor
Serial.print("Value Analog = ");
Serial.println(a);
Serial.print("Value PWM = ");
Serial.println(pwm);
Serial.print("Percentage = ");
Serial.print(percent);
Serial.println("%");
// Tampilkan nilai ke LCD
lcd.setCursor(0, 1); // Pindah ke baris kedua
lcd.print("Persen: ");
lcd.print(percent);
lcd.print("% "); // Tambahkan spasi agar teks sebelumnya terhapus
delay(250); // Jeda 250 ms
}