Чтобы избежать ошибок при использовании функции millis() в Arduino, можно предпринять следующие шаги:
- Учитывать, что millis() не абсолютно точна. 1 Каждый такт таймера составляет не ровно 1 мс, а 1,024 мс, и эта ошибка постепенно накапливается. 1
- Избегать переполнения. 2 Оно может происходить, например, после примерно 50 дней использования millis(), когда функция переходит от очень высокого числа к очень низкому. 2 Чтобы избежать этого, можно переместить переменную time_now на другую сторону оператора неравенства и изменить знак переменной, то есть использовать вычитание. 2
- Явно приводить результат вычисления к правильному типу данных. 2 Это поможет гарантировать, что метод будет работать на разных платформах и архитектурах. 2
Также стоит учитывать, что поведение кода может отличаться на разных платформах, компиляторах и архитектурах. 2