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

第10课.拔河比赛

[复制链接]
10.拔河比赛

星火课程团队

欢迎来到树莓派课堂。拔河比赛是我们经常玩的一个体育项目,人数相等的双方对拉一根粗绳以比较力量的对抗性,这个比赛既是双方的力量对决也是双方合作默契的对决,这节课我们就借助灯带模拟一下拔河比赛。
知识点:
1.临界值
2.函数的使用
所需硬件:
树莓派主板、古德微扩展板、灯带
1.临界值
首先我们来了解一下什么是临界值。临界值是指物体从一种物理状态转变到另外一种物理状态时,某一物理量所要满足的条件,相当于数学中常说的驻点。
在编程时往往需要注意临界值,并加以处理。简单来说我们可以把临界值看作一个触发条件,当达到临界值时,可能需要做一些特殊的处理。
比如说,在我们用灯带制作的拔河比赛中,临界状态是指以一种颜色完全点亮灯带时,另一种颜色开始覆盖前一种颜色并逐个点亮灯带,两种颜色互换时便是我们这个程序的临界值,我们用“加减转换标志”来表示临界值。
2. 设计原理
    需要控制的LED灯的个数为目标最大值,比赛的红蓝双方以“目标位置”为界左边靠近输入端的是红灯,靠近输出端的是蓝灯,如果目标位置小于目标最大值那么继续向前依次点亮红灯,蓝色的灯逐渐被红色的灯取代,如果目标位置等于目标最大值达到临界值即此时灯带全部显示红灯,那么从目标最大值开始依次向前点亮蓝色的灯,红色的灯逐渐被蓝色的灯取代。
第10课.拔河比赛图1

3. 硬件连接
灯带连接到扩展板18号接口
4. 编写程序
首先新建变量“目标位置”、“目标最大值”和“加减转换标志”,并分别赋值“目标位置”、“目标最大值”为0和60。初始化灯带,首先判断是否处于临界状态,如果“目标位置”等于0赋值“加减转换标志”为1,如果“目标位置”等于“目标最大值”赋值“加减转换标志”为0。如果“加减转换标志”为1,赋值“目标位置”等于“目标位置”加1,灯带从0到“目标位置”点亮红色,从“目标位置”到“目标最大值”点亮蓝色,否则赋值“目标位置”等于“目标位置”减1,灯带从0到“目标位置”点亮红色,从“目标位置”到“目标最大值”点亮蓝色。
第10课.拔河比赛图2


我们看到红色框中的两段程序是一样的,这两段重复的程序让整个程序显得很臃肿,如何给这个程序瘦身呢,接下来我们学习一下函数,利用函数可以实现程序的瘦身效果。
首先找到函数模块,函数有两种:
1无返回值函数
2有返回值函数
本课我们使用第一种无返回值函数,将函数积木拖拽到编辑区,重新命名函数名,我们在命名函数时,需要注意做到函数名尽可能要“见文知义”。在本课中函数时用来控制灯带的,所以我们起名为“灯带控制”。此时在函数模块中出现了“灯带控制”积木,
第10课.拔河比赛图3
把之前程序中重复的部分拖到“灯带控制”函数中,删除原程序中的程序段,把“灯带控制”积木拖入到程序中,主程序是不是简单了许多呢?

第10课.拔河比赛图4
第10课.拔河比赛图5

大家看一下我们的主程序能否继续利用函数瘦身呢?聪明的你可能已将有答案了,没错,我们还可以对红框部分利用函数把主程序继续简化。
第10课.拔河比赛图6



新建一个函数名为“更新目标位置”把更新目标位置的程序拖进去,在主程序中使用“更新目标位置”积木。具体程序如下:


第10课.拔河比赛图7
第10课.拔河比赛图8
第10课.拔河比赛图9
我们用灯带模拟的拔河比赛是两队都一输输到底的情况,如果要在开始端和结束端个保留一个灯,该如何编写程序呢?聪明的你赶紧挑战一下吧,以下是参考程序,这节到这里,下节再见。
第10课.拔河比赛图10

第10课.拔河比赛图11
第10课.拔河比赛图12



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

本版积分规则

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

硬件清单

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

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

mail