【跟二叔玩AVR】之三:学大家玩8*8点阵

作者: 栗叔
上传时间为: 2015-01-16 05:39 PM
2015-01-16
阅读:

文前说明:二叔科技原创,首发于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也可以,亮瞎了,不过后果自负

全部评论 ()
条评论
写评论

创建讨论帖子

登录 后参与评论
系统提示