#include <DHT.h>
#include <Stepper.h>
#define DHTPIN 7
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
const int stepsPerRevolution = 100;
const int totalRevolution = 10;
const int totalSteps = stepsPerRevolution * totalRevolution;
Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);
float previousTemperature = 0; // Untuk menyimpan suhu sebelumnya
float previousHumidity = 0; // Untuk menyimpan kelembapan sebelumnya
void setup() {
Serial.begin(9600);
myStepper.setSpeed(150);
dht.begin();
}
void loop() {
//membaca kelembapan udara
float humi = dht.readHumidity();
//membaca temperatur dengan satuan Celcius (default)
float temp = dht.readTemperature();
if (isnan(humi) || isnan(temp)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
// Menampilkan data suhu di Serial Monitor
Serial.print("Suhu: ");
Serial.print(temp);
Serial.println(" *C");
Serial.println("Kelembapan: ");
Serial.print(humi);
Serial.println(" %");
// Menggerakkan motor stepper jika ada perubahan suhu
if (temp != previousTemperature && humi != previousHumidity) {
if(temp < 24 && humi > 80){
Serial.println("Hujan terdeteksi - Menggerakkan motor.");
for (int i = 0; i < 10; i++) { // Motor berputar 10 kali
myStepper.step(stepsPerRevolution); // Motor bergerak 100 langkah
}
} else {
Serial.println("Tidak hujan, jemuran keluar - Menggerakkan motor.");
for (int i = 0; i < 10; i++) { // Motor berputar 10 kali
myStepper.step(-stepsPerRevolution); // Motor bergerak 100 langkah
}
}
previousTemperature = temp; // Mengupdate suhu sebelumnya
previousHumidity = humi;
} else {
Serial.println("Tidak ada perubahan suhu - Motor tidak bergerak.");
}
delay(2000); // Menunggu 2 detik sebelum pembacaan berikutnya
}