#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL6VCXnxvqh"
#define BLYNK_TEMPLATE_NAME "Pak Alfarid"
#define BLYNK_AUTH_TOKEN "UWzITc1KJKqH3UfeYcoGvrBkZULb0Ijx"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <ESP32Servo.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
#define LED1 13 // Merah
#define LED2 12 // Kuning
#define LED3 14 // Hijau
#define LED4 27 // Orange
#define LED5 26 // Purple
int SW_State_M = 0;
int SW_State_K = 0;
int SW_State_H = 0;
int SW_State_O = 0; // State for orange LED
int SW_State_P = 0; // State for purple LED
#define TRIG_PIN 17 // Pin untuk trig sensor HC-SR04
#define ECHO_PIN 16 // Pin untuk echo sensor HC-SR04
#define SERVO_PIN 19 // Pin untuk servo motor
Servo myServo; // Membuat objek servo
long duration;
int distance;
BLYNK_WRITE (V0)
{
SW_State_M = param.asInt();
if (SW_State_M == 1)
{
digitalWrite(LED1, HIGH);
Serial.println("RED ON");
Blynk.virtualWrite(V1, HIGH);
}
else
{
digitalWrite(LED1, LOW);
Serial.println("RED OFF");
Blynk.virtualWrite(V1, LOW);
}
}
BLYNK_WRITE (V2)
{
SW_State_K = param.asInt();
if (SW_State_K == 1)
{
digitalWrite(LED2, HIGH);
Serial.println("YELLOW ON");
Blynk.virtualWrite(V3, HIGH);
}
else
{
digitalWrite(LED2, LOW);
Serial.println("YELLOW OFF");
Blynk.virtualWrite(V3, LOW);
}
}
BLYNK_WRITE (V4)
{
SW_State_H = param.asInt();
if (SW_State_H == 1)
{
digitalWrite(LED3, HIGH);
Serial.println("GREEN ON");
Blynk.virtualWrite(V5, HIGH);
}
else
{
digitalWrite(LED3, LOW);
Serial.println("GREEN OFF");
Blynk.virtualWrite(V5, LOW);
}
}
BLYNK_WRITE (V6)
{
SW_State_O = param.asInt();
if (SW_State_O == 1)
{
digitalWrite(LED4, HIGH);
Serial.println("ORANGE ON");
Blynk.virtualWrite(V7, HIGH);
}
else
{
digitalWrite(LED4, LOW);
Serial.println("ORANGE OFF");
Blynk.virtualWrite(V7, LOW);
}
}
BLYNK_WRITE (V8)
{
SW_State_P = param.asInt();
if (SW_State_P == 1)
{
digitalWrite(LED5, HIGH);
Serial.println("PURPLE ON");
Blynk.virtualWrite(V9, HIGH);
}
else
{
digitalWrite(LED5, LOW);
Serial.println("PURPLE OFF");
Blynk.virtualWrite(V9, LOW);
}
}
void setup()
{
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode(LED5, OUTPUT);
pinMode(TRIG_PIN, OUTPUT); // Pin untuk trig HC-SR04
pinMode(ECHO_PIN, INPUT); // Pin untuk echo HC-SR04
myServo.attach(SERVO_PIN); // Menyambungkan servo ke pin
// Set servo ke posisi awal (0 derajat)
myServo.write(0);
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
}
void loop()
{
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
// Menghitung durasi waktu dan jarak
duration = pulseIn(ECHO_PIN, HIGH);
distance = duration * 0.0344 / 2; // Menghitung jarak dalam cm
// Menampilkan jarak di serial monitor
Serial.print("Jarak: ");
Serial.print(distance);
Serial.println(" cm");
// Jika jarak kurang dari 10 cm, gerakkan servo ke 90 derajat
if (distance < 10)
{
myServo.write(90); // Gerakkan servo ke 90 derajat
Serial.println("Distance < 10 cm, servo moved to 90 degrees");
}
else
{
myServo.write(0); // Kembalikan servo ke posisi 0 derajat
Serial.println("Distance > 10 cm, servo moved to 0 degrees");
}
delay(1000);
Blynk.run();
timer.run();
}