首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >控制彩虹的几个问题

控制彩虹的几个问题
EN

Stack Overflow用户
提问于 2009-07-15 11:36:14
回答 2查看 1.8K关注 0票数 5

我刚买了一个兰博迪诺来控制单个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附带的示例代码,但我无法理解。我怎样才能解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-07-15 11:44:39

在数字电子学中,使用移位寄存器来实现多路(或解复用器,视您的观点而定)输入/输出是非常普遍的。

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

在这种情况下,寄存器作为串行到并行转换器工作;它有一个串行输入行,由CPU提供的位构成。它还具有8个并行输出,连接到从CPU连续加载的8位内存.使用此方法,您可以“移出”单个引脚上的8位数据(通常还有一个用于时钟的引脚),这些数据存储在移位寄存器中,并且可以并行驱动8个LED。

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

进一步研究一下,这个样本“草图”在名为“Rainbow.h”的文件中包含了以下定义:

代码语言:javascript
运行
复制
//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中。
  • 四个引脚是专用的(而不是上面提到的乐观的两个)。
  • 时钟为pin PORTC:2,数据为PORTC:1。
票数 3
EN

Stack Overflow用户

发布于 2009-10-15 15:27:20

控制每一个LED是相当昂贵的时间,它更好地考虑行,而每一个LED颜色表示为on位,所以它是8位x3颜色(红色,绿色,蓝色)。我编写了一个小的Rainbowduino库,它允许您轻松地设置每一行或每帧:

读一下我的博客文章

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1130892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档