加速度计
bibo.accelerometer 模块提供对板载加速度计的访问。
默认量程为 ±2000 mg(g 为基于标准重力的加速度单位)。可通过 accelerometer.set_range() 调整,硬件会取最接近的 2、4 或 8 g 档位。
加速度计还提供手势检测。可识别手势(字符串):
up、down、left、right、face up、face down、freefall、3g、6g、8g、shake
函数
get_x()
返回值:X 轴加速度,单位 milli-g,有符号整数。
get_y()
返回值:Y 轴加速度,单位 milli-g,有符号整数。
get_z()
返回值:Z 轴加速度,单位 milli-g,有符号整数。
get_values()
返回值:三轴读数元组 (X, Y, Z)。
get_strength()
返回三轴合成的加速度强度(X、Y、Z 的勾股和),单位 milli-g,非负整数。
current_gesture()
返回值:当前手势名称字符串。
is_gesture(name)
参数
name:手势名称字符串。
返回值:该手势当前是否激活。
was_gesture(name)
参数
name:手势名称字符串。
返回值:自上次调用以来该手势是否曾激活。
get_gestures()
返回已记录的手势历史元组(最新在最后)。调用后会清空历史。
set_range(value)
设置加速度计量程,单位为 g(标准重力),硬件会舍入为 2、4 或 8 g。
参数
value:目标量程(整数,单位 g)。
示例
魔法 8 球
提问后摇晃 micro:bit 获取「答案」:
from bibo import *
import random
answers = [
"Yes", "No", "Maybe", "Ask again", "Definitely",
]
display.scroll("Ask?")
while not accelerometer.was_gesture("shake"):
sleep(10)
display.scroll(answers[random.randint(0, len(answers) - 1)])
可在比卜创造 Python 编辑器中烧录运行。
简易障碍躲避
倾斜设备控制光标位置,避开下落障碍(示意逻辑):
from bibo import *
player_x = 2
while True:
player_x += accelerometer.get_x() // 500
player_x = max(0, min(4, player_x))
img = Image(5, 5)
img.set_pixel(player_x, 4, 9)
display.show(img)
sleep(50)