话筒 V2¶
此对象允许您访问 micro:bit V2上可用的内置麦克风。它可用于响应声音。麦克风输入位于电路板正面,旁边是麦克风活动 LED,使用麦克风时该 LED 会亮起。
声音事件¶
麦克风可以根据声音的幅度和波长响应一组预定义的声音事件。
这些声音事件由SoundEvent
类的实例表示,可通过 中的变量访问microbit.SoundEvent
:
microbit.SoundEvent.QUIET
:表示声音事件的推移,loud
到quiet
喜欢说话或背景音乐。microbit.SoundEvent.LOUD
: 表示声音事件的推移,quiet
到loud
象拍手或喊叫。
职能¶
-
microbit.microphone.
current_event
()¶ - 返回: 最后录制的声音事件的名称,
SoundEvent('loud')
或SoundEvent('quiet')
.
- 返回: 最后录制的声音事件的名称,
-
microbit.microphone.
was_event
(event)¶ - event: 声音事件,例如
SoundEvent.LOUD
或SoundEvent.QUIET
. - 返回:
true
如果自上次调用以来至少听到一次声音,否则false
。was_event()
还会在返回之前清除声音事件历史记录。
- event: 声音事件,例如
-
microbit.microphone.
is_event
(event)¶ - event: 声音事件,例如
SoundEvent.LOUD
或SoundEvent.QUIET
. - 返回:
true
如果声音事件是自上次调用以来最近的事件,否则false
。它不会清除声音事件历史记录。
- event: 声音事件,例如
-
microbit.microphone.
get_events
()¶ - 返回:事件历史的元组。最新的列在最后。
get_events()
还会在返回之前清除声音事件历史记录。
- 返回:事件历史的元组。最新的列在最后。
-
microbit.microphone.
set_threshold
(event, value)¶ - event:声音事件,例如
SoundEvent.LOUD
或SoundEvent.QUIET
. - value:0-255 范围内的阈值级别。例如, 只有在声音很大(> = 250)时才会触发。
set_threshold(SoundEvent.LOUD, 250)
- event:声音事件,例如
-
microbit.microphone.
sound_level
()¶ - return: 0 到 255 范围内的声压级表示。
例子¶
一个例子,贯穿了麦克风 API 的一些功能:
# Basic test for microphone. This test should update the display when
# Button A is pressed and a loud or quiet sound *is* heard, printing the
# results. On Button B this test should update the display when a loud or
# quiet sound *was* heard, printing the results. On shake this should print
# the last sounds heard, you should try this test whilst making a loud sound
# and a quiet one before you shake.
from microbit import *
display.clear()
sound = microphone.current_event()
while True:
if button_a.is_pressed():
if microphone.current_event() == SoundEvent.LOUD:
display.show(Image.SQUARE)
uart.write('isLoud\n')
elif microphone.current_event() == SoundEvent.QUIET:
display.show(Image.SQUARE_SMALL)
uart.write('isQuiet\n')
sleep(500)
display.clear()
if button_b.is_pressed():
if microphone.was_event(SoundEvent.LOUD):
display.show(Image.SQUARE)
uart.write('wasLoud\n')
elif microphone.was_event(SoundEvent.QUIET):
display.show(Image.SQUARE_SMALL)
uart.write('wasQuiet\n')
else:
display.clear()
sleep(500)
display.clear()
if accelerometer.was_gesture('shake'):
sounds = microphone.get_events()
soundLevel = microphone.sound_level()
print(soundLevel)
for sound in sounds:
if sound == SoundEvent.LOUD:
display.show(Image.SQUARE)
elif sound == SoundEvent.QUIET:
display.show(Image.SQUARE_SMALL)
else:
display.clear()
print(sound)
sleep(500)