#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL6shRsKrXj"
#define BLYNK_TEMPLATE_NAME "Trafic Light"
#define BLYNK_AUTH_TOKEN "II9TM9lHmOzXWjyt1Z23oJ9R9SfjqJsI"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char auth[] = BLYNK_AUTH_TOKEN;
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
#define hijau1 23
#define kuning 22
#define merah1 21
#define hijau2 19
#define merah2 18
#define hijau3 5
#define merah3 4
int data;
int a;
BLYNK_WRITE(V0) {
data = param.asInt();
if (data == 1) {
a = 1;
Blynk.virtualWrite(V2, "Lampu Hijau Dari Arah Kairagi");
// Matikan semua lampu merah dan hijau
digitalWrite(kuning, HIGH);
digitalWrite(hijau1, LOW);
digitalWrite(hijau2, LOW);
digitalWrite(hijau3, LOW);
digitalWrite(merah1, LOW);
digitalWrite(merah2, LOW);
digitalWrite(merah3, LOW);
delay(3000);
// Lampu hijau arah Kairagi nyala, lampu merah lainnya menyala
digitalWrite(kuning, LOW);
digitalWrite(hijau1, HIGH);
digitalWrite(merah2, HIGH);
digitalWrite(merah3, HIGH);
} else {
a = 0;
}
}
void setup() {
// Setup pin sebagai output
pinMode(hijau1, OUTPUT);
pinMode(hijau2, OUTPUT);
pinMode(hijau3, OUTPUT);
pinMode(merah1, OUTPUT);
pinMode(merah2, OUTPUT);
pinMode(merah3, OUTPUT);
pinMode(kuning, OUTPUT);
// Mulai koneksi Blynk
Blynk.begin(auth, ssid, pass);
}
void loop() {
Blynk.run();
if (a == 1) {
Blynk.virtualWrite(V1, "Ambulance Silahkan Lewat");
} else {
Blynk.virtualWrite(V1, "Trafic Light Normal");
// Lampu kuning menyala, semua hijau mati
digitalWrite(kuning, HIGH);
digitalWrite(hijau1, LOW);
digitalWrite(hijau2, LOW);
digitalWrite(hijau3, LOW);
digitalWrite(merah1, LOW);
digitalWrite(merah2, LOW);
digitalWrite(merah3, LOW);
delay(2000);
// Lampu hijau dari Perkamil, merah lainnya nyala
Blynk.virtualWrite(V2, "Lampu Hijau Dari Perkamil");
digitalWrite(kuning, LOW);
digitalWrite(merah1, HIGH);
digitalWrite(hijau1, LOW);
digitalWrite(merah2, LOW);
digitalWrite(hijau2, HIGH);
digitalWrite(merah3, HIGH);
digitalWrite(hijau3, LOW);
delay(5000);
// Lampu kuning menyala sementara transisi
digitalWrite(kuning, HIGH);
digitalWrite(hijau1, LOW);
digitalWrite(hijau2, LOW);
digitalWrite(hijau3, LOW);
digitalWrite(merah1, LOW);
digitalWrite(merah2, LOW);
digitalWrite(merah3, LOW);
delay(2000);
// Lampu hijau dari arah pusat kota, merah lainnya nyala
Blynk.virtualWrite(V2, "Lampu Hijau Dari Arah Pusat Kota");
digitalWrite(kuning, LOW);
digitalWrite(merah1, HIGH);
digitalWrite(hijau1, LOW);
digitalWrite(merah2, HIGH);
digitalWrite(hijau2, LOW);
digitalWrite(merah3, LOW);
digitalWrite(hijau3, HIGH);
delay(5000);
// Transisi, lampu kuning nyala sementara
digitalWrite(kuning, HIGH);
digitalWrite(hijau1, LOW);
digitalWrite(hijau2, LOW);
digitalWrite(hijau3, LOW);
digitalWrite(merah1, LOW);
digitalWrite(merah2, LOW);
digitalWrite(merah3, LOW);
delay(2000);
// Lampu hijau dari arah Kairagi, merah lainnya nyala
Blynk.virtualWrite(V2, "Lampu Hijau Dari Arah Kairagi");
digitalWrite(kuning, LOW);
digitalWrite(merah1, LOW);
digitalWrite(hijau1, HIGH);
digitalWrite(merah2, HIGH);
digitalWrite(hijau2, LOW);
digitalWrite(merah3, HIGH);
digitalWrite(hijau3, LOW);
delay(5000);
}
}