Movement(移动)

microbit自带三轴加速计:

每个方向都有一种方法,它返回一个正数或负数,当读数为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("-")

如果你把设备固定住,它应该显示-,然后向左或向右旋转它会分别显示LR

我们想要设备能够不断地根据变化作出反应,因此我们使用while死循环。
在循环体内部做的第一件事是沿着X轴的测量,叫做读数。因为加速度计很灵敏,所以我们的测量范围是+/-20。如果读数在-20到20之间,那么我们认为它是水平的。对于每一种情况,我们使用show()来显示相应的字符。

还有用于Y轴的get_y()方法和Z轴的get_z()方法。

手机的一些重力感应游戏,使用的加速度计和上面的程序是一样的。游戏控制器包含加速计,帮助你在游戏中操控和移动。

控制播放音乐:

microbit可以和不同的设备连接在一起,实现不同的功能。
例如,让我们把它变成一种乐器。

连接扬声器,就像在音乐教程中一样。使用鳄鱼夹将引脚pin0和GND连接到扬声器的正极和负极。

如果我们从加速度计读取数据并将其作为音调播放,会发生什么?

我们来看看:

from microbit import *
import music

while True:
    music.pitch(accelerometer.get_y(), 10)

非常简单。我们将Y轴读取的值传入music.pitch()方法。我们只让它播放10毫秒,因为我们希望音调随着设备的翻转而迅速改变。由于该程序处于while循环,因此它会一直对Y轴上的变化做出反应。music.pitch()给扬声器传入特定频率的音调,并播放指定时间。