教学原文参考:灯光绕圈圈 ( 数字函式 )
这篇文章会介绍如何使用「函式」、「逻辑判断」、「重复无限次」、「变数」、「点亮」、「加减乘除」等积木,做出计算亮灯数量,并让灯光在 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 灯的程序:
完成後,重新启动 micro:bit,就会看见灯光绕着外圈依序亮起。
如果只要让单一颗灯亮起,不要所有灯都亮,可以透过修改函式着手,将滑鼠移到函式积木上方,按下右键,点选「编辑函式」。
点选上方「布林值」按钮,替函式增加布林值的参数,并将名称命名为「亮灯」。
教学参考:函式参数
修改函式积木,在最下方新增逻辑判断,判断「如果亮灯等於 true,就点亮这个座标的灯」,「如果亮灯等於 false,就熄灭这个座标的灯」。
最後修改重复无限次积木,加入「呼叫灯数」函式,灯数设定为 a - 1,并将亮灯设为 flase,就能将前一颗灯熄灭,接着放入一个逻辑判断,判断如果 a 大於 16,就让 a 从 1 开始。
完成後,重新启动 micro:bit,就会看到一颗灯不断绕着画面转圈。
范例解答:灯光绕圈圈 ( 数字函式 )
如果已经熟悉了灯光绕圈圈 ( 数字函式 ) 的原理,还可以尝试更多好玩的作法:
- 尝试让 LED 从另外一个方向 ( 逆时针 ) 绕圈圈 ( 解答 )。
大家好,我是 OXXO,是个即将迈入中年的斜杠青年,如果对我有点兴趣(笑,可以与我联系,一起来做点有玩又有创意的东西吧!
<<: [Day03]程序菜鸟自学C++资料结构演算法 – 常见的线性串列其一:阵列Array List
(「哪些Guide与设计模式是无用的?」「全部!」) 「设计模式 Design Patten」 这东...
把二元树展开成linked list,而且顺序要跟preorder traversal一样,三种tr...
这篇要做的:把订单日期改用 jQuery UI DatePicker + vue component...
SQL Injection是攻击者控制资料驱动的Web Application和Web最常见和最具破...
目前最常被开发者使用的资料库系统为关联式资料 NoSQL: 全名为「Not only SQL」,也就...