Skip to content

活动

声音计

初学者 | MakeCode, Python | LED显示器, 麦克风 | 数据处理, 输入/输出

第 1 步:制作

它是什么?

使用新版micro:bit的麦克风传感器检测你周围的声音响度,并通过简单的柱状图显示。

介绍

编程指南

学习目标

  • 如何使用新版micro:bit的内置麦克风输入传感器测量你周围环境的声音响度
  • 如何在LED显示屏输出上用图形来表示输入传感器的数据

工作原理

  • 新版micro:bit的麦克风将检测到的声响程度用数字0至255来表示。 0表示最安静,255是它可以进行的最响的声音测量。
  • 程序使用foreever循环来持续检测麦克风输入的声响,并在LED显示屏上绘制柱状图来表示声响值。
  • 测得的声音越响,柱状图就越高。

所需材料

  • 新版含音频设备的micro:bit(或者MakeCode模拟器)
  • MakeCode或者Python编辑器
  • 电池盒(选配)

第 2 步:编程

1from microbit import *
2
3# function to map any range of numbers to another range
4def map(value, fromMin, fromMax, toMin, toMax):
5    fromRange = fromMax - fromMin
6    toRange = toMax - toMin
7    valueScaled = float(value - fromMin) / float(fromRange)
8    return toMin + (valueScaled * toRange)
9
10# set of images for simple bar chart
11graph5 = Image("99999:"
12               "99999:"
13               "99999:"
14               "99999:"
15               "99999")
16
17graph4 = Image("00000:"
18               "99999:"
19               "99999:"
20               "99999:"
21               "99999")
22
23graph3 = Image("00000:"
24               "00000:"
25               "99999:"
26               "99999:"
27               "99999")
28
29graph2 = Image("00000:"
30               "00000:"
31               "00000:"
32               "99999:"
33               "99999")
34
35graph1 = Image("00000:"
36               "00000:"
37               "00000:"
38               "00000:"
39               "99999")
40               
41graph0 = Image("00000:"
42               "00000:"
43               "00000:"
44               "00000:"
45               "00000")
46
47allGraphs = [graph0, graph1, graph2, graph3, graph4, graph5]
48               
49# ignore first sound level reading
50soundLevel = microphone.sound_level()
51sleep(200)
52
53while True:
54    # map sound levels from range 0-255 to range 0-5 for choosing graph image
55    soundLevel = int(map(microphone.sound_level(), 0, 255, 0, 5))
56    display.show(allGraphs[soundLevel])
57            

第 3 步:完善

  • 创建你自己的方式来显示声音响度,例如根据不同的声响来显示不同的表情符号
  • 制作一个虚拟噪音警报器,仅当声音超过某个级别时闪烁——可以使用它来帮助你的课堂保持安静