#include <DHT.h>
#include <RTClib.h>
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
RTC_DS3231 rtc;
// Simulasi 7 AC dengan LED di pin 3 sampai 9
const int acPins[7] = {3, 4, 5, 6, 7, 8, 9};
void setup() {
Serial.begin(9600);
dht.begin();
if (!rtc.begin()) {
Serial.println("RTC tidak ditemukan!");
while (1);
}
for (int i = 0; i < 7; i++) {
pinMode(acPins[i], OUTPUT);
digitalWrite(acPins[i], LOW); // Semua AC mati awalnya
}
}
void loop() {
DateTime now = rtc.now();
float temperature = dht.readTemperature();
Serial.print("Waktu: ");
Serial.print(now.hour());
Serial.print(":");
Serial.print(now.minute());
Serial.print(" | Suhu: ");
Serial.println(temperature);
int baseAC = 0;
// Penjadwalan waktu AC
if (now.hour() >= 6 && now.hour() < 18) {
baseAC = 4; // 4 AC di siang hari
} else {
baseAC = 3; // 3 AC di malam hari
}
// Tambah AC jika suhu > 21°C
if (temperature > 21.0) {
baseAC += 1;
if (temperature > 23.0) {
baseAC += 1; // Tambah 1 lagi jika suhu tinggi sekali
}
}
// Batasi maksimal 7 AC
if (baseAC > 7) baseAC = 7;
// Nyalakan sesuai kebutuhan
for (int i = 0; i < 7; i++) {
if (i < baseAC) {
digitalWrite(acPins[i], HIGH);
} else {
digitalWrite(acPins[i], LOW);
}
}
delay(5000); // Delay 5 detik untuk pembacaan berkala
}