联盛德 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 显示广告的项目设计,包括项目简介、硬件连接、工程测试、具体广告设计、关键代码、效果展示等,为相关产品的开发设计提供参考。

0 条评论

发布
问题