5705浏览
查看: 5705|回复: 0

[教程] 第3课.求救信号灯

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

第3课.求救信号灯
星火课程团队




欢迎来到树莓派课堂。这节课的案例是SOS求救装置。
知识点:
1.sos灯光信号
2.for循环
3.全局变量及其应用
SOS作为世界上通用的求救信号,如果用灯光信号来表示,三短亮代表字母S,三长亮代表字母O,再接着的三短亮代表S。灯的长亮时间是短亮时间的三倍,而短亮时间则与LED两次点亮的间隔时间相同,字母与下一个字母间也有三倍短亮时间的熄灭间隔。如果使用前一节课的实现方法,发送完一次完整的SOS求救信号,需要12次亮灭控制,即48行代码,但其实SOS求救信号无外乎短亮短灭和“长亮短灭”两种闪烁方式,那有没有什么办法能够简便快捷的实现上述功能呢?这就是我们接下来要介绍的程序循环和变量的应用。
本节课所使用的元件和硬件的搭建方式与上节课相同。
程序编写:
下面我们来看一下程序如何编写。首先我们新建一个变量用于控制LED灯亮灭的持续时间,单击变量模块——创建变量——输入语义更明确的变量名“delay” 古德微平台也支持中文变量——确定,接下来为刚刚建立好的“delay”变量赋值,随后将“数学”模块中的数值积木拖拽到变量赋值积木的后面,修改数值为0.5或者是其他你想要的数值,这个数值呢是用来控制LED灯短亮和短灭的单位持续时间。为变量赋值之后,我们就可以开始SOS三个字母对应的灯光编程啦。编程之前我们先来了解
for循环及应用
for循环是程序设计中常用的循环形式之一,可以控制程序将程序代码执行特定次数。for循环中存在一个变量i,一个起始值(默认值为1),一个终止值(默认为10),一个步进值(默认为1)。
变量i的数值从1开始增加,每执行完一次循环内的程序,i的值增加步长(即i=i+步长,步长默认为1),如果i的值超过了终止值10,则停止循环,否则继续执行循环内的程序代码。
第3课.求救信号灯图1

当然起始值也可以不为1
第3课.求救信号灯图2

步进值也可以为负值,但必须为整数
第3课.求救信号灯图3
了解了for循环,我们回到古德微平台,继续我们的编程之旅。
“循环”模块将for循环积木拖拽至脚本区,修改到的值为3,之后在“智能硬件”常用模块中找到控制小灯亮灭积木并修改引脚号为5,接下来添加“时间”模块中的等待积木,将变量模块中的“delay”积木拖拽至等待积木的数值区域替换掉默认值0.1,之后复制控制小灯积木修改状态为灭,然后再复制一次等待积木,便完成了字母S的三次短亮闪烁编程了。灯光信号SO之间要有三倍短亮时间的间隔,这就需要复制一个等待函数,在数学模块中找到“数学运算”积木,将其拖拽到等待函数数值框内,添加变量“delay”修改运算为乘法运算并添加数值3,我们便完成了额外三个单位延时的程序编写了。接下来是编写字母O的灯光信号,字母O与字母S的灯光信号差别只是长亮时间延长至短亮时间的3倍,所以我们可以直接复制for循环,并修改灯亮的等待时间为3倍“delay”就可以了,同样在字母O的信号后,添加额外的三倍等待时间,之后再复制一遍字母S对应的循环程序,我们就完成了SOS信号的灯光效果编写了。每发送完一次SOS求救信号与下一次的发送之间至少要有7个单位的时间间隔,我们复制前面的等待函数修改数值为7就可以了。到这里我们的程序就编写完了,赶紧上传到树莓派主板中看一下效果吧。
知识梳理:
这节课主要讲解了如何使用循环功能实现特定次数的单一功能编程,循环的引入可以极大的简化程序代码量,而变量的引入则可以将程序中所有有数学关系的值联系到一起,并且能方便的实现批量修改。比如本案例中的信号灯亮灭的持续时间,如果想让闪烁的单位时间间隔延长至0.3秒,则只需要将程序第一行中的0.5改为0.3就可以了。赶快动手尝试一下编写自己的灯光秀吧。

完整程序:
第3课.求救信号灯图4
有兴趣的朋友可加QQ群451441202交流心得。
课程由星火课程团队制作,版权归杭州古德微机器人有限公司所有。


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

本版积分规则

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

硬件清单

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

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

mail