Movement(移动)
microbit自带三轴加速计:
- 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轴的测量,叫做读数。因为加速度计很灵敏,所以我们的测量范围是+/-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()
给扬声器传入特定频率的音调,并播放指定时间。