Arduino-seeed моторный щит v2 - PullRequest
0 голосов
/ 28 мая 2019

Моя проблема, возможно, проста, но я не смог понять это. Я использую arduino uno, seeedstudio motor shield v2 и колесный энкодер. Проблема в том, что пример кода для этого щита выглядит следующим образом:

void loop()
{
motor.speed(0, 100);            // set motor0 to speed 100
delay(1000);
motor.brake(0);                 // brake
delay(1000);
motor.speed(0, -100);           // set motor0 to speed -100
delay(1000);
motor.stop(0);                  // stop
delay(1000);
}

Но задержки блокируются, и мне кажется, что из-за этого я могу посчитать импульсы датчика. Я пробовал разные реализации millis (), но кодировщик считывает дикие числа в десятках тысяч / минус.

1 Ответ

0 голосов
/ 28 мая 2019

В вашем коде нет колесного датчика, но я предполагаю, что ваша проблема в том, что delay является функцией блокировки.

Самый простой способ проверить, истекло ли время без блокировки программы, это вручную проверьте, прошло ли время с момента вашей последней инструкции.Например:

void loop()
{
    unsigned long previous_time = millis();
    motor.speed(0, 100);  
    while (millis() - previous_time < 1000) 
    {
        // do something (check the encoder for instance
    }
}

Таким образом, вы сможете выполнять другие инструкции, ожидая завершения задержки.Конечно, вы можете поставить эту проверку в функцию.

Надеюсь, это поможет!

...