#include <Arduino.h>
#include <ESP32Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Inisialisasi LCD I2C dengan alamat 0x27 (sesuaikan dengan alamat LCD Anda)
LiquidCrystal_I2C lcd(0x27, 16, 2);
// Definisikan pin potensiometer
const int potPin = 34; // Ubah pin sesuai dengan yang Anda gunakan
const int relayPin = 2;
int ledPin = 12;
int servoPin = 32;
int angle = 0;
Servo myservo;
void setup() {
// Mulai komunikasi serial untuk debugging
Serial.begin(115200);
// Inisialisasi LCD
lcd.init();
lcd.backlight();
// Atur pin potensiometer sebagai input
pinMode(potPin, INPUT);
pinMode(relayPin, OUTPUT);
myservo.attach(servoPin);
pinMode(ledPin, OUTPUT);
}
void loop() {
// Baca nilai analog dari potensiometer
int potValue = analogRead(potPin);
// // Konversi nilai analog ke persentase (0-100%)
// float percentage = (potValue / 4095.0) * 100;
float angle = (potValue / 4095.0) * 180;
float percentage = (angle / 180) * 100;
myservo.write(angle);
// int brightness = map(potValue, 0, 4095, 0, 255);
int brightness = (potValue / 4095.0) * 255;
analogWrite(ledPin, brightness);
// Tampilkan nilai potensiometer dalam bentuk persentase di LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Potensiometer:");
lcd.setCursor(0, 1);
lcd.print(potValue);
// lcd.print("Angle: ");
// lcd.print(angle);
// lcd.setCursor(0, 1);
// lcd.print("Persentase: ");
// lcd.print(percentage, 1); // Menampilkan persentase dengan 1 digit desimal
// // Tampilkan juga nilai persentase di Serial Monitor
Serial.print("Nilai Potensiometer: ");
Serial.println(potValue);
// Serial.print("Angle: ");
// Serial.println(angle);
// Serial.print("Persentase: ");
// Serial.println(percentage, 1); // Menampilkan persentase dengan 1 digit desimal
if(percentage > 60){
digitalWrite(relayPin, HIGH);
}
else{
digitalWrite(relayPin, LOW);
}
// Tunda sejenak sebelum membaca ulang
delay(1000); // Tunda 1 detik
}