Официальный сайт компании Arduino по адресу arduino.cc
Запуск по таймеру
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Втр, 14/01/2020 - 02:47
Вобщем нужно запустить некую функцию по нажатию кнопки через 2 сек. Вроде простая задачка, но решения немогу найти.
void loop() { if(btn){ test(); } } void test(){ Serial.println(test); }
Если нажата кнопка btn ждем 2сек. и запускаем функцию test(). Как это сделать с использованием millis() или другими методами, чтобы неостанавливать выполнение всей програмы.
Ну есть масса способов. С помощью миллис, например здесь - http://arduino.ru/tutorials/BlinkWithoutDelay
Заменяем включение светодиода на вызов нужной функции и дело в шляпе.
Если нажата кнопка btn ждем 2сек. и запускаем функцию test(). Как это сделать с использованием millis()
пока вы так формулируете, вам будет трудно найти решение. Ведь раз вы говорите "ждем" - это как бы намекает, что "ждать" - это отдельное дело. Именно так пишутся программы с delay() - и контроллер именно "ждет 2 секунды". А поскольку контроллер может делать только одно действие в каждый момент, то пока он "ждет" - никакие другие действия невозможны.
Чтобы писать программы с использованием millis() - нужно менять подход, нужно перестать "ждать". В момент нажатия кнопки мы только запоминаем текущее время. И все, дальше программа занимается другими делами и ничего не "ждет". При следуюшем проходе через участок кода с кнопкой (не обязательно именно в этом месте, но так просто удобнее обьяснять) - мы сравниваем текущее время с запомненным - если разница менее 2х секунд - продолжаем программу дальше, если превысила 2 секунды - запускаем функцию test().