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