幻彩灯珠编程代码(APA102彩色灯珠的使用方法)

您所在的位置:网站首页 彩色灯珠怎么控制 幻彩灯珠编程代码(APA102彩色灯珠的使用方法)

幻彩灯珠编程代码(APA102彩色灯珠的使用方法)

2024-07-09 22:45| 来源: 网络整理| 查看: 265

近两年城市亮化工程中,多处可以见到一些彩色灯柱,颜色可变,可以单一颜色显示,也可以从上到下或者从下到上多彩渐变,这是APA102的一个典型应用场景。

在proteus中,发现也增加了这个器件的模拟,在使用过程中发现apa102的手册关于使用方法说的不是很详细。百度资料的时候,发现国内介绍这个灯珠的资料也比较少,这儿把APA102的使用方法简单介绍一下。

图 1 ATA102在proteus库中的外形

1. 硬件简介

APA102是个一个SPI接口的真彩led灯珠,rgb颜色控制,自带驱动,可以级联,同时具有256级灰度控制和32级亮度控制,是一个非常容易使用的彩灯,可以用来做led灯、大型led屏幕以及LED广告牌。

工业级设计,5V供电,单个灯珠功耗0.2瓦,最大不超过1W。

长宽高5x5x1.4mm。

图 2 引脚图

单个灯珠的引脚定义如图 2所示,除去电源和地引脚外,DI、CI引脚分数是数据输入和时钟输入,分别接控制器的MOSI和SCK,DO与CO用来级联,接下个灯珠的DI和CI。使用SPI进行控制的时候,使用mode0,时钟线空闲周期为低电平,上升沿采样。

图 3 SPI模式

2. 软件控制方法

图 4 控制协议

APA102的软件控制方法如图 4所示,除去开头一个起始帧,最后一个结尾帧以外,中间的是每个led的控制帧。

起始帧的格式是固定的,为连续的32bit的0,即连续发送4个16进制的0x00。如图 5所示。

图5 起始帧

结束帧也是发送特定长度的0,但是结束帧长度不固定,官方计算公式为:

举例来说,假设要控制256个灯珠的话,255×8/16=128,需要末尾发送128bit的0,也就是发送16个0x00。实际上使用中测试,在小于8个灯珠的时候,必须发送4个0x00才可以正确的结束一个控制流程,不影响下次的控制,大于8个的时候,未作测试。

图 6 LED帧

起始帧和结束帧中间的是LED的颜色帧,每个led需要一个颜色帧数据,有多少个led中间就需要发送多少个颜色帧。单个led的控制帧格式如图 6所示。控制一个led需要四个字节的数据,第一个字节是亮度信息,第5位用来做32级亮度控制。后面紧跟着三个字节是蓝色、绿色、和红色颜色分量控制,每个led灯珠需要4个字节的控制信息。

3. 示例代码

使用stm32,管脚模拟的方式做SPI通信,用proteus模拟,代码使用外设库开发,示例代码如下。

图 7 proteus电路连接

示例代码:颜色定义

/*红 绿 黑 橙 蓝 黄 紫 白*/

u8 color[8][4] = {{255,220,20,60},{255,0,100,0},{255,0,0,0},

{255,0,140,255},{255,255,0,0},{255,0,255,255}, {255,148,0,211},{255,255,255,255}};

/**apa102 display color**/

#define RED 0x00

#define GREEN 0x01

#define BLACK 0x02

#define ORANGE 0x03

#define BLUE 0x04

#define YELLOW 0x05

#define ZISE 0x06

#define WHITE 0x07

#define FCOLOR 0x08

示例代码:apa102显示

/**apa102c display color defined in color**/

void apaDIS(u8 incolor)

{

switch(incolor){

case RED:

SPI_SendByte(0x00);//apa启动,写4个0

SPI_SendByte(0x00);

SPI_SendByte(0x00);

SPI_SendByte(0x00);

for(int i=0;i



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3