Upload files to "Kode Program Arduino IDE"
This commit is contained in:
commit
b9001789f9
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue