esp32s3测试ssd1306
·
为了简单了解一个屏幕,那么我们需要使用arduino去点亮,测试,这样可以更加容易地集成到其他平台上去

#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define I2C_SDA 21
#define I2C_SCL 18
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
// 常见地址 0x3C,可根据扫描器结果改
#define OLED_ADDR 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
void setup() {
Serial.begin(115200);
while (!Serial) {}
// 使用自定义 I2C 引脚
Wire.begin(I2C_SDA, I2C_SCL);
if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR)) {
Serial.println("SSD1306/SSD1315 初始化失败,请检查接线和地址!");
for (;;);
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("ESP32 OLED Test");
display.println("I2C on SDA=19, SCL=18");
display.display();
}
void loop() {
}
另外一个案例,WiFi打开,手机连接的时候,wifi屏幕上会显示连接个数。
#include <WiFi.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// -------- I2C 引脚配置 --------
#define I2C_SDA 21 // 你接的 SDA
#define I2C_SCL 18 // 你接的 SCL(如果不用 18,请同步改这里和接线)
// -------- OLED 参数 --------
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_ADDR 0x3C
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
// -------- WiFi AP 配置 --------
const char *AP_SSID = "ESP32S3_OLED_AP";
const char *AP_PASS = "12345678";
// 当前连接客户端数量(由事件更新)
volatile int g_clientCount = 0;
// 注意:这里用的是“新枚举” ARDUINO_EVENT_WIFI_...
void WiFiEvent(WiFiEvent_t event) {
Serial.print("WiFiEvent: ");
Serial.println((int)event);
if (event == ARDUINO_EVENT_WIFI_AP_STACONNECTED) {
g_clientCount++;
Serial.printf("Client connected, now: %d\n", g_clientCount);
} else if (event == ARDUINO_EVENT_WIFI_AP_STADISCONNECTED) {
if (g_clientCount > 0) g_clientCount--;
Serial.printf("Client disconnected, now: %d\n", g_clientCount);
}
}
void showInfoOnOLED() {
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
IPAddress apIP = WiFi.softAPIP();
int clientCount = g_clientCount; // 读一次局部拷贝
display.print("SSID: ");
display.println(AP_SSID);
display.print("AP IP: ");
display.println(apIP.toString());
display.print("Clients: ");
display.println(clientCount);
display.println("----------------");
display.println("Connect to AP");
display.println("Then see count");
display.display();
}
void setup() {
Serial.begin(115200);
delay(1000);
// 初始化 I2C + OLED
Wire.begin(I2C_SDA, I2C_SCL);
if (!display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR)) {
Serial.println("OLED init failed, check wiring & addr");
while (true) {
delay(1000);
}
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0, 0);
display.println("Starting AP...");
display.display();
// 注册 WiFi 事件(用单参数版本,回调签名要匹配)
WiFi.onEvent(WiFiEvent);
// 启动 AP
WiFi.mode(WIFI_AP);
bool result = WiFi.softAP(AP_SSID, AP_PASS);
if (!result) {
Serial.println("AP start FAILED");
display.clearDisplay();
display.setCursor(0, 0);
display.println("AP start FAILED");
display.display();
while (true) {
delay(1000);
}
}
IPAddress apIP = WiFi.softAPIP();
Serial.print("AP started, SSID: ");
Serial.println(AP_SSID);
Serial.print("AP IP: ");
Serial.println(apIP);
display.clearDisplay();
display.setCursor(0, 0);
display.println("AP started");
display.print("SSID: ");
display.println(AP_SSID);
display.print("IP: ");
display.println(apIP.toString());
display.println("Waiting clients...");
display.display();
Serial.println("Connect WiFi:");
Serial.print("SSID: ");
Serial.println(AP_SSID);
Serial.print("PASS: ");
Serial.println(AP_PASS);
}
void loop() {
showInfoOnOLED();
delay(1000); // 每秒刷新一次
}
更多推荐
所有评论(0)