ledtem — ESP32 simulation

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

Components

Sketch code

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>
#include <DHT_U.h>

// Pin Definitions
#define DHT_DATA_PIN 4
#define DHT_TYPE DHT22 // Define DHT type
#define EXT_LED_PIN 2
#define OLED_SDA 14
#define OLED_SCL 15
#define SCREEN_W 128
#define SCREEN_H 64
#define OLED_ADDR 0x3C

bool ledSwitchState = false;
TwoWire myWire = TwoWire(0);
Adafruit_SSD1306 display(SCREEN_W, SCREEN_H, &myWire, -1);
DHT_Unified dht(DHT_DATA_PIN, DHT_TYPE);

void setup() {
  Serial.begin(115200);
  // External LED initialization
  pinMode(EXT_LED_PIN, OUTPUT);
  digitalWrite(EXT_LED_PIN, LOW);

  // OLED I2C initialization
  myWire.begin(OLED_SDA, OLED_SCL);
  if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR)) {
    Serial.println("OLED initialization failed. Check DATA/CLK/3V3/GND connections.");
    while (1);
  }
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(0, 0);
  display.println("System Ready");
  display.display();
  delay(1000);

  // Initialize DHT sensor
  dht.begin();
}

void loop() {
  // LED toggles every second
  ledSwitchState = !ledSwitchState;
  digitalWrite(EXT_LED_PIN, ledSwitchState);

  // Read DHT22 sensor data
  sensors_event_t event;
  dht.temperature().getEvent(&event);
  float temperature = event.temperature;

  dht.humidity().getEvent(&event);
  float humidity = event.relative_humidity;

  bool sensorStatus = !isnan(temperature) && !isnan(humidity);

  // Print data to Serial Monitor
  if (sensorStatus) {
    Serial.print("Temperature: ");
    Serial.print(temperature);
    Serial.print(" C | Humidity: ");
    Serial.print(humidity);
    Serial.print(" %RH | LED: ");
    Serial.println(ledSwitchState ? "ON" : "OFF");
  } else {
    Serial.println("Failed to read DHT22 sensor. Check VCC/DATA/GND connections.");
  }

  // Refresh OLED screen
  display.clearDisplay();
  display.setCursor(0, 0);
  if (sensorStatus) {
    display.print("Temp: ");
    display.print(temperature);
    display.println(" C");
    display.print("Humi: ");
    display.print(humidity);
    display.println(" %RH");
  } else {
    display.println("DHT22 ERROR");
  }
  display.print("LED: ");
  display.println(ledSwitchState ? "ON" : "OFF");
  display.display();

  delay(1000);
}

More projects by aliceee