项目地址:https://www.tinkercad.com/things/5nsSWyQOAkI-chenillard
// Arduino Pattern Creator by PhilCam // http://my.free.time.free.fr/ // Use with Uno R3 + 74HC595 + 8 leds int dataPin = 2; int latchPin = 3; int clockPin = 4; int seq[] = {128, 192, 224, 240, 248, 252, 254, 255, 127, 63, 31, 15, 7, 3, 1, 0, 1, 3, 7, 15, 31, 63, 127, 255, 254, 252, 248, 240, 224, 192, 128, 0}; void setup() { pinMode(dataPin, OUTPUT); pinMode(latchPin, OUTPUT); pinMode(clockPin, OUTPUT); } void loop() { for (int n = 0; n < 32; n++) { digitalWrite(latchPin, LOW); //Pull latch LOW to start sending data shiftOut(dataPin, clockPin, MSBFIRST, seq[n]); //Send the data digitalWrite(latchPin, HIGH); //Pull latch HIGH to stop sending data delay(100); } }
如果需要做8个LED灯或者16个LED灯的跑马灯效果时,数字引脚(Digital Pin)明显会不够用;这时我们可以使用寄存器来实现数字引脚的扩充,这里使用了74HC595这个型号的位移缓存器进行实验。
先看下74HC595的引脚说明,共16个引脚,8个输出引脚对应可以控制8个LED,详情参考下图:
74HC595寄存器可以简单的理解为是一组8个的开关组,如上图(8个开关控制LED),这组开关的开关用0和1来控制,0为关,1为开。要让这组灯从左到右像跑马灯那样逐个亮,可以简单列出来这组开关:
按顺序循环上面这组开关就是一个跑马灯。要让寄存器出现这样的开关组,只需要把这组开关转换成十进制(这八组开关对应的十进制数字为: 128, 64, 32, 16, 8, 4, 2, 1 ),然后往寄存器写即可;
TIPS:
引用一个图,可以直观对寄存器的理解。
用Tinkercad学arduino之 74HC595寄存器控制8个led跑马灯
原文:https://www.cnblogs.com/meetrice/p/14081962.html