加速度计
正如其名字所暗示的那样,BBC micro:bit加速度计:位测量加速度。加速度可以测量
+2g到-2g之间的加速度。
Micro:bit沿着三个轴测量运动:
- X - 从左向右倾斜。
- Y - 向前和向后倾斜。
- Z - 上下移动。
基本功能
每个轴的测量值为正数或负数,以毫欧为单位表示数值。当读数为0时,沿着该特定轴是“水平”。1024毫微克是重力加速度。
你可以一次访问一个加速度测量值,或者一次获取所有三个值并将其存储在一个列表中。现在只需使用下面的代码:
from microbit import * while True: x = accelerometer.get_x() y = accelerometer.get_y() z = accelerometer.get_z() print("x, y, z:", x, y, z) sleep(500)
上传并打开串口监视器。握住microbit LED最上面。您应该看到X和Y加速度接近零,Z加速度接近-1024。这告诉你重力相对于微位向下。翻转电路板,使LED离地面最近。Z值在+1024毫克时应为正值。如果你强烈地摇动你的micro:bit,你会看到加速度达到±2048毫克。那是因为这个加速度计被设置为测量最大值±2048毫吉-g:真实的数字可能会比这更高。
如果你想知道手机如何知道在屏幕上显示图像,那是因为它使用的加速度计与上述程序完全相同。游戏控制器还包含加速计以帮助您在游戏中引导和移动。
手势
有一个加速度计真正有趣的副作用是手势检测。如果您以某种方式(如手势)移动 micro:bit,则MicroPython可以检测到这一点。
MicroPython能够识别以下手势:up,down, left,right,face up,face down,freefall,3g,6g,8g ,shake。手势总是以字符串表示。虽然大多数的名字应该是显而易见的,并且手势应用在设备遇到的重力(当宇航员发射到空间等),这些水平。
要获得当前手势,请使用该accelerometer.current_gesture方法。其结果将成为上面列出的命名手势之一。例如,如果它是正面朝上的,这个程序会让你的设备呈现笑脸:
from microbit import * while True: gesture = accelerometer.current_gesture() if gesture == "face up": display.show(Image.HAPPY) else: display.show(Image.ANGRY)
再次,因为我们希望设备对不断变化的环境作出反应,我们使用一个while循环。在循环的范围内,当前手势被读取并放入gesture。在if有条件的检查,如果gesture是等于(Python使用测试相等,一个等号用于分配-就像我们如何分配的姿态阅读的对象)。如果手势相同, 则使用显示器来显示一张笑脸,不同,该设备就会看起来很生气!"face up"===gesture"face up"