XIAO ESP32S3 Sense — SSD1306 — Xiao Esp32S3 Sense simulation

An interactive Xiao Esp32S3 Sense circuit simulation you can run free in your browser on Velxio, by buduojun.

Components

Sketch code

/**
 * XIAO ESP32S3 Sense — SSD1306 128×64 OLED (I2C, 4-pin)
 *
 * 接线 (4-pin OLED → XIAO ESP32S3 Sense):
 *   OLED VCC  → 3V3 (3.3V)
 *   OLED GND  → GND
 *   OLED SCL  → D5 (GPIO7)
 *   OLED SDA  → D4 (GPIO6)
 *
 * 依赖库 (通过 Arduino Library Manager 安装):
 *   - Adafruit GFX Library
 *   - Adafruit SSD1306
 *
 * 注意:
 *   - XIAO ESP32S3 的默认 I2C 引脚不是 21/22,必须显式指定
 *   - 如果使用其他引脚,修改 Wire.begin(sda, scl) 的参数即可
 */

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

// ─── 显示屏参数 ───
#define SCREEN_WIDTH   128
#define SCREEN_HEIGHT  64
#define OLED_RESET     -1               // 无复位引脚(4-pin OLED)

// ─── I2C 引脚定义(XIAO ESP32S3 Sense) ───
#define PIN_SDA        6                // D4
#define PIN_SCL        7                // D5

// ─── I2C 地址 ───
#define OLED_ADDR      0x3C             // SSD1306 默认 I2C 地址

// ─── 创建显示对象 ───
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

// ─── 计数器 ───
static int counter = 0;

// ============================================================
// setup()
// ============================================================
void setup() {
  Serial.begin(115200);
  delay(500);   // 等待串口就绪

  Serial.println("=== XIAO ESP32S3 Sense + SSD1306 OLED ===");

  // ── 初始化 I2C(必须显式指定引脚) ──
  Wire.begin(PIN_SDA, PIN_SCL);

  // ── 初始化 SSD1306 ──
  // SSD1306_SWITCHCAPVCC : 内部 3.3V 升压(仅需 3.3V 供电,最常用)
  // SSD1306_EXTERNALVCC  : 外部供电(需额外 7~9V 电源)
  if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR)) {
    Serial.println("[ERROR] SSD1306 未找到!请检查接线和 I2C 地址。");
    while (true) delay(10);   // 卡住,等待复位
  }
  Serial.println("[OK] SSD1306 初始化成功");

  // ── 初始显示 ──
  display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(8, 8);
  display.println("Hello");
  display.setCursor(8, 28);
  display.println("XIAO!");
  display.display();
  delay(1500);

  Serial.println("[READY] OLED 就绪,开始运行");
}

// ============================================================
// loop()
// ============================================================
void loop() {
  counter++;

  // ── 清屏并显示静态文本 ──
  display.clearDisplay();
  display.setTextSize(2);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(8, 4);
  display.println("Hello");
  display.setCursor(8, 24);
  display.println("XIAO!");

  // ── 显示计数器 ──
  display.setTextSize(1);
  display.setCursor(8, 50);
  display.print("Count: ");
  display.print(counter);

  // ── 刷新显示 ──
  display.display();

  // ── 串口输出 ──
  Serial.print("Frame: ");
  Serial.println(counter);

  delay(1000);
}

More projects by buduojun