本项目介绍如何使用Arduino直接控制SSD1306-OLED屏幕进行图形和文本显示,无需额外安装任何库文件,适合初学者快速上手。
使用第三方SSD1306库驱动通常会占用大约1KB的芯片内存作为显示缓冲区,在不添加其他功能代码的情况下编译后就会占据50%的空间。为了解决这个问题,我决定封装一个不会申请额外空间的新版SSD1306库,并且支持中英文混合显示。
下面是相关的代码示例:
```cpp
#include OLED.h
OLED oled;
void setup(void) {
Serial.begin(9600);
oled.Init();
oled.Clear();
// 显示初始信息
oled.ShowString(88, 0, 12, POWER, 1);
oled.ShowString(88, 1, 12, 20.4V, 1);
// 中文显示示例
oled.ShowCHinese(0, 0, 95%, 1);
oled.ShowCHinese(28, 0, {||||}, 1);
// 其他信息的展示
oled.ShowString(88, 2, 12, T:05M, 1);
oled.ShowString(88, 4, 16, , 0);
// 温度显示设置
oled.ShowNum(94, 4, 328, 3, 16, 0);
oled.ShowString(119, 4, 16, `, 0);
// 显示箭头图标和温度圈
oled.ShowCHinese(96, 6, 箭 , 1);
}
void loop(void) {
for (u16 i = 0; i < 255; i++) {
// 屏幕亮度设置(注释掉的部分)
// oled.BrigControl(i);
oled.ShowNum48(0, 3, i, 3, 1);
// 大温度圈显示
oled.ShowCHinese(72, 3, 圈, 1);
// 加热点的动态效果
oled.ShowString(118, 6, 16, ~, 1);
delay(10);
oled.ShowString(118, 6, 16, , 1);
// 功率条显示更新和温度百分比变化
oled.ShowCHinese(28, 0, {||} , 1);
delay(10);
oled.ShowCHinese(28, 0, {|||} , 1);
}
}
```
以上代码展示了如何使用自定义的SSD1306库来实现中英文混合显示,并且支持动态效果如温度值变化和功率条更新。