联盛德 W803 Pico 试用 - IIC 协议驱动 OLED 广告牌

发布于 2025-03-27 18: 24: 08

[联盛德 W803 Pico 测评] IIC 协议驱动 OLED 广告牌

本文介绍了联盛德 W803 Pico 基于 Arduino IDE 实现 IIC 协议驱动 OLED 显示广告的项目设计.

介绍

OLED 显示屏在家电和消费电子产品中应用广泛, 通过单片机实现 OLED 驱动是人机互动相关项目设计的基本且常见的解决方案. 在此背景下, 结合 Arduino 丰富的函数库资源, 实现模块化编程, 不失为一种极具性价比的方案, 极大缩减了产品开发和功能验证的时间成本, 对于相关产品的快速应用提供了极大便利.

硬件连接

根据开发板引脚定义, PA4 和 PA1 分别对应 IIC-SDA 和 IIC-SCL, 因此将其与 IIC OLED 模块的对应引脚相连.

board_OLED_connect. jpg

工程测试

下载并安装 Arduino IDE

开发板管理器中添加附加支持链接 http: //dl. isme. fun/w80x_arduino/package_w80x_index. json

打开示例程序

example-oled-demo. jpg

代码

注意修改工程中的 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 ()  {
}

编译上传

选择目标串口设备端口号, 点击上传

upload. jpg

当终端提示等待串口连接时, 短按板载 RESET 键, 即可完成固件烧录.

效果

show_oled-demo. jpg

广告牌设计

使用 PowerPoint 组合 Winner Micro 文字和 logo 并另存为 BMP 格式图片;

裁剪并修改像素大小为 128 x 64

AD_color. bmp

使用 Image2LCD 软件

image2lcd. jpg

调整亮度, 将图片导出为适用于单色 IIC OLED 的标准 BMP 文件;

使用 PC2LCD 软件, 导入前面生成的标准 BMP 文件, 并对字模选项进行设定;

pc2lcd-setting. jpg

点击 生成字模 选项, 复制对话框中生成的代码, 修改并保存为 . 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 ()  {
}

编译并上传至开发板.

效果

oled_board_AD. jpg

AD_show. jpg

总结

本文介绍了联盛德 W803 Pico 开发板基于 Arduino IDE 实现 IIC 协议驱动 OLED 显示广告的项目设计, 包括项目简介, 硬件连接, 工程测试, 具体广告设计, 关键代码, 效果展示等, 为相关产品的开发设计提供参考.

1 条评论

发布
问题