3719浏览
查看: 3719|回复: 1

[教程] 第4课.夜骑警示灯

[复制链接]
本帖最后由 dafeng388 于 2019-11-8 15:58 编辑

4.夜骑警示灯
星火课程团队




欢迎来到树莓派课堂。
循环和变量的结合可以实现丰富的程序变化,上节课我们通过for循环与全局变量delay的结合,简化了程序的编写,这节课我们将进一步学习如何使用循环和变量来实现多端口的输出控制,做一个酷炫的夜骑警示灯。

知识点:
1.   杜邦线
2.   程序循环控制
3.   局部变量及其应用
首先来看一下本节课的案例,一个炫酷的夜骑警示灯。这个作品上的三个LED灯相继闪烁,在晚上骑自行车的时候,如果把这个警示灯挂在车尾就可以对后面的车辆起一个提醒的作用,不要小瞧这款警示灯,它是夜骑者的守护之光。
本节课我们会讲两个小案例,第一个案例是用变量来控制输出端口制作一个以相同频率依次闪烁的警示灯;第二个案例呢,在调整不同LED的闪烁时长来制作一个可变速闪烁的警示灯。

硬件连接:
本节课我们需要的硬件有:树莓派主板,古德微扩展板,三个不同颜色的LED灯,公对母杜邦线5根,母对母杜邦线1根。
我们先来认识一下杜邦线。杜邦线有三种,公对公、公对母、母对母,实际操作中要根据实际情况选择对口的杜邦线。
(视频)现在我们就借助杜邦线将这3个LED灯连接到古德微扩展板的23.24.25三个引脚上。首先我们将LED灯的负极连接到扩展板的GND上,接下来再将LED灯的正极分别连接到23、24、25三个GPIO管脚。

编写程序:
硬件搭建好,接下来我们来编写程序。
首先是标准版的夜行警示灯。前几节课我们用“智能硬件” 常用模块中的“控制几号小灯亮”积木来控制灯的亮灭。这节课我们使用“基础”模块中“设置GPIO为”这块积木也可以控制灯的亮灭。当GPIO=1为高电平时,灯亮。当GPIO=0 为低电平时,灯灭。加上等待时间0.2秒,我们想让三盏LED灯依次循环点亮,我们继续使用“循环”模块中将for循环积木将初始值修改为23,终止值修改为25,将变量中的i移到GPIO后,表示使用变量i来替换23-25GPIO不同的管脚号。加上重复执行,检查一下程序,没有错误就可以上传程序看一下效果啰。

(视频)三个LED灯以相同的时长依次亮灭。

接下来我们来编写升级版的变速安全警示灯。(视频)变速闪烁,灯的亮灭持续时间在每一次循环当中保持一致,但在不同的循环当中都有变化,所以我们需要引入一个额外的循环来实现。

第一步我们新建一个“delay”变量来定义灯闪烁的时间间隔(0.02),接下来添加一个for循环,这个循环的作用是提供变速闪烁过程中的延时倍数,数值保持默认就可以了。随后再添加一个for循环模块,新建变量j,将此for循环变量修改为j,起始值修改为23,终止值修改为25,添加一个设置GPIO积木,并修改管脚号为变量j,我们增加一下等待延时函数,将等待延时时长修改为i倍的标准时间delay,再复制一个GPIO积木和等待延时积木,修改GPIO电平输出状态为0.最后我们加上重复执行,检查一下程序,无误就可以上传啰。你瞧,升级版变速安全警示灯做好了。现在我们可以看到三个LED灯的闪烁时长有了更多的变化。

知识梳理:
在今天的课程中,我们首先讲解了如何使用for循环来实现多端口的输出控制;然后又使用了两个嵌套的for循环引入了两个循环变量i和j,从而实现了更加复杂的输出控制。

全局变量:在这个程序中的变量delay,可以被任何一个for循环内的延时函数直接调用,我们称之为全局变量。

局部变量:而循环变量i和j,循环变量i在外,j在内,所以j只能被自身的for循环调用,而i变量则可以被内外两个for循环调用,但i不可被这两个for循环外的程序语句调用。像这种仅可以被某个函数内部调用的变量我们称之为局部变量。

今天的程序虽然在复杂度上提升了很多,但程序的结果呢因变量而变,两个变量的叠加会使程序变化更加丰富。你可以再发挥想象,如何能够用更复杂的循环嵌套来实现更加丰富的LED闪烁效果呢?期待你的精彩分享。今天的课程就到这里,下节再见!
想看视频,请关注:
第4课.夜骑警示灯图1
有兴趣的朋友可加QQ群451441202交流心得。
课程由星火课程团队制作,版权归杭州古德微机器人有限公司所有。

rzyzzxw  版主

发表于 2019-11-5 16:23:45

老师,这一课还要再完善一下吧。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail