Arduino и пульт
- Войдите на сайт для отправки комментариев
Ср, 22/05/2013 - 19:30
Пользуюсь пультом для управления электро приборами на кухни свет, подсветка 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(); //
}
}
Здесь надо прописывать дополнительную функцию таймера отключения каждого прибора.
Думаю, что в каждом таком фрагменте кода.
if(a==1){digitalWrite(4, HIGH); Вызов функции таймера}else{digitalWrite(4, LOW); a=0;}33343536if (a==1){digitalWrite(4, HIGH); delay(15000);} else {digitalWrite(4, LOW); a=0;}
Уважаемый, SkSam.
Включение задержки на 15000 мс на 4 пине, удерживает его в состояние HIGH в течение этого времени.
Здесь конечно надо для начала знать схему управления приборами. Если, например, стоит оптическое реле, то эта задержка врядли поможет. Если "обычное" - вполне.
можете ли описать схему? или же это уже не актуально?
Удачи..
Рэлейный блок на 4 рэле из серии arduino с обычными рэле задействованы 4 5 6 7 контакт все подключено к нагрузкам включаются и от включаются с одной кнопки но нужно чтобы две нагрузки отключались через 10 минут сами и с кнопки если надо раньше
#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); } }Maksim все работает отлично три кнопки задействовал на включение света одна для вытяжки на десять минут хотелось бы добавить отключение всех устройств одной кнопкой и озвучку включений
Здравствуйте, есть просьба помочь с кодом так-как в программировании я полный 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(); // } }