Upload files to "Kode Program Arduino IDE"

This commit is contained in:
IpungNurhanianzah 2024-07-25 09:00:14 +07:00
commit b9001789f9
1 changed files with 109 additions and 0 deletions

View File

@ -0,0 +1,109 @@
#include <Servo.h>
#include <DHT.h>
Servo servo1;
int SensorHujan = 12;
int SensorLdr = 13;
int hujan, ldr;
int tutup = 0;
int buka = 90;
int RelayPin = 8; // Pin untuk mengontrol relay yang akan mengendalikan kipas
#define DHTPIN 7 // Pin untuk sensor DHT22
#define DHTTYPE DHT22 // Jenis sensor DHT22
DHT dht(DHTPIN, DHTTYPE);
bool atapTertutup = false; // Status atap, default terbuka
bool kipasMenyala = false; // Status kipas, default mati
void setup() {
Serial.begin(9600);
servo1.attach(4); // Menghubungkan servo ke pin 4
pinMode(SensorHujan, INPUT);
pinMode(SensorLdr, INPUT);
pinMode(RelayPin, OUTPUT); // Mengatur pin relay sebagai output
dht.begin();
}
void loop() {
hujan = digitalRead(SensorHujan);
ldr = digitalRead(SensorLdr);
Serial.print("Hujan: ");
Serial.print(hujan);
Serial.print(", LDR: ");
Serial.println(ldr);
// Kontrol atap
if (hujan == 0 && ldr == 1) {
tutupAtap();
} else if (hujan == 0 && ldr == 0) {
tutupAtap();
} else if (hujan == 1 && ldr == 1) {
tutupAtap();
} else if (hujan == 1 && ldr == 0) {
bukaAtap();
}
// Kontrol kipas
kontrolKipas();
delay(100);
}
void tutupAtap() {
if (!atapTertutup) {
servo1.write(tutup);
atapTertutup = true;
Serial.println("Atap tertutup");
}
}
void bukaAtap() {
if (atapTertutup) {
servo1.write(buka);
atapTertutup = false;
Serial.println("Atap terbuka");
}
}
void kontrolKipas() {
float suhu = bacaSuhu();
// Print temperatur sebelum cek status kipas
Serial.print("Suhu sekitar: ");
Serial.print(suhu);
Serial.println("°C");
if (atapTertutup) {
if (suhu <= 33.0 && !kipasMenyala) { // Suhu di bawah atau sama dengan 33°C dan kipas mati
digitalWrite(RelayPin, HIGH); // Menyalakan kipas
kipasMenyala = true; // Update status kipas
Serial.println("(suhu <= 33°C) Kipas nyala");
} else if (suhu >= 34.0 && kipasMenyala) { // Suhu sama dengan atau di atas 34°C dan kipas menyala
digitalWrite(RelayPin, LOW); // Mematikan kipas
kipasMenyala = false; // Update status kipas
Serial.println("(suhu >= 34°C) Kipas mati");
}
} else {
if (kipasMenyala) {
digitalWrite(RelayPin, LOW); // Mematikan kipas saat atap terbuka
kipasMenyala = false; // Update status kipas
Serial.println("Kipas mati (atap terbuka)");
}
}
}
float bacaSuhu() {
float suhu = dht.readTemperature();
if (isnan(suhu)) {
Serial.println("Gagal membaca suhu dari sensor DHT!");
return 0.0;
} else {
return suhu;
}
}