雖然筆者使用的 SSD1306 0.96吋 I2C OLED 屏模組和之前的一樣,但 ESP32 和 ESP8266 的 SDK API是不同,所以程式是會有些改變,但基本程式結構是和 ESP8266 一樣,所以主要改動是 ESP32 的驅動 API 參數和定義。
ESP32 SSD1306 0.96吋 I2C OLED 屏模組 |
#define SCL_PIN
GPIO_NUM_22 // SCL Serial Clock
#define SDA_PIN
GPIO_NUM_21 // SDA Serial Data
|
ESP32 SSD1306 0.96吋 I2C OLED 屏模組初始化程式:
void ssd1306_init()
{
esp_err_t espRc;
i2c_cmd_handle_t cmd =
i2c_cmd_link_create();
i2c_master_start(cmd);
i2c_master_write_byte(cmd,
(OLED_I2C_ADDRESS << 1) | I2C_MASTER_WRITE, 1);
i2c_master_write_byte(cmd,
OLED_CONTROL_BYTE_CMD_STREAM, 1);
i2c_master_write_byte(cmd, OLED_CMD_SET_CHARGE_PUMP,
1);
i2c_master_write_byte(cmd, 0x14,
1);
i2c_master_write_byte(cmd,
OLED_CMD_SET_SEGMENT_REMAP, 1); // reverse left-right mapping
i2c_master_write_byte(cmd,
OLED_CMD_SET_COM_SCAN_MODE, 1); // reverse up-bottom mapping
i2c_master_write_byte(cmd,
OLED_CMD_DISPLAY_ON, 1);
i2c_master_stop(cmd);
espRc =
i2c_master_cmd_begin(I2C_NUM_0, cmd, 10/portTICK_PERIOD_MS);
if (espRc == ESP_OK) {
ESP_LOGE(tag,
"OLED configured successfully");
} else {
ESP_LOGE(tag,
"OLED configuration failed. code: 0x%.2X", espRc);
}
i2c_cmd_link_delete(cmd);
}
|
ESP32 SSD1306 0.96吋 I2C OLED 屏模組運作中 |
ESP32 SSD1306 0.96吋 I2C OLED 屏模組顯示 |
開發環境:AiThinker05 版本
原程碼: ESP32 ESP-IDF V3.0rc1
程式: DIY-ESP32-002-SSD1306_01_NewI2C-20181005
相關網址:
※ DIY - ESP32:ESP32 SSD1306 0.96吋 I2C OLED 屏模組電路(十一)
2018年 10月 18日 天氣報告
氣溫:23.5度 @ 20:30
相對濕度:百分之 77%
天氣:大致多雲
沒有留言:
張貼留言