Доброго времени суток!
Начал знакомиться с миром ардуино. Заимел Uno на CH340G, датчик DHT22, дисплей LCD2004.
Набросал скетч, но столкнулся с тем, что он работает не так, как я задумывал. Задержка между итерациями цикла меньше, чем задана.
Переполнение millis в Arduino происходит, когда переменная millis, которая хранит количество миллисекунд, прошедших с момента запуска программы, достигает максимального значения (примерно 50 дней). После этого происходит переполнение переменной и она начинает считать время с нуля. Это может привести к неправильной работе программы, если она основана на точном измерении времени. Для решения этой проблемы можно использовать специальные функции и библиотеки, которые учитывают переполнение millis.
Как бороться с переполнением millis в Arduino?
Использовать таймеры высокого разрешения - вместо использования функции delay() можно использовать таймеры высокого разрешения, такие как millis(). Они позволяют управлять временем более точно и предотвращать переполнение.
Использовать библиотеку TimeLib - библиотека TimeLib позволяет работать с временем в Arduino, предотвращая переполнение millis и обеспечивая удобную работу с временем.
Использовать функцию масштабирования времени - можно использовать специальную функцию, которая масштабирует время и позволяет увеличить его длительность до максимального значения переменной millis.
Периодически проверять и перезапускать таймер - можно периодически проверять значение переменной millis и перезапускать таймер, чтобы избежать переполнения.
Использовать библиотеки реального времени - существуют специальные библиотеки реального времени для Arduino, которые позволяют работать с временем более эффективно, предотвращая переполнение millis.