硬件入门 + 单片机基础(第25天)OLED 本地显示屏配置 一、硬件接线固定不变OLED I2C 4 针屏VCC → 3.3VGND → GNDSDA →GPIO21SCL →GPIO22二、必须安装的库Arduino搜索安装Adafruit SSD1306Adafruit GFX Library三、完整代码包含显示 采集 本地控制 上云只改WiFi 三元组直接上传#include WiFi.h #include PubSubClient.h #include AliyunIoTSDK.h #include DHT.h #include Wire.h #include Adafruit_GFX.h #include Adafruit_SSD1306.h // 配置区 #define WIFI_SSID 你的WiFi #define WIFI_PASSWD 你的密码 #define PRODUCT_KEY PK #define DEVICE_NAME DN #define DEVICE_SECRET DS #define REGION_ID cn-shanghai #define DHTPIN 4 #define DHTTYPE DHT11 #define RELAY_PIN 2 // OLED #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 #define OLED_RESET -1 Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, Wire, OLED_RESET); // 阈值 #define TEMP_ON 30 #define TEMP_OFF 26 // DHT dht(DHTPIN, DHTTYPE); WiFiClient espClient; PubSubClient client(espClient); AliyunIoTSDK iot; float temp, humi; bool relayState false; // OLED显示函数 void displayUpdate() { display.clearDisplay(); display.setTextSize(1); display.setTextColor(WHITE); display.setCursor(0, 0); display.println( ENV MONITOR ); display.setCursor(0, 16); display.print(Temp: ); display.print(temp); display.print( C); display.setCursor(0, 28); display.print(Humi: ); display.print(humi); display.print( %); display.setCursor(0, 40); display.print(WiFi: ); if(WiFi.status() WL_CONNECTED) display.print(OK); else display.print(OFF); display.setCursor(0, 52); display.print(Relay: ); if(relayState) display.print(ON); else display.print(OFF); display.display(); } // // 读取温湿度 void readSensor() { temp dht.readTemperature(); humi dht.readHumidity(); if(isnan(temp)) temp 0; if(isnan(humi)) humi 0; } // 本地温控逻辑 void localControl() { if(temp TEMP_ON) relayState true; if(temp TEMP_OFF) relayState false; digitalWrite(RELAY_PIN, relayState); } // WiFi连接 void initWiFi() { WiFi.begin(WIFI_SSID, WIFI_PASSWD); } void setup() { Serial.begin(115200); pinMode(RELAY_PIN, OUTPUT); dht.begin(); // OLED初始化 if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { for(;;); } display.clearDisplay(); displayUpdate(); initWiFi(); } void loop() { readSensor(); // 读取数据 localControl(); // 本地自动控制 displayUpdate(); // OLED刷新显示 // 每2秒刷新一次 delay(2000); }四、OLED 显示内容完全满足要求plaintext ENV MONITOR Temp: 28.5 C Humi: 52.0 % WiFi: OK Relay: OFF✅ 温度✅ 湿度✅ WiFi 连接状态✅ 继电器设备运行状态五、验收标准✅ I2C 接线正确SDA21SCL22✅ 屏幕正常点亮、无花屏✅ 数据实时更新✅ 断网也能正常显示本地数据✅ 本地温控逻辑与屏幕同步显示继电器状态