怎样制作带移位寄存器的RGB闪光灯

电子说

1.2w人已加入

描述

Step 1:工具和材料

Arduino 101或Arduino Uno

移位寄存器

面包板

RGB LED

3个100Ω电阻器

跳线

步骤2:电路

将 Arduino电源连接到面包板电源导轨

使用红色跨接线将Arduino的3.3V引脚连接到红色面包板电源导轨。

使用黑色跨接线将Arduino接地引脚连接到黑色面包板姿势导轨。

将移位寄存器连接到 Arduino 。

将移位寄存器放在面包板上顶部凹口朝向顶部,这将按照惯例指示销1的位置,即凹口左侧的位置。这是所有IC中的通用属性,是一件值得记住的好事。

将移位寄存器上的引脚10和16连接到3.3V电源轨。

将移位寄存器上的引脚8和引脚13连接到面包板的接地导轨。

将引脚11,12和14从移位寄存器连接到引脚2,3和4分别为面包板。

最后,将 RGB LED 连接到移位寄存器

连接最长的引脚将RGB LED连接到公共地。

将引脚15连接到100Ω电阻,然后与RGB LED的红色LED串联,这是最靠近接地引脚但不在中间的LED。

将剩余的中间引脚(也是绿色LED引脚)连接到移位寄存器的引脚1。

现在,将唯一未连接的引脚(您知道是蓝色LED引脚)连接到移位寄存器的引脚2.

步骤3 :代码

led

我们无法打开并使用RGB LED将每个引脚保持为高电平,因为这样可以使所有LED保持高电平并在一个周期后产生白色,这看起来并不漂亮,所以相反,我们必须将每个引脚都设置为HIGH然后等待,最后是LOW,以便循环遍历所有颜色到无穷大。

int datapin = 2;

int clockpin = 3; int latchpin = 4;

//我们还要为我们//发送到移位寄存器的数据声明一个全局变量:

byte data = 0;

void setup(){//将三个SPI引脚设置为输出:

pinMode(datapin,OUTPUT); pinMode(clockpin,OUTPUT); pinMode(latchpin,OUTPUT); }

void loop(){

oneAfterAnother();//全部打开,全部关闭

}

void shiftWrite(int desiredPin,boolean desiredState)

{//首先我们将改变全局变量“data”,将//所需的位更改为1或0:

bitWrite(data,desiredPin,desiredState);

//现在我们实际上将数据发送到移位寄存器。//shiftOut()函数执行//操纵数据和时钟引脚以将数据//移入移位寄存器的所有艰苦工作:

shiftOut(datapin,clockpin,MSBFIRST,data);

//一旦数据在移位寄存器中,我们仍然需要//使它出现在输出端。我们将切换//latchPin的状态,它将发信号通知移位寄存器“锁存”//数据到输出。 (Latch在高 - 到 - 低转换时激活。)

digitalWrite(latchpin,HIGH); digitalWrite(latchpin,LOW); }

void oneAfterAnother(){int index; int delayTime = 100;//在LED之间暂停的时间(毫秒)//将其缩小以便更快地切换

//打开所有LED:

//这对于()循环将步骤索引从0到7//(在变量之后加上“++”表示添加一个)//然后将使用digitalWrite()打开LED。

for(index = 0; index 《= 7; index ++){shiftWrite(index,HIGH);延迟(delayTime); }

//关闭所有LED:

//这个for()循环将索引从7步骤变为0//(在变量之后加上“ - ”表示减去一个来自它)//然后将使用digitalWrite()将该LED关闭。

for(index = 7; index》 = 0; index--){shiftWrite(index,LOW);延迟(delayTime); }

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分