Как получить данные из 9DOF razor IMU напрямую в arduino mega
Конечная цель моего проекта — сделать бесколлекторный стабилизатор для дронов, используя для управления только Arduino MEGA 2560 и 9DOF IMU. На Instructables я нашел два отличных урока. Оба отличаются от моих выбранными компонентами.
Я использую следующие компоненты:
Ардуино MEGA2560
Двигатели — Quanum 2208 Precision, бесщеточный карданный мотор (httpx://goo.gl/RDBvJL)
Драйвер двигателя — H-мост L298n (httpx://goo.gl/A4ZQi5)
9DOF Razor IMU (httpx://goo.gl/myg9oj)
Я застрял с 9DOF Razor IMU. Покопавшись в Интернете, я нашел отличный туториал и репозиторий на github (httpx://goo.gl/jh2pfU). Этот учебник превосходен, и AHRS отлично работает с FTDI Basic Breakout 3.3V. Они дали мне хорошую отправную точку, но моя цель — использовать только Arduino MEGA2560 и датчики.
Я хочу подключить Arduino и 9DOF IMU напрямую и использовать данные акселерометра (Yaw, Pitch, Roll) для прямого управления двигателями. На сайте производителя Sparkfun (httpx://goo.gl/myg9oj) я не могу найти ни одного даташита исключительно для 9DOF IMU, который помог бы мне соединить Arduino и IMU. Есть только таблицы датчиков, которые есть на IMU (ITG-3200 (трехосевой гироскоп MEMS), ADXL345 (трехосевой акселерометр) и HMC5883L (трехосевой магнитометр), которые для меня бесполезны.
Вот почему я решил использовать код с этого сайта ( httpx://goo.gl/zOnYjN ), и он отлично работает. Я подключил все, как в учебнике, и Arduino SerialMonitor показал мне желаемые значения YPR. Значения загружаются очень быстро непосредственно из IMU и распечатываются на SerialMonitor.
Значения в SerialMonitor выглядят следующим образом:
YPR=72,13,1,74,-16,38
YPR=72,14,1,72,-16,39
YPR=72,12,1,71,-16,39
YPR=72,13,1,71,-16,37
YPR=72.13,1.70,-16.40…
ПОМОГИТЕ МНЕ
Это мой первый сольный проект на Arduino, и у меня много вопросов по этому поводу. Как я могу проанализировать данные, которые появляются в SerialMonitor, чтобы получить новые переменные, например. Рыскание = 72,12, тангаж = 1,74, крен = -16,39?
Возможно ли это сделать?
Есть ли у кого-нибудь опыт работы с 9DOF razor IMU и, возможно, он знает лучший способ сбора информации с акселерометра 9DOF razor IMU?
Я хочу получить три отдельные переменные, которые я буду использовать для управления бесколлекторным двигателем. Я думаю, что это должен быть более простой метод, так как это просто числа, разделенные запятыми, но опять же, я новичок в последовательной связи Arduino, поэтому я был бы признателен за любую помощь в этом. Даже если речь идет только о том, как анализировать и извлекать значения.
@Filip, 👍0
Обсуждение1 ответ
sscanf должно быть достаточно. Существуют и другие варианты, например, класс String с методом подстроки.
Взгляните на пример:
#include <stdio.h>
char myString[] = "#YPR=72.13,1.74,-16.38";
void setup() {
// поместите сюда код установки для однократного запуска:
float yaw = 0;
float pitch = 0;
float roll = 0;
sscanf(myString, "#YPR=%f,%f,%f", &yaw, &pitch, &roll);
Serial.println(yaw);
Serial.println(pitch);
Serial.println(roll);
}
void loop() {
}
- Как разделить входящую строку?
- Как использовать SPI на Arduino?
- Как сбросить или отформатировать Arduino?
- Управление скоростью вентилятора с помощью библиотеки Arduino PID
- Arduino Due vs Mega 2560
- Как получить уникальный идентификатор для всех плат Arduino?
- Почему я получаю avrdude: stk500v2_ReceiveMessage(): timeout error when uploading to Arduino Mega?
- Тайм-аут связи Arduino Mega с ошибкой программатора
Я застрял в той же ситуации, что и ваша, и я ссылался на множество руководств, но не смог найти правильного решения. Я также хочу, чтобы значения #YPR считывались из IMU. Как вы упомянули, вы нашли код, который помог вам добиться того же, ссылка, которую вы приложили для этой программы, похоже, не работает. если вы можете направить меня к этой программе, это было бы большой помощью. Заранее спасибо !, @Gaurav Jain