#include <WiFi.h>
#include <Servo.h>
#include <BlynkSimpleEsp32.h>
#define BLYNK_TEMPLATE_ID "TMPL6lV0gBKUG"
#define BLYNK_TEMPLATE_NAME "sistem pengaiaran hidroponik"
#define BLYNK_AUTH_TOKEN "WcrhtNOVJ1-xvjNcbUH_0qZooBklY30p"
char auth[] = "WcrhtNOVJ1-xvjNcbUH_0qZooBklY30p";
char ssid[] = "Wokwi-GUEST"; //nama hotspot yang digunakan
char pass[] = ""; //password hotspot yang digunakan
#define triggerPin 4
#define echoPin 2
#define LED1 25
#define LED2 26
#define LED3 27
long durasi;
int jarak, ldr, cahaya;
Servo cahaya_1;
bool status = false;
BLYNK_WRITE(V4)
{
int pinValue = param.asInt();
if (pinValue == 1 ) {
status = true;
Serial.println("Nutrisi di Tambah");
}
else {
status = false;
}
}
void setup() {
Blynk.begin(auth, ssid, pass);
{
Serial.print(".");
delay(500);
}
pinMode(triggerPin, OUTPUT);
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(echoPin, INPUT);
Serial.begin(9600);
cahaya_1.attach(25);
}
void loop() {
Blynk.run();
digitalWrite(triggerPin, LOW);
delayMicroseconds(2);
digitalWrite(triggerPin, HIGH);
delayMicroseconds(10);
digitalWrite(triggerPin, LOW);
durasi = pulseIn(echoPin, HIGH);
jarak = durasi * 0.034 / 2;
Blynk.virtualWrite(V3, jarak);
ldr = map(analogRead(34), 0, 4096, 100, 0);
cahaya = map(analogRead(35), 0, 4096, 0, 100);
if (status == true) {
cahaya_1.write(0);
Serial.println("Nutrisi di Buka");
} else {
if (ldr < 30 || cahaya > 40) {
cahaya_1.write(180);
Serial.println("Nutrisi di Tutup");
}
}
if (jarak > 80) {
Serial.println("Air lebih dari 8cm");
digitalWrite(LED1, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED3, LOW);
Blynk.virtualWrite(V0, HIGH);
Blynk.virtualWrite(V1, LOW);
Blynk.virtualWrite(V2, LOW);
} else if (jarak <= 80 && jarak >= 40) {
Serial.println("Air berada diantara 4cm hingga 8cm");
digitalWrite(LED2, HIGH);
digitalWrite(LED1, LOW);
digitalWrite(LED3, LOW);
Blynk.virtualWrite(V1, HIGH);
Blynk.virtualWrite(V0, LOW);
Blynk.virtualWrite(V2, LOW);
} else if (jarak < 40) {
Serial.println("Air kurang dari 4cm");
digitalWrite(LED3, HIGH);
digitalWrite(LED2, LOW);
digitalWrite(LED1, LOW);
Blynk.virtualWrite(V2, HIGH);
Blynk.virtualWrite(V1, LOW);
Blynk.virtualWrite(V0, LOW);
}
}