Изменение скорости передачи данных не работает
Я скопировал этот код с Github:
#include <Wire.h>
#include <MPU6050.h>
MPU6050 mpu;
// Таймеры
unsigned long timer = 0;
float timeStep = 0.01;
// Значения тангажа, крена и отклонения от курса
float pitch = 0;
float roll = 0;
float yaw = 0;
void setup()
{
Serial.begin(115200);
//Serial.begin(9600);
// Инициализируем MPU6050
while(!mpu.begin(MPU6050_SCALE_2000DPS, MPU6050_RANGE_2G))
{
//Serial.println("Не удалось найти действительный датчик MPU6050, проверьте
wiring!");
}
// Калибровка гироскопа. Калибровка должна быть в состоянии покоя.
// Если вы не хотите калибровать, прокомментируйте эту строку.
//mpu.калибровкаGyro();
// Установка пороговой чувствительности. По умолчанию 3.
// Если вы не хотите использовать порог, закомментируйте эту строку или установите 0.
mpu.setThreshold(1);
}
void loop()
{
timer = millis();
// Читаем нормализованные значения
Vector norm = mpu.readNormalizeGyro();
// Расчет тангажа, крена и отклонения от курса
pitch = pitch + norm.YAxis * timeStep;
roll = roll + norm.XAxis * timeStep;
yaw = yaw + norm.ZAxis * timeStep;
// Вывод необработанных данных
//Serial.print(" Шаг = ");
Serial.print(pitch);
Serial.print(":");
//Serial.print("Ролл = ");
Serial.print(roll);
Serial.print(":");
//Serial.print("Yaw = ");
Serial.println(yaw);
// Ожидание полного периода timeStep
delay((timeStep*1000) - (millis() - timer));
}
Теперь вопрос в том, что всякий раз, когда я пытаюсь изменить скорость передачи данных, Serial Monitor становится пустым.
Как это можно решить?
Несколько скриншотов:
Застрял!!!
@Maifee Ul Asad, 👍0
Обсуждение1 ответ
Вы не очень ясно выразились, но это возможные причины вашей проблемы.
Вы используете цикл while в функции setup() своего кода. Ваш код может там застрять, поэтому вы не можете видеть тангаж и крен. Попробуйте удалить комментарий из функции Serial.begin.
После изменения скорости передачи данных в вашем коде убедитесь, что вы также меняете ее и на последовательном мониторе.
Я изменил скорость передачи данных как в коде, так и в последовательном мониторе. После печати значений 6/7 он застревает. Я понятия не имею, что происходит :'(, @Maifee Ul Asad
Я также добавил Serial.println("ok")
в последнюю строку Setup
, которая сработала., @Maifee Ul Asad
Можете ли вы предоставить скриншот вашего последовательного монитора., @Vaibhav
Я добавил скриншоты, пожалуйста, посмотрите, @Maifee Ul Asad
Последнее, что, как я понимаю, может создать проблему, это функция задержки в конце. Попробуйте установить какое-нибудь значение по умолчанию, например 5 или 10, а затем проверьте, зависает ли окно по-прежнему ., @Vaibhav
Я тоже это пробовал, но со скоростью 115200 бод не получилось., @Maifee Ul Asad
возможно, это из-за библиотеки, @Maifee Ul Asad
Я так думаю, поскольку я попробовал ваш код с комментариями части MPU, и код работает хорошо. Попробуйте этот [пример библиотеки](https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050), @Vaibhav
Спасибо, я пытался переместить и повернуть объект в Unity, используя Arduino в качестве входных данных. Теперь у меня есть [это](https://github.com/maifeeulasad/Mouse-3D), вращение идеальное, но положение нет. Может быть, вы сможете мне в этом помочь., @Maifee Ul Asad
- Снять гравитацию с акселерометра MPU-6050
- Использование MPU-6050 без I2C
- MPU-6050 с Arduino – вскрытие
- Линейное ускорение от MPU 6050
- Помощь с MPU-6050
- Акселерометр ADXL345 не работает
- Показания гироскопа MPU6050 слишком дрейфуют только при быстрых изменениях
- Arduino Mega и ошибочные значения гироскопа
где изменить скорость передачи данных?, @Juraj
Я изменил, но ничего не произошло, поэтому я прокомментировал эту строку, @Maifee Ul Asad
посмотрите, есть строка
//Serial.begin(9600);
, @Maifee Ul AsadА вы также меняли скорость передачи данных в последовательном мониторе?, @Majenko
Да, я добавил скриншоты..., @Maifee Ul Asad