#include <LiquidCrystal_I2C.h> // Library untuk komunikasi dengan LCD melalui I2C
LiquidCrystal_I2C lcd(0x27, 16, 2); // Membuat objek LCD dengan alamat I2C 0x27, 16 kolom, dan 2 baris
// Deklarasi variabel untuk menyimpan nilai hasil pembacaan analog
int pot;
void setup() {
// Mengatur pin 33 sebagai input untuk membaca nilai analog
pinMode(33, INPUT);
// Inisialisasi LCD
lcd.init(); // Memulai komunikasi dengan LCD
lcd.backlight(); // Menyalakan lampu latar pada LCD
// Memulai komunikasi Serial dengan baud rate 9600
Serial.begin(9600);
}
void loop() {
// Membaca nilai analog dari pin 33 dan menyimpan hasilnya ke variabel 'pot'
pot = analogRead(33);
int potPersen = map(pot, 0, 4095, 0, 100); // Konversi nilai potensiometer ke persentase (0-100%)
// Menampilkan nilai potensiometer (0-4095) di baris pertama LCD
lcd.setCursor(0, 0); // Mengatur kursor ke kolom 0, baris 0
lcd.print("Pot: ");
lcd.print(pot); // Menampilkan nilai potensiometer
lcd.print(" "); // Membersihkan sisa karakter sebelumnya
// Menampilkan nilai persentase potensiometer di baris kedua LCD
lcd.setCursor(0, 1); // Mengatur kursor ke kolom 0, baris 1
lcd.print("Pot(%): ");
lcd.print(potPersen); // Menampilkan nilai potensiometer dalam persen
lcd.print("% "); // Membersihkan sisa karakter sebelumnya
// Mengirim nilai potensiometer ke Serial Monitor untuk debugging
Serial.print("Analog: ");
Serial.println(pot);
Serial.print("Persentase: ");
Serial.println(potPersen);
// Memberikan jeda selama 1 detik sebelum pembacaan berikutnya
delay(1000);
}
/*
Penjelasan Program:
1. Fungsi `map()` digunakan untuk mengubah nilai rentang potensiometer (0-4095) menjadi persentase (0-100%).
2. Fungsi `lcd.setCursor()` mengatur posisi kursor pada LCD.
3. Fungsi `lcd.print()` menampilkan teks atau nilai pada LCD.
4. Nilai potensiometer ditampilkan dalam dua format: nilai asli (0-4095) dan persentase (0-100%).
5. Fungsi `delay(1000)` memberikan jeda 1 detik untuk pembacaan dan tampilan berikutnya.
Catatan Pengembangan:
1. Jika Anda ingin tampilan lebih responsif, gunakan fungsi `millis()` sebagai pengganti `delay()`.
2. Tambahkan validasi untuk menangani nilai-nilai yang tidak sesuai, jika diperlukan.
*/