обходим delay();
- Войдите на сайт для отправки комментариев
Чт, 04/02/2016 - 11:54
Собственно возникла примерно такая проблема. Чтоб обойти делай заводим переменную unsigned long, пишем в нее значение millis() и потом сравниваем с неким значением.
А если таких отслеживаний надо делать 10шт приходится заводить 10 переменных, которые жрут память + не сильно удобно каждый раз думать где бы записать в переменную миллис чтоб оно потом не считывадлсь второй раз.
Подскажите плиз как правильно делать в таких случаях :)
я для таких случаев сделал функцию
класс титановый велосипед для delay без delay().
Обычно для не критических таемингов от 10мсек до 1минуты использую чтото типа такого. (прям из живого проекта).
Экономно, гибко, 16 таймеров хватает всегда, т.е. не было у меня случая чтоб мало было. Заодно просто решает одну "скользкую" проблему - выравнивает нагрузку. В каждом цикле loop только одно срабатывание таймера, остальные отложатся на следующий (решается в строках 37,38). Без этого возможны очень противные проблемы, возникающие редко при неудачных совпадениях и потому трудно исправимые.