#define BLYNK_TEMPLATE_ID "TMPL6B-Rb318r"
#define BLYNK_TEMPLATE_NAME "sistem irigation"
#define BLYNK_AUTH_TOKEN "2MFF2N0IWLJGErfiByLGxlZa-3i3aVEp"
#define BLYNK_PRINT Serial
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <ESP32Servo.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST"; //nama hotspot yang digunakan
char pass[] = ""; //password hotspot yang digunakan
Servo myservo; // membuat variabel servo untuk dikendalikan
int pos = 0; // deklarasi variabel untuk posisi sudut
int ledpin1 = 12;
int ledpin2 = 14;
int ledpin3 = 25;
int buzzerpin = 26;
int trigpin = 23;
int echopin = 22;
int potPin = 13; // deklarasi pin 2 untuk input potensio
long timer;
int jarak;
int val;
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
Serial.println("Hello, ESP32!");
Blynk.begin(auth, ssid, pass);
myservo.attach(17); //deklarasi servo pada pin 17
pinMode(ledpin1, OUTPUT);
pinMode(ledpin2, OUTPUT);
pinMode(ledpin3, OUTPUT);
pinMode(buzzerpin, OUTPUT);
pinMode(trigpin, OUTPUT);
pinMode(echopin, INPUT);
}
void loop() {
// put your main code here, to run repeatedly:
Blynk.run();
timer;
digitalWrite(trigpin, LOW);
delayMicroseconds(2);
digitalWrite(trigpin, HIGH);
delayMicroseconds(10);
digitalWrite(trigpin, LOW);
timer = pulseIn(echopin, HIGH);
jarak = timer*0.034/2;
delay(1000);
Blynk.virtualWrite(V0, jarak);
// int angle = analogRead(pot);
// angle = map(angle,0 ,1023, 0, 180);
// servo1.write(angle);
if (jarak > 250){
Serial.println("Aman");
digitalWrite(ledpin1, HIGH);
digitalWrite(ledpin2, LOW);
digitalWrite(ledpin3, LOW);
noTone(buzzerpin);
myservo.write(0);
Serial.print("Jarak = ");
Serial.print(jarak);
Serial.print(" cm");
Serial.println();
} else
if (jarak > 50 && jarak < 250){
Serial.println("Waspada");
digitalWrite(ledpin2, HIGH);
digitalWrite(ledpin3, LOW);
digitalWrite(ledpin1, LOW);
noTone(buzzerpin);
myservo.write(90);
Serial.print("Jarak = ");
Serial.print(jarak);
Serial.print(" cm");
Serial.println();
} else
if (jarak < 50) {
Serial.println("Awas");
digitalWrite(ledpin3, HIGH);
digitalWrite(ledpin2, LOW);
digitalWrite(ledpin1, LOW);
tone(buzzerpin, 150);
Serial.print("Jarak = ");
Serial.print(jarak);
Serial.print(" cm");
Serial.println();
for(pos = 0; pos < 180; pos+= 1) // perulangan untuk posisi 0 sampai 180 derajat
{ // step setiap 1 derajat
myservo.write(pos); // memerintahkan servo ke posisi derajat sesuai nilai variabel pos
delay(15); // menunggu 15 milideti
}
//membaca sinyal analog input di A0
val = digitalRead(13);
//konversi hasil analog (0-1023) menjadi hasil sudut (0-180)
val = map(val, 0, 1023, 0, 180);
//set posisi sudut motor servo
myservo.write(val);
delay(15);
}
}
// this speeds up the simulation