我刚买了一个兰博迪诺来控制单个LED的负载(不是RGB矩阵)。到目前为止,所有的文档都是为了控制RGB数组,这是,而不是我想要的。
如果你不熟悉彩虹,它是一个阿杜伊诺克隆,24恒流通道120 mA,8个超级电源驱动通道,每个500 mA和宽输出电压从5V-12V直流。非常适合驾驶LED。产品网页在这里:id=187
我已经连接了16个LED,并希望能够单独打开和关闭每一个与digitalWrite()
。我已经上传了一些演示代码到董事会,这并不是真正的工作。我已经计算出,8驱动源通道是很容易控制与digitalWrite()
的引脚3-11。然而,控制其他24个下沉通道是比较困难的。显然,它们是由3个移位寄存器(每个)控制的,我只能用shiftOut访问这些寄存器。我不知道这是怎么回事。有人能帮我指出正确的方向吗?
一半的LED连接到蓝色1-8,另一半被连接到绿色1-8。积极的腿是连接到VCC1-2,这已经设置为高。我相信电路是正确的,这是我有问题的程序。
我已经查看了Rainbowduino附带的示例代码,但我无法理解。我怎样才能解决这个问题?
发布于 2009-07-15 11:44:39
在数字电子学中,使用移位寄存器来实现多路(或解复用器,视您的观点而定)输入/输出是非常普遍的。
基本上,您在控制器上交换保存引脚,以便在设计中包括另一个芯片(移位寄存器)。
在这种情况下,寄存器作为串行到并行转换器工作;它有一个串行输入行,由CPU提供的位构成。它还具有8个并行输出,连接到从CPU连续加载的8位内存.使用此方法,您可以“移出”单个引脚上的8位数据(通常还有一个用于时钟的引脚),这些数据存储在移位寄存器中,并且可以并行驱动8个LED。
在这种特殊情况下,您需要知道移动寄存器(这里的MBI5168恒流接收器驱动程序包含移位寄存器)连接到哪个AVR端口引脚。它们应该被链接到一对输出,一个用于数据,另一个用于时钟。一旦您知道了这些引脚,您应该能够使用ShiftOut命令自己驱动它们。
进一步研究一下,这个样本“草图”在名为“Rainbow.h”的文件中包含了以下定义:
//MBI5168
#define SH_DIR_OE DDRC
#define SH_DIR_SDI DDRC
#define SH_DIR_CLK DDRC
#define SH_DIR_LE DDRC
#define SH_BIT_OE 0x08
#define SH_BIT_SDI 0x01
#define SH_BIT_CLK 0x02
#define SH_BIT_LE 0x04
#define SH_PORT_OE PORTC
#define SH_PORT_SDI PORTC
#define SH_PORT_CLK PORTC
#define SH_PORT_LE PORTC
这当然是完全数字化的“道听途说”(我不拥有这个设备,我从来没有在任何类型的*duino上编程),但我想说的是,这是你正在寻找的粒子喷射子弹传送系统。
我对此的理解如下:
发布于 2009-10-15 15:27:20
控制每一个LED是相当昂贵的时间,它更好地考虑行,而每一个LED颜色表示为on位,所以它是8位x3颜色(红色,绿色,蓝色)。我编写了一个小的Rainbowduino库,它允许您轻松地设置每一行或每帧:
读一下我的博客文章
https://stackoverflow.com/questions/1130892
复制相似问题