@flexpc

Как мигать светодиодом без delay в setup()?

есть похожие вопросы в интернете, но во всех мигание происходит в loop(), а мне нужно сделать мигание светодиода в setup(). Например, пять раз моргнул светодиод и код пошёл выполняться дальше и всё это в setup() и без delay. Как это сделать? Спасибо.
  • Вопрос задан
  • 147 просмотров
Пригласить эксперта
Ответы на вопрос 4
vabka
@vabka
Токсичный шарпист
1. В setup не получится
2. Если без delay, то нужно использовать таймеры и прерывания.
Внутри прерывания мигай и увеличивай счётчик, сколько раз мигнул. После 5 раз - выключай прерывание/освобождай таймер.
Если нужно, чтобы пока происходит мигание, не начиналось действие внутри loop - мигай внутри loop, но также закрой его при помощи какого-нибудь условия что-то типа "если пять раз мигнул - работаем, иначе - мигаем и увеличиваем счётчик"
Ответ написан
Комментировать
@kalapanga
А в чём прикол такой задачи?
millis() вместо delay() используют, чтобы микроконтроллер не останавливал надолго выполнение каких-то полезных действий. А у Вас как раз и не нужно ничего делать пока не намигаемся светодиодом. Функция delay() здесь прямо как родная.
Но если уж очень хочется, то всё Ваше мигание нужно завернуть в "бесконечный" цикл, условием выхода из которого будет, например, достижение нужного количества миганий светодиода.
Ответ написан
Комментировать
@vanyamba-electronics
Попробуйте изучить, как написать машину состояний.
Ответ написан
Комментировать
@mordo445
void setup(){
<...>
byte n = 4;
While(n){
<моргаем диодом>
n--;
}
<...>
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы