salve a tutti
vi confesso che sono alle prime armi.
sto cercando di progettare :
con il telecomando della tv,gestire diverse cose con diversi tasti;
accendere e spegnere le vari luci che ho in casa.
e fin qua ci sono quasi riuscito.
il problema nasce azionando un comando per aprire e chiudere la tenda motorizzata.
in pratica ho creato due comandi che mi gestiscono la salita e la discesa, ma mi serve temporizzalre entrambi,cioè quando aziono il comando, sali: si aziona un relè e sale ma si deve fermare ad un tempo che io imposto.
ho provato con il delay ma finchè non finisce di contare non mi far fare altro.
esiste un modo diverso? vi ricordo che quello che sono riuscito a fare non affatto tutto merito mio.
grazie in anticipo
#include <IRremote.h>
int RECV_PIN = 12;
int tendasuPin = 2;
int tendagiuPin = 3;
int luceAPin = 4;
int luceBPin = 5;
int luceCPin = 6;
int luceDPin = 7;
int luceEPin = 8;
int luceFPin = 9;
int luceGPin = 10;
int luceHPin = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(tendasuPin, OUTPUT);
pinMode(tendagiuPin, OUTPUT);
pinMode(luceAPin, OUTPUT);
pinMode(luceBPin, OUTPUT);
pinMode(luceCPin, OUTPUT);
pinMode(luceDPin, OUTPUT);
pinMode(luceEPin, OUTPUT);
pinMode(luceFPin, OUTPUT);
pinMode(luceGPin, OUTPUT);
pinMode(luceHPin, OUTPUT);
}
void loop() {
if (irrecv.decode(&results)) {
long int decCode = results.value;
Serial.println(decCode);
switch (results.value) {
case -1524634562:
Serial.println("tendasu");
digitalWrite(tendasuPin, HIGH);
digitalWrite(tendagiuPin, LOW);
break;
case -932981048:
Serial.println("tendagiu");
digitalWrite(tendagiuPin, HIGH);
digitalWrite(tendasuPin, LOW);
break;
case 1976685926:
Serial.println("luceA");
digitalWrite(luceAPin, HIGH);
delay(400);
digitalWrite(luceAPin, LOW);
break;
case -451201714:
Serial.println("luceB");
digitalWrite(luceBPin, HIGH);
delay(400);
digitalWrite(luceBPin, LOW);
break;
case -520862424:
Serial.println("luceC");
digitalWrite(luceCPin, HIGH);
delay(400);
digitalWrite(luceCPin, LOW);
break;
case 1784778242:
Serial.println("luceD");
digitalWrite(luceDPin, HIGH);
delay(400);
digitalWrite(luceDPin, LOW);
break;
case -622165012:
Serial.println("luceE");
digitalWrite(luceEPin, HIGH);
delay(400);
digitalWrite(luceEPin, LOW);
break;
case 732942060:
Serial.println("luceF");
digitalWrite(luceFPin, HIGH);
break;
case -1256125018:
Serial.println("luceG");
digitalWrite(luceGPin, HIGH);
break;
case 298013739:
Serial.println("luceH");
digitalWrite(luceHPin, HIGH);
break;
case -314190012:
Serial.println("Stop");
digitalWrite(tendasuPin, LOW);
digitalWrite(tendagiuPin, LOW);
digitalWrite(luceAPin, LOW);
digitalWrite(luceBPin, LOW);
digitalWrite(luceCPin, LOW);
digitalWrite(luceDPin, LOW);
digitalWrite(luceEPin, LOW);
digitalWrite(luceFPin, LOW);
digitalWrite(luceGPin, LOW);
digitalWrite(luceHPin, LOW);
break;
default:
Serial.println("Waiting ...");
}
irrecv.resume(); // Receive the next value
}
}