#include <DHT.h>
#define DHTPIN 2 // Pin untuk sensor DHT22
#define DHTTYPE DHT22 // Tipe sensor DHT22
#define TRIG_PIN 9 // Pin Trig untuk HC-SR04
#define ECHO_PIN 10 // Pin Echo untuk HC-SR04
#define RELAY_PIN 8 // Pin Relay
#define TURBIDITY_PIN A0 // Pin untuk Potentiometer yang mensimulasikan Turbidity sensor
DHT dht(DHTPIN, DHTTYPE);
void setup() {
Serial.begin(9600);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
pinMode(RELAY_PIN, OUTPUT);
dht.begin();
}
void loop() {
// Membaca level air menggunakan HC-SR04
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
long duration = pulseIn(ECHO_PIN, HIGH);
int distance = duration * 0.034 / 2; // Menghitung jarak dalam cm
// Membaca data sensor DHT22
float humidity = dht.readHumidity();
float temperature = dht.readTemperature();
// Membaca data potensiometer yang mensimulasikan turbidity sensor
int turbidityValue = analogRead(TURBIDITY_PIN);
// Logika pengendalian pompa berdasarkan level air
if (distance > 20) { // Jika jarak lebih dari 20 cm, tandon kosong
digitalWrite(RELAY_PIN, HIGH); // Hidupkan pompa
} else if (distance < 10) { // Jika jarak kurang dari 10 cm, tandon penuh
digitalWrite(RELAY_PIN, LOW); // Matikan pompa
}
// Mencetak nilai sensor ke Serial Monitor
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" cm");
Serial.print("Suhu: ");
Serial.print(temperature);
Serial.println(" *C");
Serial.print("Kekeruhan: ");
Serial.print(humidity);
Serial.println(" %");
Serial.print("Turbidity: ");
Serial.println(turbidityValue);
delay(2000); // Jeda 2 detik sebelum pembacaan berikutnya
}