第 1 步:制作
这是什么?
制作一个可以"吹灭"的电子蜡烛! 新版micro:bit内置的麦克风可检测到你的呼吸声,将蜡烛熄灭,随后再将其点亮。
介绍
编程指南
学习目标
- 如何使用随机数来点亮随机的LED
- 如何根据传感器输入来切换输出
- 如何使用布尔逻辑来切换开关的作用,对同一触发事件做出开或者关的反应。
工作原理
- 程序将选取一个1到3之间的随机数,并将其存储在变量flicker中。
- 这个数字被用于随机地点亮或关闭LED灯,使其看起来像是火焰在闪烁。
- micro:bit的LED灯以网格状排列,列和行号均为从0到4。 程序会根据flicker变量中存储的随机数打开和关闭位于屏幕最上方一行的LED灯 。
- LED灯的坐标位置标注方法为先从左到右的横向(x轴),再从上到下的纵向(y轴)。 火焰的中心位置处于坐标2,0。
- 永远的循环保持动画一直运行。
- 此程序使用名为lit的变量来记录蜡烛是处于点亮还是熄灭的状态。 这是一个布尔变量。 布尔变量只能有两种值:True(点亮)或False(熄灭)。
- 当麦克风传感器感应到一声大的声响时,例如你对着它吹气,程序会将变量lit的值反转成与当前值相反的值。 因此,当你对着麦克风吹气时,如果lit的值为true, 它会变为false,然后屏幕被清空,所有的LED灯关闭。
- 如果lit的值为false, 那它会被设成true,随后重新显示动画。
所需材料
- 一个micro:bit
- MakeCode或者Python编辑器
- 电池盒(选配)
第 2 步:编程
1from microbit import *
2import random
3
4lit = True
5
6while True:
7 if microphone.was_event(SoundEvent.LOUD):
8 lit = not lit
9 sleep(500)
10 if lit:
11 display.show(Image(
12 "00900:"
13 "09990:"
14 "09990:"
15 "09990:"
16 "09990"))
17 sleep(150)
18 flicker = random.randint(1, 3)
19 if flicker != 2:
20 display.set_pixel(2,0,0)
21 display.set_pixel(flicker,0,9)
22 sleep(150)
23 else:
24 display.clear()
第3步:完善
- 创建你自己的动画设计,用声音来开启或者关闭。
- 你可以通过在“on start”模块中添加“set loud sound threshold”模块来设置声响阈值,从而使“on loud sound”模块更灵敏或者相反。 这些可以在Input和“...more”菜单中找到。 对较小的声音使用小的数字,对响亮的声音使用较大的数字。
- 在Python中,要更改声音的阈值,请使用
microphone.set_minimum (SoundEvent.LOUD,128)
, 将其放置在while True:
循环之前,将号码128更改为你想要的声响值。 这个数字可以是0到255之间的任何数,255是最响的声音。
This content is published under a Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) licence.