灯光绕圈 ( 数字函数 )
这篇文章会介绍如何使用“函数”、“逻辑判断”、“重复无限次”、“变数”、“点亮”、“加减乘除”等积木,做出计算亮灯数量,并让灯光在 micro:bit LED 外围绕圈圈的光线效果。
积木程序原理
有别于“灯光绕圈圈 ( 座标 )”是使用座标的方式绕圈,这边要建立一个“灯数”的函数来进行绕圈,开始前先定义每个灯的数字,最外圈总共有 16 个灯,从左上开始顺时针绕一圈,定义 1~16 的数字。
因为 micro:bit 是以每个 LED 的“座标”来亮灯,所以如果要使用“灯数”,最后仍然必须转换为座标的方式,转换公式如下 ( 灯数以 num 表示 ):
| 灯数 | x | y |
|---|---|---|
| 1~5 | num - 1 | 0 |
| 6~8 | 4 | num - 5 |
| 9~13 | 13 - num | 4 |
| 13~16 | 0 | 17-num |
了解原理后,开始实作程序积木,首先建立一个函数,函数名称命名为“灯数”,并在函数里加入一个 num 的变数。
函数建立后,按照之前灯数和 xy 座标的定义,使用逻辑判断、变数、加减乘除积木,组合成下图的程序。
最后要进行执行函数点亮 LED 灯的程序:
- 当启动时,建立一个变数 a,并将 a 设定为 0。
- 在重复无限次积木里,每次重复时将变数 a 的数值增加 1,并呼叫函数
- 函数根据变数 a 的数值,点亮指定的灯。
- 每次重复暂停 100 毫秒。
完成后,重新启动 micro:bit,就会看见灯光绕着外圈依序亮起。
如果只要让单一颗灯亮起,不要所有灯都亮,可以透过修改函数着手,将鼠标移到函数积木上方,按下右键,点选“编辑函数”。
点选上方“布尔值”按钮,替函数增加布尔值的参数,并将名称命名为“亮灯”。
教学参考:函数参数
修改函数积木,在最下方新增逻辑判断,判断“如果亮灯等于 true,就点亮这个座标的灯”,“如果亮灯等于 false,就熄灭这个座标的灯”。
最后修改重复无限次积木,加入“呼叫灯数”函数,灯数设定为 a - 1,并将亮灯设为 flase,就能将前一颗灯熄灭,接着放入一个逻辑判断,判断如果 a 大于 16,就让 a 从 1 开始。
完成后,重新启动 micro:bit,就会看到一颗灯不断绕着画面转圈。
范例解答
范例解答:灯光绕圈圈 ( 数字函数 )
延伸练习
如果已经熟悉了灯光绕圈圈 ( 数字函数 ) 的原理,还可以尝试更多好玩的作法:
- 尝试让 LED 从另外一个方向 ( 逆时针 ) 绕圈圈 ( 解答 )。
微信扫码关注
抖音扫码关注