lightbar — Arduino Nano simulation

An interactive Arduino Nano circuit simulation you can run free in your browser on Velxio, by whalemedianz.

Components

Sketch code

#define BUTTON_1 2
#define BUTTON_2 3
#define BUTTON_3 4
#define BUTTON_4 12

#define LED_1 5
#define LED_2 6
#define LED_3 7
#define LED_4 8


// =========================
// STATES
// =========================

// Individual functions
bool takedownState = false;
bool leftAlleyState = false;
bool rightAlleyState = false;

// Flasher:
// 0 = OFF
// 1 = SLOW WIG-WAG
// 2 = FAST LIGHTBAR
byte flasherState = 0;


// =========================
// BUTTON STATES
// =========================

bool lastButton1;
bool lastButton2;
bool lastButton3;
bool lastButton4;


// =========================
// FLASHER
// =========================

unsigned long lastFlash = 0;
byte flashStep = 0;


// =========================
// SETUP
// =========================

void setup() {

  Serial.begin(9600);

  pinMode(BUTTON_1, INPUT_PULLUP);
  pinMode(BUTTON_2, INPUT_PULLUP);
  pinMode(BUTTON_3, INPUT_PULLUP);
  pinMode(BUTTON_4, INPUT_PULLUP);

  pinMode(LED_1, OUTPUT);
  pinMode(LED_2, OUTPUT);
  pinMode(LED_3, OUTPUT);
  pinMode(LED_4, OUTPUT);


  // =========================
  // FORCE EVERYTHING OFF
  // =========================

  takedownState = false;
  leftAlleyState = false;
  rightAlleyState = false;
  flasherState = 0;

  digitalWrite(LED_1, LOW);
  digitalWrite(LED_2, LOW);
  digitalWrite(LED_3, LOW);
  digitalWrite(LED_4, LOW);


  // =========================
  // READ INITIAL BUTTON STATES
  // =========================

  lastButton1 = digitalRead(BUTTON_1);
  lastButton2 = digitalRead(BUTTON_2);
  lastButton3 = digitalRead(BUTTON_3);
  lastButton4 = digitalRead(BUTTON_4);

  Serial.println("CONTROLLER READY");
}


// =========================
// LOOP
// =========================

void loop() {

  bool button1 = digitalRead(BUTTON_1);
  bool button2 = digitalRead(BUTTON_2);
  bool button3 = digitalRead(BUTTON_3);
  bool button4 = digitalRead(BUTTON_4);


  // =========================
  // BUTTON 1 - TAKEDOWNS
  // =========================

  if (lastButton1 == LOW && button1 == HIGH) {

    takedownState = !takedownState;

    Serial.println(
      takedownState ? "TAKEDOWNS ON" : "TAKEDOWNS OFF"
    );

    delay(50);
  }


  // =========================
  // BUTTON 2 - LEFT ALLEY
  // =========================

  if (lastButton2 == LOW && button2 == HIGH) {

    leftAlleyState = !leftAlleyState;

    Serial.println(
      leftAlleyState ? "LEFT ALLEY ON" : "LEFT ALLEY OFF"
    );

    delay(50);
  }


  // =========================
  // BUTTON 3 - RIGHT ALLEY
  // =========================

  if (lastButton3 == LOW && button3 == HIGH) {

    rightAlleyState = !rightAlleyState;

    Serial.println(
      rightAlleyState ? "RIGHT ALLEY ON" : "RIGHT ALLEY OFF"
    );

    delay(50);
  }


  // =========================
  // BUTTON 4 - FLASHER
  // =========================

  if (lastButton4 == LOW && button4 == HIGH) {

    // Cycle:
    // OFF → SLOW → FAST → OFF

    flasherState++;

    if (flasherState > 2) {
      flasherState = 0;
    }


    // 

More projects by whalemedianz