#define BLYNK_PRINT Serial
#define BLYNK_TEMPLATE_ID "TMPL61HijHOUI"
#define BLYNK_TEMPLATE_NAME "ABS System"
#define BLYNK_AUTH_TOKEN "KNg34anztxz8OxnLgrfju8P9zkLvOU47"
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
char ssid[] = "Wokwi-GUEST";
char pass[] = "";
BlynkTimer timer;
const int green1 = 25;
const int yellow1 = 26;
const int red1 = 27;
const int track1 = 34;
const int green2 = 12;
const int yellow2 = 13;
const int red2 = 14;
const int track2 = 35;
const int green3 = 21;
const int yellow3 = 22;
const int red3 = 23;
const int track3 = 32;
const int green4 = 17;
const int yellow4 = 18;
const int red4 = 19;
const int track4 = 33;
void setup() {
// initialize the LED signal pin as an output:
pinMode(green1, OUTPUT);
pinMode(yellow1, OUTPUT);
pinMode(red1, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(track1, INPUT_PULLDOWN);
// initialize the LED signal pin as an output:
pinMode(green2, OUTPUT);
pinMode(yellow2, OUTPUT);
pinMode(red2, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(track2, INPUT_PULLDOWN);
// initialize the LED signal pin as an output:
pinMode(green3, OUTPUT);
pinMode(yellow3, OUTPUT);
pinMode(red3, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(track3, INPUT_PULLDOWN);
// initialize the LED signal pin as an output:
pinMode(green4, OUTPUT);
pinMode(yellow4, OUTPUT);
pinMode(red4, OUTPUT);
// initialize the pushbutton pin as an input:
pinMode(track4, INPUT_PULLDOWN);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
timer.setInterval(1000L, sendData);
}
void loop()
{
Blynk.run();
timer.run();
}
void sendData()
{
String textStatus;
int trackstate1 = 0;
// read the state of the pushbutton value:
trackstate1 = digitalRead(track1);
int trackstate2 = 0;
// read the state of the pushbutton value:
trackstate2 = digitalRead(track2);
int trackstate3 = 0;
// read the state of the pushbutton value:
trackstate3 = digitalRead(track3);
int trackstate4 = 0;
// read the state of the pushbutton value:
trackstate4 = digitalRead(track4);
// Blok 101
if (trackstate1 == LOW)
{
digitalWrite(green1, HIGH);
digitalWrite(red1, LOW);
textStatus = "Clear";
Blynk.virtualWrite(V0, textStatus);
}
else if (trackstate1 == HIGH)
{
digitalWrite(red1, HIGH);
digitalWrite(green1, LOW);
textStatus = "Occupaid";
Blynk.virtualWrite(V0, textStatus);
}
// Blok 102
if (trackstate1 == HIGH && trackstate2 == LOW)
{
digitalWrite(yellow2, HIGH);
digitalWrite(red2, LOW);
digitalWrite(green2, LOW);
textStatus = "Clear";
Blynk.virtualWrite(V1, textStatus);
}
else if (trackstate1 == LOW && trackstate2 == HIGH)
{
digitalWrite(yellow2, LOW);
digitalWrite(red2, HIGH);
digitalWrite(green2, LOW);
textStatus = "Occupaid";
Blynk.virtualWrite(V1, textStatus);
}
else if (trackstate1 == HIGH && trackstate2 == HIGH)
{
digitalWrite(yellow2, LOW);
digitalWrite(red2, HIGH);
digitalWrite(green2, LOW);
textStatus = "Occupaid";
Blynk.virtualWrite(V1, textStatus);
}
else if (trackstate1 == LOW && trackstate2 == LOW)
{
digitalWrite(yellow2, LOW);
digitalWrite(red2, LOW);
digitalWrite(green2, HIGH);
textStatus = "Clear";
Blynk.virtualWrite(V1, textStatus);
}
// Blok 103
if (trackstate2 == HIGH && trackstate3 == LOW)
{
digitalWrite(yellow3, HIGH);
digitalWrite(red3, LOW);
digitalWrite(green3, LOW);
textStatus = "Clear";
Blynk.virtualWrite(V2, textStatus);
}
else if (trackstate2 == LOW && trackstate3 == HIGH)
{
digitalWrite(yellow3, LOW);
digitalWrite(red3, HIGH);
digitalWrite(green3, LOW);
textStatus = "Occupaid";
Blynk.virtualWrite(V2, textStatus);
}
else if (trackstate2 == HIGH && trackstate3 == HIGH)
{
digitalWrite(yellow3, LOW);
digitalWrite(red3, HIGH);
digitalWrite(green3, LOW);
textStatus = "Occupaid";
Blynk.virtualWrite(V2, textStatus);
}
else if (trackstate2 == LOW && trackstate3 == LOW)
{
digitalWrite(yellow3, LOW);
digitalWrite(red3, LOW);
digitalWrite(green3, HIGH);
textStatus = "Clear";
Blynk.virtualWrite(V2, textStatus);
}
// Blok 104
if (trackstate3 == HIGH && trackstate4 == LOW)
{
digitalWrite(yellow4, HIGH);
digitalWrite(red4, LOW);
digitalWrite(green4, LOW);
textStatus = "Clear";
Blynk.virtualWrite(V3, textStatus);
}
else if (trackstate3 == LOW && trackstate4 == HIGH)
{
digitalWrite(yellow4, LOW);
digitalWrite(red4, HIGH);
digitalWrite(green4, LOW);
textStatus = "Occupaid";
Blynk.virtualWrite(V3, textStatus);
}
else if (trackstate3 == HIGH && trackstate4 == HIGH)
{
digitalWrite(yellow4, LOW);
digitalWrite(red4, HIGH);
digitalWrite(green4, LOW);
textStatus = "Occupaid";
Blynk.virtualWrite(V3, textStatus);
}
else if (trackstate3 == LOW && trackstate4 == LOW)
{
digitalWrite(yellow4, LOW);
digitalWrite(red4, LOW);
digitalWrite(green4, HIGH);
textStatus = "Clear";
Blynk.virtualWrite(V3, textStatus);
}
}