电子说
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 :代码
我们无法打开并使用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); }
全部0条评论
快来发表一下你的评论吧 !