#include <Servo.h>
const int ldrPin = A0; // Pin untuk sensor LDR
const int servoPin = 9; // Pin untuk servo motor
const int ledPin = 13; // Pin untuk LED indikator
Servo servo; // Objek servo
int threshold = 500; // Ambang batas cahaya
int servoOpenAngle = 90; // Sudut terbuka servo
int servoClosedAngle = 0; // Sudut tertutup servo
bool isRoofOpen = false; // Status atap terbuka/tutup
unsigned long lastActionTime = 0; // Waktu terakhir tindakan
void setup() {
pinMode(ledPin, OUTPUT);
servo.attach(servoPin);
servo.write(servoClosedAngle); // Tutup atap saat awalnya
Serial.begin(9600);
}
void loop() {
int ldrValue = analogRead(ldrPin);
unsigned long currentTime = millis();
if ((ldrValue < threshold && isRoofOpen) || (currentTime >= 28800000 && currentTime < 54000000)) { // 8:00 - 15:00 dalam milidetik
if (!isRoofOpen) {
openRoof();
}
} else {
if (isRoofOpen) {
closeRoof();
}
}
}
void openRoof() {
servo.write(servoOpenAngle);
digitalWrite(ledPin, HIGH); // Nyalakan LED indikator
isRoofOpen = true;
Serial.println("Atap Terbuka");
lastActionTime = millis();
}
void closeRoof() {
servo.write(servoClosedAngle);
digitalWrite(ledPin, LOW); // Matikan LED indikator
isRoofOpen = false;
Serial.println("Atap Tertutup");
lastActionTime = millis();
}