Мне нужно что бы он поворачивал ровно на 90 градусов. Как это организовать? Я новичек только начал изучать.
В модуле есть магнитометр. Им можно видеть магнитное поле Земли, по нему и ориентируйтесь. Но надо понимать что повернет он с какой-то точностью, не ровно 90 градусов. Плюс магнетометра в том, что ошибка поворота накапливаться не будет, тк каждый новый поворот будет ориентироваться на абсолютное значение угла магнитного поля. Второй вариант (гироскоп) по началу даже не рассматривайте. Будет непросто добиться стабильного результата.
Не представляю как это сделать . Не могли бы помочь со скетчем? Или хотя бы пример скетча похожего . Что бы было на что опираться
Начните по шагам: 1. Взять пример с модулем и выводите в serial значение магнитного угла 2. Подключите кнопку по нажатии которой запомнится угол +90 градусов и добавьте к выводу в serial символ который будет показывать достигнут нужный угол или нет. Нажмете кнопку и будете вращать модуль пока не напишет что угол достигнут 3. Берете машинку. Пишете код, который по нажатию кнопки повернет колеса и поедет. 4. Объединяете скетчи и машинка будет поворачивать пока не повернется на 90 градусов.
Набираете в гугле "GY-85 arduino library" и первой ссылкой библиотека на github: https://github.com/sqrtmo/GY-85-arduino с примером.
Попробовал этот скеч. Но там не линейная зависимость угла поворота от магнитного поля. Как быть с этим? не пойму закономерность
Т.е. вы все подключили и скетч в примере показывает стабильные данные в покое и что-то меняется при повороте? Это хорошо. Теперь, у вас не углы, а проекция магнитного вектора на оси. Если машинка ездит по ровной поверхности, то проекцией на ось z можно пренебречь и угол вычисляется так: float heading = atan2(mag_y, mag_x); В этой переменной будет угол в радианах. Вывести ее в serial соответственно: Serial.print(heading);
Сильных магнитов рядом нет? И надо убедиться что данные читаются нормально. Для этого крутите датчик в разных осях и смотрите на показания акселерометра. В покое он видит ускорение свободного падения, те одна ось будет показывать значительно больше, чем остальные. При повторе на бок это "большое" значение должно переползти на другую ось. Если такое наблюдение есть, то данные читаются верно.
магнитов нет проверил по вашей методике . все работает нормально но с углами какая то не разбериха. Не может быть какие то ошибки в библиотеке