u8g2库怎么同时驱动两块oled
时间: 2023-09-17 19:06:30 浏览: 165
使用硬件I2C、SPI、软件模拟I2C、SPI来驱动OLED显示,并基于I2C、SPI这两种不同的接口移植u8g2来进行演示
5星 · 资源好评率100%
要同时驱动两块 OLED,可以使用 u8g2 库的多实例功能。具体步骤如下:
1. 在程序中包含 u8g2 头文件。
```c++
#include <U8g2lib.h>
```
2. 创建两个 U8G2 对象,分别代表两个 OLED。
```c++
U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2_1(U8G2_R0); // OLED 1
U8G2_SH1106_128X64_NONAME_1_HW_I2C u8g2_2(U8G2_R0); // OLED 2
```
3. 在 `setup()` 函数中分别初始化两个 OLED。
```c++
void setup() {
u8g2_1.begin();
u8g2_1.setContrast(255); // 设置 OLED 1 对比度
u8g2_1.clearBuffer();
u8g2_1.setFont(u8g2_font_ncenB08_tr);
u8g2_1.setCursor(0, 10);
u8g2_1.print("Hello, OLED 1!");
u8g2_2.begin();
u8g2_2.setContrast(255); // 设置 OLED 2 对比度
u8g2_2.clearBuffer();
u8g2_2.setFont(u8g2_font_ncenB08_tr);
u8g2_2.setCursor(0, 10);
u8g2_2.print("Hello, OLED 2!");
}
```
4. 在 `loop()` 函数中分别更新两个 OLED。
```c++
void loop() {
u8g2_1.sendBuffer(); // 更新 OLED 1
delay(1000); // 延时 1 秒
u8g2_2.sendBuffer(); // 更新 OLED 2
delay(1000); // 延时 1 秒
}
```
这样就可以同时驱动两块 OLED 了。如果需要使用更多 OLED,也可以创建更多的 U8G2 对象。
阅读全文