控制Rainbowduino的问题

Jam*_*mes 5 hardware arduino

我刚买了一台Rainbowduino来控制各个LED的负载(不是RGB矩阵).到目前为止,所有文档都旨在控制RGB阵列,这不是我所追求的.

如果您不熟悉Rainbowduino,它是一个Arduino克隆,具有24个120 mA恒流通道,8个超级源驱动器通道,每个500 mA,宽输出电压适应5 V - 12 V DC.非常适合驱动LED.产品网页位于:http://www.seeedstudio.com/blog/? page_id = 187

我连接了16个LED,希望能够单独打开和关闭每个LED digitalWrite().我已经将一些演示代码上传到电路板上,而这些代码并没有真正起作用.我已经知道8个驱动源通道可以digitalWrite()通过引脚3-11 轻松控制.然而,控制其他24个接收器通道更加困难.显然,它们由3个移位寄存器(每个一个)控制,我只能通过shiftOut访问它们.我不知道这是怎么回事.有人能指点我正确的方向吗?

一半LED连接到蓝色1-8,另一半连接到绿色1-8.正极连接到已设置为HIGH的VCC1-2.我确信电路连接正确,这是我遇到问题的编程.

我查看了Rainbowduino附带的示例代码,但我无法理解它.我该如何解决这个问题?

unw*_*ind 3

使用移位寄存器来复用(或解复用,取决于您的观点)输入/输出在数字电子产品中非常常见。

基本上,您用控制器上的节省引脚来交换必须在设计中包含另一个芯片(移位寄存器)。

在这种情况下,寄存器充当串并转换器;它有一个串行输入线,由 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
Run Code Online (Sandbox Code Playgroud)

这当然是完全数字“传闻”(我不拥有该设备,我从未在任何类型的 *duino 上编程),但我想说这是您正在寻找的粒子喷射子弹传送系统。

我这样解释:

  • PORTC 是连接移位寄存器的引脚,所有控制引脚都在 PORTC 中。
  • 四个引脚是专用的(而不是我上面提到的乐观的两个)。
  • 时钟为引脚 PORTC:2,数据为引脚 PORTC:1。