GY-85 Как с помощью этого датчика управлять поворотом машинки?

Тема в разделе "Arduino & Shields", создана пользователем Sanek7373, 26 дек 2016.

  1. Sanek7373

    Sanek7373 Нуб

    GY-85 Как с помощью этого датчика управлять поворотом машинки?
     
  2. ANV

    ANV Гуру

    А какие данные вы хотите с датчика и как они должны управлять поворотом?
     
  3. Sanek7373

    Sanek7373 Нуб

    Мне нужно что бы он поворачивал ровно на 90 градусов. Как это организовать? Я новичек только начал изучать.
     
  4. ANV

    ANV Гуру

    В модуле есть магнитометр. Им можно видеть магнитное поле Земли, по нему и ориентируйтесь.
    Но надо понимать что повернет он с какой-то точностью, не ровно 90 градусов.
    Плюс магнетометра в том, что ошибка поворота накапливаться не будет, тк каждый новый поворот будет ориентироваться на абсолютное значение угла магнитного поля.

    Второй вариант (гироскоп) по началу даже не рассматривайте. Будет непросто добиться стабильного результата.
     
  5. Sanek7373

    Sanek7373 Нуб

    Не представляю как это сделать . Не могли бы помочь со скетчем? Или хотя бы пример скетча похожего . Что бы было на что опираться
     
  6. ANV

    ANV Гуру

    Начните по шагам:
    1. Взять пример с модулем и выводите в serial значение магнитного угла
    2. Подключите кнопку по нажатии которой запомнится угол +90 градусов и добавьте к выводу в serial символ который будет показывать достигнут нужный угол или нет. Нажмете кнопку и будете вращать модуль пока не напишет что угол достигнут
    3. Берете машинку. Пишете код, который по нажатию кнопки повернет колеса и поедет.
    4. Объединяете скетчи и машинка будет поворачивать пока не повернется на 90 градусов.
     
  7. Sanek7373

    Sanek7373 Нуб

     
  8. Sanek7373

    Sanek7373 Нуб

    Не могу найти пример для этого датчика. У вас нет примера?
     
  9. ANV

    ANV Гуру

  10. Sanek7373

    Sanek7373 Нуб

    Попробовал этот скеч. Но там не линейная зависимость угла поворота от магнитного поля. Как быть с этим? не пойму закономерность
     
  11. ANV

    ANV Гуру

    Т.е. вы все подключили и скетч в примере показывает стабильные данные в покое и что-то меняется при повороте?
    Это хорошо. Теперь, у вас не углы, а проекция магнитного вектора на оси. Если машинка ездит по ровной поверхности, то проекцией на ось z можно пренебречь и угол вычисляется так:
    float heading = atan2(mag_y, mag_x);
    В этой переменной будет угол в радианах.
    Вывести ее в serial соответственно:
    Serial.print(heading);
     
  12. Sanek7373

    Sanek7373 Нуб

    Все равно цифры не о чем. Вот снимок монитора. кручу в плоскости по кругу
     

    Вложения:

  13. ANV

    ANV Гуру

    Сильных магнитов рядом нет?
    И надо убедиться что данные читаются нормально. Для этого крутите датчик в разных осях и смотрите на показания акселерометра. В покое он видит ускорение свободного падения, те одна ось будет показывать значительно больше, чем остальные. При повторе на бок это "большое" значение должно переползти на другую ось. Если такое наблюдение есть, то данные читаются верно.
     
  14. Sanek7373

    Sanek7373 Нуб

    магнитов нет проверил по вашей методике . все работает нормально но с углами какая то не разбериха. Не может быть какие то ошибки в библиотеке