今天玩了一下跑马灯效果。跑马灯实际上是10段数码管,实物图如下:
其原理很简单,无非就是并行排列起来的10个LED灯,每个灯有两个引脚,总共二十个引脚。我们所要做的也仅仅是把这些灯连接到Arduino上。用一小块面包板就可以做了。
我用的跑马灯型号是SB401010K,有字的这面阵脚是负的,无字那面是正的。
自己编了两小段代码:
第一段代码实现的功能是灯从右到左,再从左到右以此亮起,循环往复。其中用到了数组。代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<span style="color: #CC6600;">int</span> pin[10]={2,3,4,5,6,7,8,9,10,11}; <span style="color: #CC6600;">int</span> <span style="color: #CC6600;">step</span>=1; <span style="color: #CC6600;">void</span> <span style="color: #CC6600;"><b>setup</b></span>() { <span style="color: #CC6600;">for</span>(<span style="color: #CC6600;">int</span> i=0;i<10;i++) { <span style="color: #CC6600;">pinMode</span>(pin[i],<span style="color: #006699;">OUTPUT</span>); } } <span style="color: #CC6600;">void</span> <span style="color: #CC6600;"><b>loop</b></span>() { <span style="color: #CC6600;">for</span>(<span style="color: #CC6600;">int</span> i=0;i<10;i=i+<span style="color: #CC6600;">step</span>) { <span style="color: #CC6600;">digitalWrite</span>(pin[i],<span style="color: #006699;">HIGH</span>); <span style="color: #CC6600;">delay</span>(80); <span style="color: #CC6600;">digitalWrite</span>(pin[i],<span style="color: #006699;">LOW</span>); <span style="color: #CC6600;">if</span>(i==9) { <span style="color: #CC6600;">step</span>=-1; } <span style="color: #CC6600;">else</span> <span style="color: #CC6600;">if</span>(i==0) { <span style="color: #CC6600;">step</span>=1; } } } |
第二段代码实现的功能是奇数位灯管亮起一段时间后灭掉,同时偶数位灯管亮起一段时间后灭掉,然后循环往复。代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<span style="color: #CC6600;">int</span> pin[10]={2,3,4,5,6,7,8,9,10,11}; <span style="color: #CC6600;">void</span> <span style="color: #CC6600;"><b>setup</b></span>() { <span style="color: #CC6600;">for</span>(<span style="color: #CC6600;">int</span> i=0;i<10;i++) { <span style="color: #CC6600;">pinMode</span>(pin[i],<span style="color: #006699;">OUTPUT</span>); } } <span style="color: #CC6600;">void</span> <span style="color: #CC6600;"><b>loop</b></span>() { <span style="color: #CC6600;">for</span>(<span style="color: #CC6600;">int</span> i=0;i<10;i=i+2) { <span style="color: #CC6600;">digitalWrite</span>(pin[i],<span style="color: #006699;">HIGH</span>); } <span style="color: #CC6600;">delay</span>(200); <span style="color: #CC6600;">for</span>(<span style="color: #CC6600;">int</span> i=0;i<10;i=i+2) { <span style="color: #CC6600;">digitalWrite</span>(pin[i],<span style="color: #006699;">LOW</span>); } <span style="color: #CC6600;">for</span>(<span style="color: #CC6600;">int</span> i=1;i<10;i=i+2) { <span style="color: #CC6600;">digitalWrite</span>(pin[i],<span style="color: #006699;">HIGH</span>); } <span style="color: #CC6600;">delay</span>(200); <span style="color: #CC6600;">for</span>(<span style="color: #CC6600;">int</span> i=1;i<10;i=i+2) { <span style="color: #CC6600;">digitalWrite</span>(pin[i],<span style="color: #006699;">LOW</span>); } } |