arduino temporizzatore
salve a tutti
volevo un vostro aiuto:
ho progettato un piccolo arduino con un ricevitore ad IR di cui poter comandare delle luci tramite il telecomando della tv.
fin qui tutto oh.
vorrei comandare anche la tenda motorizzata: sale e scende.
con un comando tramite il tasto del T.C. si eccita un relè e parte la tenda, ma devo peterla temporizzare fino alla chiusura.
ho gia provato con dylay, ma nel tempo che la tenda scende o sale non posso fare altro e neppure bloccarla alla posizione desiderata.
qualcuno mi ha detto di millis. ma io non ho capito dove infilarli nel programma.
ne sarei molto grado del vostro aiuto.
dimenticavo :non sono un programmatore e non me la cavo per niente bene. il mio primo progettino.
questo e il progetto.
grazie attendo risposte.
volevo un vostro aiuto:
ho progettato un piccolo arduino con un ricevitore ad IR di cui poter comandare delle luci tramite il telecomando della tv.
fin qui tutto oh.
vorrei comandare anche la tenda motorizzata: sale e scende.
con un comando tramite il tasto del T.C. si eccita un relè e parte la tenda, ma devo peterla temporizzare fino alla chiusura.
ho gia provato con dylay, ma nel tempo che la tenda scende o sale non posso fare altro e neppure bloccarla alla posizione desiderata.
qualcuno mi ha detto di millis. ma io non ho capito dove infilarli nel programma.
ne sarei molto grado del vostro aiuto.
dimenticavo :non sono un programmatore e non me la cavo per niente bene. il mio primo progettino.
questo e il progetto.
grazie attendo risposte.
- Codice: Seleziona tutto
#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
}
}