//iot2 - 14 - Ardian Awaluddin
#define ledMerah 13
#define ledKuning 12
#define ledHijau 14
#define BLYNK_TEMPLATE_ID "TMPLGDbL_c25"
#define BLYNK_DEVICE_NAME "JARAKHCSR04"
#define BLYNK_AUTH_TOKEN "6D-J-OLXww3hHHCjMY4ljIyGkSlr5WFm"
#define ECHO_PIN 2
#define TRIG_PIN 4
char auth[]="6D-J-OLXww3hHHCjMY4ljIyGkSlr5WFm";
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#define BLYNK_PRINT Serial
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
void sendSensor(){
if (readDistanceCM()>=50 && readDistanceCM()<=350){
Serial.print("Jarak sensor dengan permukaan: ");
Serial.print(readDistanceCM());
Serial.println(" cm.");
Serial.print("Ketinggian air sungai: ");
Serial.print(350-readDistanceCM());
Serial.println(" cm.");
Serial.println("---");
Blynk.virtualWrite(V1, 350-readDistanceCM()); //mengirimkan data ke Virtual pin di Blynk Cloud
delay(100);
} else if(readDistanceCM()<50){
Serial.print("Air sudah tumpah gaes karena bacaan jarak ");
Serial.print(readDistanceCM());
Serial.println(" cm.");
Serial.println("---");
Blynk.virtualWrite(V1, 300); //mengirimkan data ke Virtual pin di Blynk Cloud
delay(100);
} else {
Serial.print("Jarak sensor dengan permukaan: ");
Serial.print(readDistanceCM());
Serial.println(" cm.");
Serial.print("Ketinggian air sungai: ");
Serial.print(0);
Serial.println(" cm.");
Serial.println("---");
Blynk.virtualWrite(V1, 0); //mengirimkan data ke Virtual pin di Blynk Cloud
delay(100);
}
}
void setup() {
// put your setup code here, to run once:
pinMode(ledMerah, OUTPUT);
pinMode(ledKuning, OUTPUT);
pinMode(ledHijau, OUTPUT);
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
Blynk.begin(auth, ssid, pass);
//dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
timer.setInterval(2000L, sendSensor);
}
float readDistanceCM(){
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
int duration = pulseIn(ECHO_PIN, HIGH);
return duration * 0.034 / 2;
}
void loop() {
// put your main code here, to run repeatedly:
if (readDistanceCM()>250) {
digitalWrite(ledHijau, HIGH);
digitalWrite(ledKuning, LOW);
digitalWrite(ledMerah, LOW);
} else if(readDistanceCM()<=250 && readDistanceCM()>=150){
digitalWrite(ledHijau, LOW);
digitalWrite(ledKuning, HIGH);
digitalWrite(ledMerah, LOW);
} else {
digitalWrite(ledHijau, LOW);
digitalWrite(ledKuning, LOW);
digitalWrite(ledMerah, HIGH);
}
Blynk.run();
timer.run();
}