#include <Servo.h>
#include "DHT.h"
#define DHTPIN 13
#define DHTTYPE DHT22
#define merah 5
#define kuning 6
#define hijau 7
#define alarm 4
DHT dht(DHTPIN, DHTTYPE);
Servo myservo1;
Servo myservo2;
void setup() {
Serial.begin(9600);
Serial.println("Penyiram Hidroponik Otomatis");
dht.begin();
pinMode(merah, OUTPUT);
pinMode(kuning, OUTPUT);
pinMode(hijau, OUTPUT);
pinMode(alarm, OUTPUT);
myservo1.attach(9);
myservo2.attach(3);
}
void loop() {
// Wait a few seconds between measurements.
delay(2000);
// Reading temperature or humidity takes about 250 milliseconds!
// Sensor readings may also be up to 2 seconds 'old' (its a very slow sensor)
float humidity = dht.readHumidity();
// Read temperature as Celsius (the default)
float temperature = dht.readTemperature();
// Check if any reads failed and exit early (to try again).
if (isnan(humidity) || isnan(temperature)) {
Serial.println("Sensor Gagal Berfungsi");
return;
}
Serial.print("Humidity: ");
Serial.print(humidity);
Serial.print("%");
Serial.print(" Temperature: ");
Serial.print(temperature);
Serial.print("°C");
Serial.println();
if(temperature >=30 && humidity >=80){
Serial.print("Kondisi Tanaman Normal");
Serial.println();
digitalWrite(merah, LOW);
digitalWrite(kuning, LOW);
digitalWrite(hijau, HIGH);
myservo1.write(0);
myservo2.write(0);
noTone(alarm);
}
if(temperature >=30 && temperature <=35){
Serial.print("Kondisi Suhu Panas");
Serial.println();
digitalWrite(merah, LOW);
digitalWrite(kuning, HIGH);
digitalWrite(hijau, LOW);
myservo1.write(0);
myservo2.write(0);
noTone(alarm);
}
if(humidity >=50 || humidity <=80){
Serial.print("Kodisi Kelembapan Kering");
Serial.println();
digitalWrite(merah, LOW);
digitalWrite(kuning, HIGH);
digitalWrite(hijau, LOW);
myservo1.write(0);
myservo2.write(180);
noTone(alarm);
}
if(temperature >=35 || humidity <=50){
Serial.print("Kodisi Darurat");
Serial.println();
digitalWrite(merah, HIGH);
digitalWrite(kuning, LOW);
digitalWrite(hijau, LOW);
myservo1.write(180);
myservo2.write(180);
tone(alarm, 1000);
}
}