本文介绍了联盛德 W803 Pico 基于 Arduino IDE 实现 IIC 协议驱动 OLED 显示广告的项目设计.
OLED 显示屏在家电和消费电子产品中应用广泛, 通过单片机实现 OLED 驱动是人机互动相关项目设计的基本且常见的解决方案. 在此背景下, 结合 Arduino 丰富的函数库资源, 实现模块化编程, 不失为一种极具性价比的方案, 极大缩减了产品开发和功能验证的时间成本, 对于相关产品的快速应用提供了极大便利.
根据开发板引脚定义, PA4 和 PA1 分别对应 IIC-SDA 和 IIC-SCL, 因此将其与 IIC OLED 模块的对应引脚相连.
下载并安装 Arduino IDE
开发板管理器中添加附加支持链接 http: //dl. isme. fun/w80x_arduino/package_w80x_index. json
打开示例程序
注意修改工程中的 OLED 驱动选项为 SSD1306
#include GyverOLED. h
GyverOLED SSD1306_128x64, OLED_NO_BUFFER oled;
const uint8_t bitmap_32x32[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xE0, 0xF0, 0x70, 0x70, 0x30, 0x30, 0x30, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0, 0xF0, 0xF0, 0x70, 0x30, 0x30, 0x20, 0x00, 0x00,
0x00, 0x30, 0x78, 0xFC, 0x7F, 0x3F, 0x0F, 0x0F, 0x1F, 0x3C, 0x78, 0xF0, 0xE0, 0xC0, 0x80, 0x80, 0x80, 0x40, 0xE0, 0xF0, 0xF8, 0xFC, 0xFF, 0x7F, 0x33, 0x13, 0x1E, 0x1C, 0x1C, 0x0E, 0x07, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0xF0, 0xF9, 0xF7, 0xEF, 0x5F, 0x3F, 0x7F, 0xFE, 0xFD, 0xFB, 0xF1, 0xE0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x1E, 0x33, 0x33, 0x1F, 0x0F, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x1F, 0x0E, 0x04, 0x00, 0x00, 0x00, 0x00,
};
void setup () {
Serial. begin (9600) ;
oled. init () ;
oled. clear () ; // очистить дисплей (или буфер)
oled. update () ; // обновить. Только для режима с буфером! OLED_BUFFER
// --------------------------
oled. home () ; // курсор в 0, 0
oled. print ("Hello! ") ; // печатай что угодно: числа, строки, float, как Serial!
oled. update () ;
delay (2000) ;
// --------------------------
oled. setCursor (5, 1) ; // курсор в (пиксель X, строка Y)
oled. setScale (2) ;
oled. print ("Hello! ") ;
oled. update () ;
delay (2000) ;
// --------------------------
oled. setCursorXY (15, 30) ; // курсор в (пиксель X, пиксель Y)
oled. setScale (3) ;
oled. invertText (true) ; // инвертируй текст!
oled. print ("Привет! ") ;
oled. update () ;
delay (2000) ;
// --------------------------
oled. clear () ;
oled. home () ;
oled. setScale (1) ;
oled. invertText (false) ;
oled. autoPrintln (true) ; // автоматически переносить текст
oled. update () ;
delay (2000) ;
// --------------------------
oled. home () ;
oled. textMode (BUF_ADD) ;
oled. home () ;
oled. setScale (3) ;
oled. print ("KEK! ") ;
oled. update () ;
delay (2000) ;
// --------------------------
oled. clear () ;
oled. dot (0, 0) ; // точка на x, y
oled. dot (0, 1, 1) ; // третий аргумент: 0 выкл пиксель, 1 вкл пиксель (по умолч)
oled. line (5, 5, 10, 10) ; // линия x0, y0, x1, y1
oled. fastLineH (0, 5, 10) ; // горизонтальная линия (y, x1, x2)
oled. fastLineV (0, 5, 10) ; // аналогично верт. линия (x, y1, y2)
oled. rect (20, 20, 30, 25) ; // прямоугольник (x0, y0, x1, y1)
oled. rect (5, 35, 35, 60, OLED_STROKE) ; // прямоугольник (x0, y0, x1, y1)
oled. roundRect (50, 5, 80, 25, OLED_STROKE) ;
oled. circle (60, 45, 15, OLED_STROKE) ;
oled. circle (60, 45, 5, OLED_FILL) ;
oled. drawBitmap (90, 16, bitmap_32x32, 32, 32, BITMAP_NORMAL, BUF_ADD) ;
oled. update () ;
}
void loop () {
}
选择目标串口设备端口号, 点击上传
当终端提示等待串口连接时, 短按板载 RESET 键, 即可完成固件烧录.
使用 PowerPoint 组合 Winner Micro 文字和 logo 并另存为 BMP 格式图片;
裁剪并修改像素大小为 128 x 64
使用 Image2LCD 软件
调整亮度, 将图片导出为适用于单色 IIC OLED 的标准 BMP 文件;
使用 PC2LCD 软件, 导入前面生成的标准 BMP 文件, 并对字模选项进行设定;
点击 生成字模
选项, 复制对话框中生成的代码, 修改并保存为 . h
格式的头文件
const uint8_t ad[] PROGMEM = {
0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
. . . ,
. . . ,
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
};
将头文件与目标工程放置于同一文件夹.
#include GyverOLED. h
#include "ad. h" // 图片编码文件
GyverOLED SSD1306_128x64, OLED_NO_BUFFER oled;
void setup () {
Serial. begin (9600) ;
oled. init () ; // 初始化
oled. clear () ; // 清晰显示 (或缓冲区)
oled. update () ; // 刷新 - 仅限缓冲模式 OLED_BUFFER
oled. drawBitmap (0, 0, ad, 128, 64, BITMAP_NORMAL, BUF_ADD) ;
oled. update () ;
}
void loop () {
}
编译并上传至开发板.
本文介绍了联盛德 W803 Pico 开发板基于 Arduino IDE 实现 IIC 协议驱动 OLED 显示广告的项目设计, 包括项目简介, 硬件连接, 工程测试, 具体广告设计, 关键代码, 效果展示等, 为相关产品的开发设计提供参考.