第10课.拔河比赛

2019-11-163066
AI 快速预览详细 收起
本项目通过树莓派和灯带模拟拔河比赛,学习临界值和函数的使用。项目中,灯带的颜色变化模拟了拔河比赛中的力量对决。所需硬件包括树莓派主板、古德微扩展板和灯带。通过编写程序,控制灯带的颜色变化,实现红蓝双方的对抗。项目难度适中,适合STEM教育场景,帮助孩子理解物理状态转换和编程逻辑,提升编程技能。
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



创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(0)
- 没有更多了 -