Продолжаем организовывать псевдомногозадачность на платформе Arduino. Прошлая статье где псевдомногозадачность была организована в основном цикле с помощью встроенной в среду Arduino IDE функции millis() вызвала ожидаемую волну комментариев про то, что так делать не надо, для этого обязательно нужно использовать аппаратный таймер - все другие методы "не комильфо" априори. Особо одарённые личности даже посоветовали устроиться в Макдональдс ВНИМАНИЕ: Если мы попробуем перенастроить любой из имеющихся таймеров на борту Arduino - можем толкнуться со следующими проблемами; Tаймер 0 (Системное время, ШИМ 5 и 6)
Используется для хранения счетчика времени работы программы. Функция millis() возвращает число миллисекунд с момента запуска программы, используя ISR глобального приращения таймера 0. Таймер 0 также используется для реализации ШИМ на выводах 5 и 6.
(прощайте millis() и delay() ) Tаймер 1 (ШИМ 9 и 10)
Используется для реализации ШИМ для цифровых выводов 9 и 10.
(библиотека Servo говори