移动¶
您的 BBC micro:bit 带有加速计。它测量沿三个轴的运动:
- X - 从左向右倾斜。
- Y - 向前和向后倾斜。
- Z - 上下移动。
每个轴都有一种返回正数或负数的方法,指示以毫克为单位的测量值。当读数为 0 时,您沿该特定轴处于“水平”状态。
例如,这是一个非常简单的水平仪,用于 get_x
测量设备沿 X 轴的水平:
from microbit import *
while True:
reading = accelerometer.get_x()
if reading > 20:
display.show("R")
elif reading < -20:
display.show("L")
else:
display.show("-")
如果您将设备平放,它应该显示-
;但是,向左或向右旋转它,它会分别显示L
和 R
。
我们希望设备不断对变化做出反应,因此我们使用了无限while
循环。在循环体内发生的第一件事是沿 X 轴的测量,称为reading
。因为加速度计非常敏感,我在范围内设置了 +/-20 级。这就是if
和 elif
条件检查and 的原因。该 语句意味着如果介于 -20 和 20 之间,则我们认为它是水平的。对于这些条件中的每一个,我们使用显示器来显示适当的字符。> 20
< -20
else
reading
get_y
Y轴也有 get_z
方法,Z轴也有方法。
如果您曾经想知道手机如何知道在其屏幕上显示图像的方式,那是因为它使用加速度计的方式与上述程序完全相同。游戏控制器还包含加速计,可帮助您在游戏中转向和移动。
音乐混乱¶
BBC micro:bit 上的 MicroPython 最美妙的方面之一是它如何让您轻松地将设备的不同功能链接在一起。例如,让我们把它变成一种乐器(各种各样)。
像在音乐教程中一样连接扬声器。使用鳄鱼夹将引脚 0 和 GND 连接到扬声器的正负输入端 - 它们连接到扬声器的方向无关紧要。
如果我们从加速度计中获取读数并将它们作为音高播放会发生什么?让我们来了解一下:
from microbit import *
import music
while True:
music.pitch(accelerometer.get_y(), 10)
关键线在最后,非常简单。我们将 Y 轴的读数嵌套为输入music.pitch
方法的频率。我们只让它播放 10 毫秒,因为我们希望在设备倾斜时音调快速变化。由于设备处于无限while
循环中,因此它不断对 Y 轴测量值的变化做出反应。
就是这样!
向前和向后倾斜设备。如果沿 Y 轴的读数为正,它将改变 micro:bit 播放的音调。
想象一下这些设备的整个交响乐团。你会弹奏曲子吗?你会如何改进程序,让 micro:bit 听起来更有音乐感?