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

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;
//выключаем светодиод


}

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

    75 балл(ов)

  2. Un_ka

    54 балл(ов)

  3. parovoZZ

    12 балл(ов)

  4. sser

    6 балл(ов)

  5. Тёмик

    5 балл(ов)

  6. NesteruS

    5 балл(ов)

Награды месяца
1-е место: OLED-дисплей (Troyka-модуль)
2-е место: Графический экран 128×64
3-е место: Текстовый дисплей 16×2 (Troyka-модуль)

...