1. 文档中心
  2. 比卜创造 Micro:bit
  3. API 参考
  4. 加速度计

加速度计

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)