拔出式开发之esp32c3驱动oled屏
...
拔出式开发之esp32c3驱动oled屏
硬件部分
本次实验使用esp32c3 super mini开发板和0.96寸双色oled屏,按图接线:

注意供电接3v3不要接5v。
软件部分
如果用Arduino控制,需要额外安装三个适配SSD1306芯片的驱动库:Adafruit SSD1306 - v2.4.0
、Adafruit GFX Library - v1.12.1
、Adafruit BusIO - v1.17.4
,可以直接打开PIO Home -> Liararies搜索安装。
编写demo程序,对于0.96寸的oled,长宽就定为128x64:
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
// 自定义重置引脚,虽然教程未使用,但却是Adafruit_SSD1306库文件所必需的
#define OLED_RESET 4
所有的显示行为都必须通过一个Adafruit_SSD1306
对象来实现:
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
在setup()
中,初始化:
void setup() {
// 初始化OLED并设置其IIC地址为 0x3C
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
}
之后就可以写需要显示的主体内容了,我把它放在一个words_display
里:
void words_display() {
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1.5);
display.setCursor(0, 0);
display.print("fuufhjn\'s Wonderland");
display.setCursor(0, 20);
display.print("time: ");
display.print(millis() / 1000);
display.print(" s");
display.setCursor(0, 40);
display.print("Author: ");
display.print("fuufhjn");
}
注意,写了display.
之后,只是把行为放在了缓冲区里,要写到屏幕上还要再调一个display()
方法:
void loop() {
words_display();
display.display();
}
编译烧录就可以看到效果了:

奇怪的是,明明没有指定颜色,为什么它自动把第一行用黄色显示了?事实上这块oled屏的“双色”并不能自己控制,而是从(0, 0) - (128, 20)
之间的像素固定黄色显示,其余用蓝色。