二叔花一晚上用BPI画的8*8RGB点阵上的效果图

[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;
    }
}

}

转自 http://www.52pi.net/forum.php?mo … 1328&extra=page%3D1