esp32sensor — Xiao Esp32 S3 simulation

An interactive Xiao Esp32 S3 circuit simulation you can run free in your browser on Velxio, by whalemedianz.

Components

Sketch code

#define SIGNAL_BUTTON D1
#define RESET_BUTTON  D2

#define LED_RED   D4
#define LED_GREEN D5
#define LED_BLUE  D6

bool holstered = true;

int previousSignal = HIGH;
int previousReset  = HIGH;

unsigned long lastSignalPress = 0;
unsigned long lastResetPress  = 0;

const unsigned long DEBOUNCE_TIME = 50;


// ============================================================
// LED
// ============================================================

void setLED(bool red, bool green, bool blue) {

  digitalWrite(
    LED_RED,
    red ? HIGH : LOW
  );

  digitalWrite(
    LED_GREEN,
    green ? HIGH : LOW
  );

  digitalWrite(
    LED_BLUE,
    blue ? HIGH : LOW
  );
}


void ledOff() {
  setLED(false, false, false);
}


void ledRed() {
  setLED(true, false, false);
}


void ledGreen() {
  setLED(false, true, false);
}


void ledBlue() {
  setLED(false, false, true);
}


// ============================================================
// SIGNAL ACTIVATION
// ============================================================

void signalActivation() {

  Serial.println();
  Serial.println("[SIGNAL] ===========================");
  Serial.println("[SIGNAL] ACTIVATION BUTTON");
  Serial.println("[SIGNAL] EQUIPMENT REMOVED");
  Serial.println("[SIGNAL] TRANSMITTING");

  // Transmission indication
  ledRed();

  delay(150);

  // Event successfully sent
  ledGreen();

  Serial.println("[SIGNAL] EVENT SENT");

  delay(250);

  // Remain in unholstered state
  ledRed();

  Serial.println("[SIGNAL] STATE = UNHOLSTERED");
  Serial.println("[SIGNAL] ===========================");
}


// ============================================================
// RE-HOLSTER
// ============================================================

void reHolster() {

  if (holstered) {

    Serial.println(
      "[SYSTEM] ALREADY HOLSTERED"
    );

    return;
  }

  Serial.println();
  Serial.println("[SYSTEM] RE-HOLSTER COMMAND");
  Serial.println("[SYSTEM] EQUIPMENT RETURNED");

  holstered = true;

  ledGreen();

  Serial.println("[SIGNAL] STATE = HOLSTERED");
  Serial.println();
}


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

void setup() {

  Serial.begin(115200);

  delay(500);

  // Buttons
  pinMode(
    SIGNAL_BUTTON,
    INPUT_PULLUP
  );

  pinMode(
    RESET_BUTTON,
    INPUT_PULLUP
  );

  // RGB LED
  pinMode(
    LED_RED,
    OUTPUT
  );

  pinMode(
    LED_GREEN,
    OUTPUT
  );

  pinMode(
    LED_BLUE,
    OUTPUT
  );

  ledOff();


  // ----------------------------------------------------------
  // Startup indication
  // ----------------------------------------------------------

  ledBlue();

  delay(500);


  // ----------------------------------------------------------
  // Initial state
  // ----------------------------------------------------------

  holstered = true;

  ledGreen();

  previousSignal = HIGH;
  previousReset  = HIGH;


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

More projects by whalemedianz