2018年10月18日 星期四

DIY - ESP32:ESP32 SSD1306 0.96吋 I2C OLED 屏模組程式(十二)

DIY - ESP32:ESP32 SSD1306 0.96吋 I2C OLED 屏模組程式(十二):

雖然筆者使用的 SSD1306 0.96吋 I2C OLED 屏模組和之前的一樣,但 ESP32 和 ESP8266 的 SDK API是不同,所以程式是會有些改變,但基本程式結構是和 ESP8266 一樣,所以主要改動是 ESP32 的驅動 API 參數和定義。

ESP32 SSD1306 0.96吋 I2C OLED 屏模組
ESP32 SSD1306 0.96吋 I2C OLED 屏模組 I/O 接腳定義:
#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 屏模組顯示
操作系統:Windows 7 64-bit 版本
開發環境: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%
天氣:大致多雲

沒有留言:

張貼留言