Skip to content

活动

蜡烛

中级 | MakeCode, Python | LED显示器, 麦克风 | 传感器, 布尔逻辑, 选择

第 1 步:制作

这是什么?

制作一个可以"吹灭"的电子蜡烛! 新版micro:bit内置的麦克风可检测到你的呼吸声,将蜡烛熄灭,随后再将其点亮。

介绍

编程指南

学习目标

  • 如何使用随机数来点亮随机的LED
  • 如何根据传感器输入来切换输出
  • 如何使用布尔逻辑来切换开关的作用,对同一触发事件做出开或者关的反应。

工作原理

  • 程序将选取一个1到3之间的随机数,并将其存储在变量flicker中。
  • 这个数字被用于随机地点亮或关闭LED灯,使其看起来像是火焰在闪烁。
  • micro:bit的LED灯以网格状排列,列和行号均为从0到4。 程序会根据flicker变量中存储的随机数打开和关闭位于屏幕最上方一行的LED灯 。
  • LED灯的坐标位置标注方法为先从左到右的横向(x轴),再从上到下的纵向(y轴)。 火焰的中心位置处于坐标2,0。
网格用于显示micro:bit的LED灯的坐标
  • 永远的循环保持动画一直运行。
  • 此程序使用名为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是最响的声音。