ESP32 点亮 SH1106驱动芯片的OLED

879 阅读1分钟

1. 准备

1.1 开发环境

  • VSCode PlatformIO插件
  • Arduino
  • OLED: SH1106驱动芯片-128X64-1.3寸

1.2 依赖

  • U8g2: <U8g2lib.h>

2. 例子

  • 这里设置管脚需要注意:并不是IIC的GPIO21和GPIO22脚,而是SPI的GPIO5和GPIO18脚
  • 目前不知到什么原因
#include <Arduino.h> 
#include <U8g2lib.h> 

// 这里的引脚并不是ESP32上的IIC引脚(SCL:21, SDA:22) 
static const uint8_t ESP32_SCL = 5; 
static const uint8_t ESP32_SDA = 18; 

#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h> 
#endif 
#ifdef U8X8_HAVE_HW_I2C 
#include <Wire.h> 
#endif 

//构造函数中传入自己的IIC脚, 复位脚默认设为空 U8G2_SH1106_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0, /*SCL*/ ESP32_SCL, /*SDA*/ ESP32_SDA, /*reset*/ U8X8_PIN_NONE); 
void setup(void) { 
    u8g2.begin(); 
} 
void loop(void) { 
    u8g2.clearBuffer(); 
    u8g2.setFont(u8g2_font_ncenB08_tr);
    // 从(0, 10)坐标点开始打印字符串 
    // 坐标原点: 屏幕坐上脚, x轴: 竖直向下, y轴: 水平向左 
    u8g2.drawStr(0, 10, "Hello World!"); 
    u8g2.sendBuffer(); delay(1000); 
}

ESP32-Pinout.jpg