HACK — ESP32 simulation

An interactive ESP32 circuit simulation you can run free in your browser on Velxio, by adarshkarkera0.

Components

Sketch code

// =====================================================
// ADAPTIVE TRAFFIC CONTROL - VELXIO SIMULATION
// 4 CAMERAS + 4 LEDs
//
// COMMAND:
// 1 -> CAM1 traffic -> LED1 OFF
// 2 -> CAM2 traffic -> LED2 OFF
// 3 -> CAM3 traffic -> LED3 OFF
// 4 -> CAM4 traffic -> LED4 OFF
// ENTER / no command -> all LEDs OFF
// =====================================================

// ---------------- CAMERA INPUT PINS ----------------

#define CAM1_PIN 34
#define CAM2_PIN 35
#define CAM3_PIN 32
#define CAM4_PIN 33

// ---------------- LED OUTPUT PINS ------------------

#define LED1_PIN 18
#define LED2_PIN 19
#define LED3_PIN 21
#define LED4_PIN 22

// Selected traffic direction
int selectedDirection = 0;


// =====================================================
// SET ALL LEDs OFF
// =====================================================

void allLEDsOff()
{
  digitalWrite(LED1_PIN, HIGH);
  digitalWrite(LED2_PIN, HIGH);
  digitalWrite(LED3_PIN, HIGH);
  digitalWrite(LED4_PIN, HIGH);
}


// =====================================================
// SHOW CAMERA STATUS
// =====================================================

void showCameraStatus()
{
  Serial.println();
  Serial.println("================================");
  Serial.println("        CAMERA STATUS");
  Serial.println("================================");

  Serial.print("CAM 1 : ");
  Serial.println(digitalRead(CAM1_PIN) ? "HIGH" : "LOW");

  Serial.print("CAM 2 : ");
  Serial.println(digitalRead(CAM2_PIN) ? "HIGH" : "LOW");

  Serial.print("CAM 3 : ");
  Serial.println(digitalRead(CAM3_PIN) ? "HIGH" : "LOW");

  Serial.print("CAM 4 : ");
  Serial.println(digitalRead(CAM4_PIN) ? "HIGH" : "LOW");

  Serial.println("================================");
}


// =====================================================
// SHOW LED STATUS
// =====================================================

void showLEDStatus()
{
  Serial.println();
  Serial.println("================================");
  Serial.println("          LED OUTPUT");
  Serial.println("================================");

  Serial.print("LED 1 : ");
  Serial.println(digitalRead(LED1_PIN) ? "ON" : "OFF");

  Serial.print("LED 2 : ");
  Serial.println(digitalRead(LED2_PIN) ? "ON" : "OFF");

  Serial.print("LED 3 : ");
  Serial.println(digitalRead(LED3_PIN) ? "ON" : "OFF");

  Serial.print("LED 4 : ");
  Serial.println(digitalRead(LED4_PIN) ? "ON" : "OFF");

  Serial.println("================================");
}


// =====================================================
// PROCESS COMMAND
// =====================================================

void processCommand(char command)
{
  // First turn all LEDs OFF
  allLEDsOff();

  if (command == '1')
  {
    selectedDirection = 1;

    Serial.println();
    Serial.println(">>> CAMERA 1 SELECTED");
    Serial.println(">>> TRAFFIC DETECTED IN DIRECTION 1");

    // LED1 remains OFF
  }

  else if (command == '2')
  {
    selectedDirection = 2;

    Serial.println();
    Serial.println(">>> CAMERA 2 SEL