Включение светодиода на некоторое время

Vidyaev
Offline
Зарегистрирован: 25.06.2015

Добрый день.  

Прошу помощи. Вообщем задача банальна и проста, но вынесла мне мозг.  Нужно после нажатия и отпускания кнопки чтобы загорался светодиод на некоторое время. 

Нажали-ничего, отпутили светодиод горит и через пускай 5 сек. выключается.

int flag=0; 

 void setup()   
 {  
    pinMode(13, OUTPUT);               
 } 

 void loop() 

 {   
     if(digitalRead(14)==HIGH&&flag==0) 
     { 
       flag=1; 
     } 
       
      if(digitalRead(14)==LOW&&flag==1) 
     { 
         digitalWrite(13,!digitalRead(13)); 
        flag=0;
     } 
 } 

 

 

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014
int flag=0; 
unsigned long currentTime; //Переменная для pause
 void setup()   
 {  
    pinMode(13, OUTPUT);               
 } 

 void loop() 

 {   
     if(digitalRead(14)==HIGH&&flag==0) 
     { 
       flag=1; 
     } 
       
      if(digitalRead(14)==LOW&&flag==1) 
     { 
         digitalWrite(13,HIGH);
	currentTime = millis();
	 
        flag=0;
     } 
	if (digitalRead(13) == HIGH && millis()-currentTime>=5000)
	{
	  digitalWrite(13,LOW);
	}
 } 

 

Клапауций 322
Offline
Зарегистрирован: 31.12.2015

 

10 static const unsigned long timer_      = 5000; // длительность отслеживания неактивности.

if (BUTTON_01.click_up) {что-то делаем при отпускании}
if (BUTTON_01.timer) {что-то делаем, если кнопка отпущена и неактивна в течении определённого времени}

класс титановый велосипед для тактовой кнопки.

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

Примерчики с таймером и без таймера можно здесь посмотреть

vosara
vosara аватар
Offline
Зарегистрирован: 08.02.2014

Вообщем задача настолько банальна и проста, что не интересна даже САМОМУ "Vidyaev"

Vidyaev
Offline
Зарегистрирован: 25.06.2015

Всем спасибо.  vosara у меня просто времени не было. Сейчас протестируем.

Vidyaev
Offline
Зарегистрирован: 25.06.2015

Может кому пригодится.

Понадобилось все это мне для включения, на некоторое время. вытяжки в туалете, после выключения света. Паралельно к лампе подключил БП, который подает сигнал на пин. Вентилятор подключен через реле.

#define pause 300000 //время работы вентилятора
#define rele 7
#define kn 2

int flag = 0; 
unsigned long currentTime;
void setup()
{
  pinMode(rele, OUTPUT);               
} 

void loop() 
{
  if(digitalRead(kn) == HIGH && flag == 0)
  {
    digitalWrite(rele,HIGH);
    flag = 1;
  }

  if(digitalRead(kn) == LOW && flag == 1)
  {
    digitalWrite(rele,LOW);
    currentTime = millis();
    flag = 0;
   } 

   if (digitalRead(rele) == LOW && millis() - currentTime >= pause)
   {
    digitalWrite(rele,HIGH);
   }
   
 } 
 

Все рабоает. Всем спасибо.

sav13
sav13 аватар
Offline
Зарегистрирован: 17.06.2013

Vidyaev пишет:

Может кому пригодится.

Понадобилось все это мне для включения, на некоторое время. вытяжки в туалете, после выключения света. Паралельно к лампе подключил БП, который подает сигнал на пин. Вентилятор подключен через реле.

Вытяжка управдяется каким-то реле, а вот светодиод целым контроллером. Раз уж заморочились, добавьте логику работы вытяжки, например по влажности, чтобы зря вентилятор при каждом выключени  света не молотил

Клапауций 322
Offline
Зарегистрирован: 31.12.2015

sav13 пишет:

например по влажности, чтобы зря вентилятор при каждом выключени  света не молотил

в туалете же вентиллятор - не в бане.

vvadim
Offline
Зарегистрирован: 23.05.2012

sav13 пишет:

Примерчики с таймером и без таймера можно здесь посмотреть

понравилась статейка