[table=98%]
[tr][td]
老邓的彩色点阵是个好东西,
不过到手后比较惆怅,不知道从哪里下手,
期间参考了鱼大,驴大,卓大的很多程序,
不过还是比较迷茫,期间看了595的库,
分析了老邓模块的原理,
首先运行了卓大的程序
http://www.52pi.net/forum.php?mo … tid=1322&extra=
很顺利就点亮了,不过很闪,
请教卓大,继续分析原因,期间还发现红灯和蓝灯不能同时点亮,
否则蓝灯会很黯淡,可能是因为没有电阻的原因,
不去深究了,分时点亮吧,
还是老办法,刷缓冲区,
每种颜色8个字节,所以三种颜色24个字节,
先画草图,然后一个一个字节计算,
最后效果图如下,纯静态展示,实际效果更漂亮,
感兴趣的小伙伴可下载程序去运行,
2015-1-12 23:47 上传
还是抛砖引玉吧,二叔也只能做到这样了[/td][/tr]
[/table]
#include <wiringPi.h>
#include <wiringPiSPI.h>
unsigned char elscode[24] = {
0x30, 0x30, 0x30, 0x18, 0x18, 0x18,
0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0,
0x01, 0xc0, 0x81, 0x07, 0xe6, 0x81,
0x0f, 0x42, 0x21, 0x0f, 0x02, 0x71
};
unsigned char cleancode[4] = {0x00, 0x00, 0x00, 0x00};
int main(void)
{
int i,k;
unsigned char buffer[4] = {0x25, 0xFF, 0x7F, 0xF0};
wiringPiSetup();
wiringPiSPISetup(0, 1);
wiringPiSPIDataRW(0, cleancode, 4);
delay(1000);
while(1)
{
k=0;
for(i=1;i<256;i*=2)
{
buffer[0]=i;
buffer[1]=0xff-elscode[k+2];
buffer[2]=0xff;
buffer[3]=0xff;
wiringPiSPIDataRW(0, buffer, 4);
buffer[0]=i;
buffer[1]=0xff;
buffer[2]=0xff-elscode[k+1];
buffer[3]=0xff;
wiringPiSPIDataRW(0, buffer, 4);
buffer[0]=i;
buffer[1]=0xff;
buffer[2]=0xff;
buffer[3]=0xff-elscode[k+0];
wiringPiSPIDataRW(0, buffer, 4);
k+=3;
}
}
}