#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Servo.h>
LiquidCrystal_I2C lcd(0x27, 16, 2); // Alamat I2C LCD
Servo myServo;
const int ldrPin = A0; // Pin untuk LDR
const int ledPin = 8; // Pin untuk LED
const int buttonPin = 2; // Pin untuk push button
int buttonState = 0; // Variabel untuk menyimpan status tombol
int ldrValue; // Variabel untuk menyimpan nilai LDR
void setup() {
lcd.begin(16, 2); // Mengatur LCD dengan 16 kolom dan 2 baris
lcd.backlight();
myServo.attach(9); // Pin servo
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);
lcd.setCursor(0, 0);
lcd.print("Sistem Kendali");
}
void loop() {
// Baca nilai dari LDR
ldrValue = analogRead(ldrPin);
// Tampilkan informasi di LCD
lcd.setCursor(0, 1);
lcd.print("LDR: ");
lcd.print(ldrValue);
lcd.print(" "); // Kosongkan sisa layar
// Kontrol Servo dan LED
if (ldrValue < 500) { // Misal ambang batas 500
myServo.write(90); // Servo bergerak ke posisi 90 derajat
digitalWrite(ledPin, HIGH); // LED menyala
} else {
myServo.write(0); // Servo kembali ke posisi 0 derajat
digitalWrite(ledPin, LOW); // LED mati
}
// Cek status tombol
buttonState = digitalRead(buttonPin);
if (buttonState == HIGH) {
myServo.write(0); // Jika tombol ditekan, servo kembali ke 0 derajat
digitalWrite(ledPin, LOW); // LED mati
}
delay(1000); // Delay 1 detik
}