30. 7.3 指南针

micro:bit主板带有一个指南针,可以精确的根据地球磁场判断方向(根据初始化情况而定),每次调用前都需要初始化模块,如果你需要设计制作气象站,可以根据此模块计算风向。

../_images/2UMV4MA1.png

30.1. 指南针API

API 描述
microbit.compass.calibrate() 初始化指南针模块,详情见温馨提示。
microbit.compass.is_calibrated() 如果指南针已成功校准吗,返回True否则返回False。
microbit.compass.clear_calibration() 撤销校准,使指南针再次校准。
microbit.compass.get_x() 根据磁场力,给出X轴上的读数,返回值为正整数或者负整数。
microbit.compass.get_y() 根据磁场力,给出y轴上的读数,返回值为正整数或者负整数。
microbit.compass.get_z() 根据磁场力,给出z轴上的读数,返回值为正整数或者负整数。
microbit.compass.heading() 根据上述数值,计算出方向,以度为单位表示,顺时针方向,正北方返回值为0,范围为0~360度。
microbit.compass.get_field_strength() 测量设备周围磁场强度,返回值为整数。

***温馨提示:***每次使用指南针之前都需要初始化校准,校准是一个小游戏,旋转移动micro:bit使LED屏上完成一个圆,校准成功会显示一个笑脸。

../_images/V4wZAP11.png ../_images/EW3J71r1.png

30.2. 示例:简易的指南针

  • 用指南针模块和点阵显示屏模块完成一个简单的指南针,还记得在点阵显示屏那一章中提到了内置图像有clocks时钟类型,时钟的时针就像是指南针的表针一样,可以用这个来表示北方。


from microbit import *

compass.calibrate()							#初始化指南针模块

while True:
    sleep(100)
    needle = ((15 - compass.heading()) // 30) % 12			#处理指南针模块返回参数
    display.show(Image.ALL_CLOCKS[needle])					#根据参数needle,显示ALL_CLOCKS列表中的图像来指示北方方向