hardware - 控制 Rainbowduino 的问题

标签 hardware arduino

我刚买了一个 Rainbowduino控制单个 LED 的负载(不是 RGB 矩阵)。到目前为止,所有文档都旨在控制 RGB 阵列,即 不是 我在追求什么。

如果您不熟悉 Rainbowduino,它是一个 Arduino clone 具有 24 个 120 mA 恒流 channel 、8 个每个 500 mA 的 super 源驱动器 channel 以及 5 V - 12 V DC 的宽输出电压适应。非常适合驱动 LED。产品网页在此:http://www.seeedstudio.com/blog/?page_id=187

我已经连接了 16 个 LED,并希望能够使用 digitalWrite() 单独打开和关闭每个 LED .我已经将一些演示代码上传到了板子上,但实际上并不能正常工作。我已经发现 8 个驱动源 channel 可以通过 digitalWrite() 轻松控制。在引脚 3-11 上。然而,控制其他 24 个接收器 channel 更加困难。显然,它们由 3 个移位寄存器(每个一个)控制,我只能通过 shiftOut 访问它们。我不知道这是如何工作的。有人可以帮助我指出正确的方向吗?

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

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

最佳答案

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

基本上,您可以交换 Controller 上的保存引脚,以便在设计中包含另一个芯片(移位寄存器)。

在这种情况下,寄存器用作串并转换器;它有一个串行输入线,由你的 CPU 提供位。它还具有 8 个并行输出,连接到从 CPU 串行加载的 8 位存储器。使用它,您可以在单个引脚上“移出”8 位数据(通常加上一个用于计时的引脚),然后将这些数据存储在移位寄存器中并可以并行驱动 8 个 LED。

在这种特殊情况下,您需要弄清楚移位寄存器(MBI5168 恒流接收器驱动器包含移位寄存器,此处)连接到哪个 AVR 端口引脚。它们应该链接到一对输出,一个用于数据,一个用于时钟。一旦你知道这些引脚,你应该能够使用 ShiftOut 自己驱动它们。命令。

进一步挖掘,this sample "sketch"在名为“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 上编程),但我想说这是您正在寻找的粒子喷射子弹传输系统.

我这样解释:
  • PORTC 是接移位寄存器的那个,所有的控制管脚都在PORTC。
  • 四个引脚是专用的(而不是我上面提到的乐观的两个)。
  • 时钟为引脚 PORTC:2,数据为 PORTC:1。
  • 关于hardware - 控制 Rainbowduino 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1130892/

    相关文章:

    svn - 有没有硬件(ASIC)公司使用mercurial(hg)

    linux - 如何使用 RF24 通过 USB 在普通 PC (Linux) 上与 nRF24L01+ 通信?

    bash - 使用 Bash 将单个字节写入串口

    c++ - 使用 C++ 与 PC 摄像头交互

    android - 以 tail -f 方式实时监视/开发文件

    objective-c - 调试statfs?

    hardware - 网站硬件扩展

    c - AVR C 结合 ADC 读数生成 PWM 输出的问题

    java - 结合Java + 蓝牙 + arduino

    c# - arduino 设备发送的数据中缺少 "NewLine"个字符