Изменение скорости передачи данных не работает

Я скопировал этот код с 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 становится пустым.

Как это можно решить?

Несколько скриншотов:

В 03:38 В 03:39

Застрял!!!

, 👍0

Обсуждение

где изменить скорость передачи данных?, @Juraj

Я изменил, но ничего не произошло, поэтому я прокомментировал эту строку, @Maifee Ul Asad

посмотрите, есть строка //Serial.begin(9600);, @Maifee Ul Asad

А вы также меняли скорость передачи данных в последовательном мониторе?, @Majenko

Да, я добавил скриншоты..., @Maifee Ul Asad


1 ответ


1

Вы не очень ясно выразились, но это возможные причины вашей проблемы.

  1. Вы используете цикл while в функции setup() своего кода. Ваш код может там застрять, поэтому вы не можете видеть тангаж и крен. Попробуйте удалить комментарий из функции Serial.begin.

  2. После изменения скорости передачи данных в вашем коде убедитесь, что вы также меняете ее и на последовательном мониторе.

,

Я изменил скорость передачи данных как в коде, так и в последовательном мониторе. После печати значений 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