项目简介
本项目是一个基于Arduino的库,可借助Arduino UNO风格的开发板控制32x16的HUB75显示器。该库利用双缓冲帧缓冲区实现8色(3位)显示,能有效避免闪烁,使Arduino UNO在资源有限的情况下也可驱动HUB75显示器。
项目的主要特性和功能
- 绘图功能丰富:支持绘制基本图形,可进行单个像素的读写,能绘制任意线条、填充和未填充的矩形,具备黑、红、黄、绿、青、品红、蓝、白8种颜色。
- 文本显示:拥有5x7的位图字体,可在显示器上书写文本。
- 动画与滚动效果:通过以合适速率重绘缓冲区,可实现简单的动画和滚动效果。
- 双更新模式:提供两种更新显示的方法,手动调用
update()
方法显示较亮但亮度不一致;使用硬件定时器在中断服务例程(ISR)中调用update()
方法,更新时间更一致,显示更稳定。 - 坐标系统灵活:可通过函数指针修改
X/Y
坐标系,方便调整原点位置,也可将面板旋转90或270度。
安装使用步骤
硬件连接
该库使用Uno的12个引脚驱动HUB75显示器,6个颜色输出引脚在AVR硬件端口D上按顺序排列,以加快颜色数据的移入速度。具体引脚对应关系如下:
| AVR Port | AVR Pin | Arduino UNO Pin | HUB75 Display | Description |
| :---: | :---: | :---: | :---: | --- |
| D | 2 | 2 | R1 | Red 1 (upper half red) |
| D | 3 | 3 | G1 | Green 1 (upper half green) |
| D | 4 | 4 | B1 | Blue 1 (upper half blue) |
| D | 5 | 5 | R2 | Red 2 (upper half red) |
| D | 6 | 6 | G2 | Green 2 (upper half green) |
| D | 7 | 7 | B2 | Blue 2 (upper half blue) |
| B | 0 | 8 | A | Row 'A' select |
| B | 1 | 9 | B | Row 'B' select |
| B | 2 | 10 | C | Row 'C' select |
| B | 3 | 11 | CLK | bit clock for shifting in color data |
| B | 4 | 12 | LAT | Latch shift register |
| B | 5 | 13 | OE | Output enable (active low) |
若需重新分配引脚,需编辑panel_impl.h
和panel.cpp
文件。
软件使用
- 实例化对象:创建
Uno_HUB75_Driver
类的成员实例。 - 初始化:调用
begin()
方法,该方法有两个参数(有默认值),第一个参数定义是否从Timer 2 ISR调用更新方法,第二个参数定义坐标转换方法。 - 绘制内容:使用库提供的原语在面板上“绘制”,或逐像素绘制。绘制完成后,调用
draw()
方法将工作帧缓冲区复制到输出帧缓冲区,防止显示闪烁。 - 更新显示:定期调用
update()
方法,可在Timer 2 ISR中调用(推荐),也可在应用程序的主循环中调用。若使用ISR方法,需在代码中添加如下内容:ISR(TIMER2_COMPA_vect, ISR_BLOCK) { panel.update(); }
将panel
替换为实际使用的类实例名称。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】