TA的每日心情 | 擦汗 2015-3-6 13:14 |
---|
签到天数: 6 天 连续签到: 1 天 [LV.2]偶尔看看I
|
文前说明:二叔科技原创,首发于52pi.net,运行平台为卓泰的arduino mini(属于AVR 328p)
最近见好多朋友在玩彩色点阵,二叔也手痒了,
好吧,点阵也走起,点阵是52pi的老邓给的,是为香蕉派设计的,
不过在香蕉派上有些问题二叔还没解决,
先用AVR玩吧,芯片是328P,测试环境是arduino 1.0.x,驱动板是老邓的4x595驱动板,
下面就是接线图了,估计手里有的也都有香蕉,
如果确实没有打算自己搞的或许有些麻烦,
Arduino 26PIN
Vcc(3.3V) 1
GND 6
(CS)D10 24
(MOSI)D11 19
(CLK)D13 23
大概就需要这么五根线,
由于模块上没有电阻,所以没敢试5V,Arduino需要用3.3V,
由于线不够长,只能又发床照了
下边上代码,没啥技术含量:
#include <SPI.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};const int slaveSelectPin = 10;void setup() { pinMode (slaveSelectPin, OUTPUT); SPI.begin();}void loop() { int k=0; int i; for(i=1;i<256;i*=2) { digitalWrite(slaveSelectPin, LOW); SPI.transfer((byte)i); SPI.transfer((byte)(0xff-elscode[k+2])); SPI.transfer((byte)0xff); SPI.transfer((byte)0xff); digitalWrite(slaveSelectPin, HIGH); digitalWrite(slaveSelectPin, LOW); SPI.transfer((byte)i); SPI.transfer((byte)0xff); SPI.transfer((byte)(0xff-elscode[k+1])); SPI.transfer((byte)(0xff-elscode[k+0])); digitalWrite(slaveSelectPin, HIGH); k+=3; }}运行效果如下,是张静态图,大家可以试着玩玩,有能力的朋友可以改成游戏
小撸发给二叔的效果图,据说5V也可以,亮瞎了,不过后果自负
|
|