0 голосов
Всем привет.Я новичок в arduino и хотел бы узнать, как делать таймер который будет запускаться от условия, будет не плохо если вы объясните на примере если датчик пламени сработал то срабатывает таймер и горит светодиод 5 сек и потом выключается.И конечно же без  delay,
(2 баллов) 2

1 Ответ

+2 голосов

Понадобится переменная времени , константа периода и логический флаг. 

unsigned long timer1 =0;
const int per = 5000;
// или
// #define per 5000
bool flag=0;



//в loop

if(условие срабатывания датчика)
{
 timer1 = millis()+ per;
flag =1;
//включаем светодиод
}
if (timer1<millis() and flag)
{
flag=0;
//выключаем светодиод


}

Код представляет собой таймер , который отсчитает срок после окончания события. 

А вот код ниже с начала события.

unsigned long timer1 =0;
const int per = 5000;
// или
// #define per 5000
bool flag=0;



//в loop

if(условие срабатывания датчика and !flag)
{
 timer1 = millis()+ per;
flag =1;
//включаем светодиод
}
if (timer1<millis() and flag)
{
flag=0;
//выключаем светодиод


}

(1.7 тыс. баллов) 3 14 37
Спасибо большое.
Добро пожаловать на Бредборд! Сайт вопросов и ответов на тему Arduino, Raspberry Pi и хоббийной электроники в целом. Цель Бредборда — быть максимально полезным. Поэтому мы строго следим за соблюдением правил, боремся с холиворами и оффтопиком.
  1. Un_ka

    262 балл(ов)

  2. toxicBarrel

    182 балл(ов)

  3. BAR__MEN

    123 балл(ов)

  4. parovoZZ

    94 балл(ов)

  5. Тигрыч

    57 балл(ов)

  6. sser

    55 балл(ов)

Награды месяца
1-е место: Дисплей Nextion Enhanced 3,5″
2-е место: Дисплей Nextion Enhanced 3,2″
3-е место: Дисплей Nextion Enhanced 2,8″

...