// SUHU
#include "DHT.h"
#define DHTPIN 23
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// JARAK
const int TRIG_PIN = 13;
const int ECHO_PIN = 12;
#define SOUND_SPEED 0.034
#define CM_TO_INCH 0.3937601
long duration;
float distanceCm, distanceInch;
// KEKERUHAN
const int pinkekeruhan = 34;
// PH
#include <ESP32Servo.h>
const int pinph = 35;
Servo servo;
const int servoPin = 18;
#define LED 2
#define LED2 4
const int buzzer = 33;
void setup(){
Serial.begin(115200);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, OUTPUT);
pinMode(LED, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(buzzer, OUTPUT);
//Serial.println(F("DHTxx test"));
pinMode(pinkekeruhan, INPUT);
pinMode(pinph, INPUT);
servo.attach(servoPin);
dht.begin();
}
void loop(){
digitalWrite(buzzer, LOW);
digitalWrite(LED2, LOW);
// kekeruhan Air
int potvalue = analogRead(pinkekeruhan);
float kekeruhan = map(potvalue, 0, 4095, 1, 100);
Serial.print("Kekeruhan Air: ");
Serial.print(kekeruhan);
Serial.print(" | ");
// Suhu Air
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return; }
float hif = dht.computeHeatIndex(f, h);
float hic = dht.computeHeatIndex(t, h, false);
Serial.print(F("Suhu Air: "));
Serial.print(t);
Serial.print(F("°C "));
Serial.print(" | ");
//Ketinggian Air
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
duration = pulseIn(ECHO_PIN, HIGH);
distanceCm = duration * SOUND_SPEED/2;
distanceInch = distanceCm * CM_TO_INCH;
Serial.print("Tinggi Air: ");
Serial.print(distanceCm);
Serial.print("cm ");
Serial.print(" | ");
// Serial.print("Distance (inch) : ");
// Serial.println(distanceInch);
//PH AIR
int potValue = analogRead(pinph);
float ph = map(potValue, 0, 4095, 1, 15);
Serial.print("PH: ");
Serial.println(ph);
if ((ph < 4 || t > 8) && distanceCm > 250) {digitalWrite(buzzer, HIGH); //jika jarak 30 led1, hidup, karna air kolam sedikit
}else{ digitalWrite(buzzer, LOW);
}
if ( (t < 20 || t > 33) && kekeruhan > 50) {digitalWrite(LED2, HIGH); //jika jarak 30 led1, hidup, karna air kolam sedikit
}else{ digitalWrite(LED2, LOW);
}
delay(1000);
}