Arduino и пульт

SkSam
Offline
Зарегистрирован: 04.01.2013

Пользуюсь пультом для управления электро приборами на кухни свет, подсветка led, вытежка, переключение датчиков температуры вот этим скетчем подскажите как определенные нагрузки включать на время что изменить?




#include <IRremote.h> //

int RECV_PIN = 11; //
IRrecv irrecv(RECV_PIN);
decode_results results;
int a=0;
int b=0; 
int c=0; 
int d=0; 
 

void setup()
{
irrecv.enableIRIn(); 

pinMode(4, OUTPUT); 
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);

} 

void loop() {
if (irrecv.decode(&results)) {
delay(300); // 
if (results.value == 0xFFC23D) {a=a+1;} 
if (results.value == 0xFF807F) {b=b+1;} 
if (results.value == 0xFF40BF) {c=c+1;}
if (results.value == 0xFF42BD) {d=d+1;}


if (a==1){digitalWrite(4, HIGH);} else {digitalWrite(4, LOW); a=0;} 
if (b==1){digitalWrite(5, HIGH);} else {digitalWrite(5, LOW); b=0;} 
if (c==1){digitalWrite(6, HIGH);} else {digitalWrite(6, LOW); c=0;} 
if (d==1){digitalWrite(7, HIGH);} else {digitalWrite(7, LOW); d=0;} 


{ //
delay(50); 
} //
irrecv.resume(); // 

}

}

 

LiyIch
Offline
Зарегистрирован: 10.04.2012

Здесь надо прописывать дополнительную функцию таймера отключения каждого прибора.

Думаю, что в каждом таком фрагменте кода.

 

if (a==1){digitalWrite(4, HIGH); Вызов функции таймера} else {digitalWrite(4, LOW); a=0;}

 

 

33  
34  
35  
36  

 

SkSam
Offline
Зарегистрирован: 04.01.2013

 

if (a==1){digitalWrite(4, HIGH); delay(15000);} else {digitalWrite(4, LOW); a=0;}

 

LiyIch
Offline
Зарегистрирован: 10.04.2012

Уважаемый, SkSam.

Включение задержки на 15000 мс на 4 пине, удерживает его в состояние HIGH в течение этого времени.

Здесь конечно надо для начала знать схему управления приборами. Если, например, стоит оптическое реле, то эта задержка врядли поможет. Если "обычное" - вполне.

можете ли описать схему? или же это уже не актуально?

Удачи..

 

SkSam
Offline
Зарегистрирован: 04.01.2013

Рэлейный блок на 4 рэле из серии arduino с обычными рэле задействованы 4 5 6 7 контакт все подключено к нагрузкам включаются и от включаются с одной кнопки но нужно чтобы две нагрузки отключались через 10 минут сами и с кнопки если надо раньше

maksim
Offline
Зарегистрирован: 12.02.2012
#include <IRremote.h> //

int RECV_PIN = 11; //
IRrecv irrecv(RECV_PIN);
decode_results results;
bool a = 0, b = 0, c = 0, d = 0; 
uint32_t millis_a, millis_b;

void setup()
{
  irrecv.enableIRIn(); 

  pinMode(4, OUTPUT); 
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);

} 

void loop() 
{
  if (irrecv.decode(&results)) 
  {
    switch(results.value) 
    {
    case 0xFFC23D:
      a = !a;
      digitalWrite(4, a);
      millis_a = millis();
      break;

    case 0xFF807F: 
      b = !b;
      digitalWrite(5, b);
      millis_b = millis();
      break;

    case 0xFF40BF:
      c = !c;
      digitalWrite(6, c);
      break;

    case 0xFF42BD:
      d = !d;
      digitalWrite(7, d);
      break;
    }
    delay(300); 
    irrecv.resume(); 
  }

  if(millis()-millis_a > 600000 && a) 
  {
    a = 0;
    digitalWrite(4, a);
  }
  if(millis()-millis_a > 600000 && b) 
  {
    b = 0;
    digitalWrite(5, b);
  }
}

 

SkSam
Offline
Зарегистрирован: 04.01.2013

Maksim все работает отлично три кнопки задействовал на включение света одна для вытяжки на десять минут хотелось бы добавить отключение всех устройств одной кнопкой и озвучку включений

Omega13
Offline
Зарегистрирован: 01.07.2013

Здравствуйте, есть просьба помочь с кодом так-как в программировании я полный 0, пытаюсь разобраться, не хочу создавать отдельную тему тем-более что задачи похожи.

В наличии Arduino Mini v.4, IR Receiver, PIR Detector, релейный модуль на 8 реле, 8 фиксированныйх кнопок (выключателей).

Задача следующая:

Управлять всеми  8 реле с пульта ДУ, так же возможность управлять реле с выключателя , подключение к одному выходу реле пассивного ИК детектора и включение этого реле на определенное время.

На данный момент реализовал только управление 8 реле с ИК пульта, код следующий:


#include <IRremote.h> //	 
int RECV_PIN = 12; //
IRrecv irrecv(RECV_PIN);
decode_results results;
int a=0;
int b=0;
int c=0;
int d=0;
int e=0;
int f=0;
int g=0;
int h=0;

void setup()
{
irrecv.enableIRIn();
 
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT); 
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
} 
void loop() {
if (irrecv.decode(&results)) {
delay(300); //
if (results.value == 0xFF30CF) {a=a+1;}
if (results.value == 0xFF18E7) {b=b+1;}
if (results.value == 0xFF7A85) {c=c+1;}
if (results.value == 0xFF10EF) {d=d+1;}  
if (results.value == 0xFF38C7) {e=e+1;}
if (results.value == 0xFF5AA5) {f=f+1;}
if (results.value == 0xFF42BD) {g=g+1;}
if (results.value == 0xFF4AB5) {h=h+1;}
if (a==1){digitalWrite(4, HIGH);} else {digitalWrite(4, LOW); a=0;}
if (b==1){digitalWrite(5, HIGH);} else {digitalWrite(5, LOW); b=0;}
if (c==1){digitalWrite(6, HIGH);} else {digitalWrite(6, LOW); c=0;}
if (d==1){digitalWrite(7, HIGH);} else {digitalWrite(7, LOW); d=0;} 
if (e==1){digitalWrite(8, HIGH);} else {digitalWrite(8, LOW); e=0;}
if (f==1){digitalWrite(9, HIGH);} else {digitalWrite(9, LOW); f=0;}
if (g==1){digitalWrite(10, HIGH);} else {digitalWrite(10, LOW); g=0;}
if (h==1){digitalWrite(11, HIGH);} else {digitalWrite(11, LOW); h=0;}
{ //
delay(50);
} //
irrecv.resume(); //	 
}
}