микробитный компас в микропифоне - PullRequest
0 голосов
/ 03 июля 2018

У меня есть микробитный проект, в котором микробит вставлен в робот kiktronics вертикально.

Я бы хотел получить заголовок робота, но

compass.heading()

работает, только если микробит расположен горизонтально. Я попытался прочитать координаты x, y, z компаса, используя get_x (), get_y (), get_z ()

Но диапазоны чисел, которые я получаю, по-разному масштабируются для оси z и оси x, y.

Кто-нибудь знает, какие диапазоны для разных датчиков?

1 Ответ

0 голосов
/ 04 июля 2018

Я использовал тестовый код ниже. Я могу получить точное показание компаса, если сначала запустил функцию compass_calibrate (), даже если магнитометр находится в вертикальном положении.

После комментирования строки compass_calibrate () при перемещении доски вокруг 3-х осей в свободном пространстве я вижу, что значение z не так сильно меняется, как x и y. Итак, я получил маленький магнит. Перемещение по магнитометру приводит к тому, что значения x, y, z изменяются примерно в тех же пределах - это грубый эксперимент с глазным яблоком.

Глядя на таблицу данных для магнитометра MAG3110, я не вижу никаких признаков того, что ось 3 магнитометра отличается. Так почему же z-показания отличаются без внешнего поля? Я предполагаю, что в плате есть заземление. Это часто встречается в конструкции печатных плат. Это может быть щитом для оси z.

from microbit import *

# compass.calibrate()
while True:
    sleep(250)
    # c = compass.heading()
    x = compass.get_x()
    y = compass.get_y()
    z = compass.get_z()
    print('x:{} y:{} z: {}'.format(x,y,z))
...