Buongiorno a tutti, vorrei esporre alla vostra attenzione il mio primo progetto, in parole povere si tratta di un telecomando da fissare a parete, che sia in grado di spegnere un condizionatore, a seguito della ricezione di un segnale in radiofrequenza a 433,92 Mhz. inviato da un sensore che rileva l'apertura di una finestra, (classico sensore per antifurto) per poi inviare via IR il codice per lo spegnimento, in realtà i sensori sono tre, due per le finestre ed uno per una porta finestra, al momento attuale il sopra citato archibugio con mio immenso stupore funziona egregiamente, ovviamente il circuito si trova ancora su una breadboard, il sensore invia un codice solo nel momento in cui viene allontanato dal suo magnete, per un tempo brevissimo poi smette fino a quando non si avvicina di nuovo al magnete e ripete il ciclo.
Adesso, la mia intenzione sarebbe quella di far riconoscere ad Arduino anche il secondo impulso (come finestra chiusa) per fargli svolgere altre istruzioni, tengo a precisare che il codice trasmesso dal sensore è identico sia in apertura che in chiusura, cercando in giro non ho trovato niente che possa fare al caso mio, oppure visto la mia pochissima esperienza non sono stato in grado di riconoscerlo.
Come posso risolvere in maniera che la prima volta riconosca " finestra aperta " e la seconda " finestra chiusa " ?
Allego parte del programma, e ringrazio anticipatamente coloro che vorranno prestare un pò di attenzione verso questo progetto.
Spero di avere rispettato il regolamento di questa comuniti, se avessi omesso qualcosa chiedo scusa anticipatamente, Grazie Fabio.
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
#include <IRremote.h>
IRsend irsend;
int khz = 38; // Modulazione di Frequenza trasmettitore IR
unsigned int powerOff[] = {3464, 1700, 516, 1208, 440, 1280, 440, 428, 436, 432, 520, 352, 492, 1232, 436, 428, 436, 432, 496, 1224, 444, 1280, 516, 352, 512, 1216, 516, 352, 440, 424, 492, 1228, 516, 1212, 516, 352, 492, 1260, 408, 1288, 516, 352, 496, 372, 460, 1264, 436, 428, 488, 380, 520, 1216, 440, 428, 460, 412, 464, 404, 492, 372, 440, 428, 460, 412, 440, 428, 440, 428, 436, 432, 444, 428, 492, 372, 492, 376, 488, 376, 440, 428, 456, 412, 496, 368, 436, 436, 492, 372, 524, 352, 440, 428, 440, 428, 488, 376, 492, 376, 500, 372, 440, 424, 492, 372, 496, 1228, 436, 432, 436, 436, 460, 408, 492, 372, 492, 376, 500, 1224, 444, 424, 440, 424, 496, 384, 436, 436, 496, 368, 432, 432, 496, 372, 496, 368, 444, 424, 516, 356, 436, 1288, 496, 1224, 496, 376, 488, 376, 488, 1232, 500, 368, 496, 1228, 516, 356, 500, 368, 444, 424, 440, 1284, 500, 364, 492, 376, 436, 432, 432, 1292, 492, 1232, 512, 1212, 464, 1272, 460, 1260, 524, 352, 492, 372, 492, 372, 496, 372, 460, 408, 436, 440, 492, 372, 460, 408, 488, 380, 436, 432, 444, 420, 496, 372, 464, 404, 460, 408, 488, 380, 488, 376, 488, 376, 488, 380, 488, 380, 496, 368, 444, 424, 440, 428, 440, 428, 456, 408, 436, 432, 468, 404, 440, 428, 436, 432, 444, 424, 464, 400, 444, 420, 444, 424, 464, 404, 440, 424, 440, 424, 444, 420, 444, 424, 464, 404, 440, 424, 440, 432, 468, 400, 444, 420, 444, 424, 444, 420, 444, 424, 440, 428, 440, 424, 440, 428, 436, 432, 444, 424, 444, 424, 440, 424, 440, 428, 440, 1280, 492, 376, 436, 432, 444, 420, 468};
void setup()
{
Serial.begin(9600);
mySwitch.enableReceive(0);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
irsend.enableIROut(khz);
delay(1000);
Serial.println(F("Analisi"));
}
void loop() {
if (mySwitch.available()) {
long value = mySwitch.getReceivedValue();
// SENSORE PORTA INGRESSO
if (value == 2022535) // Codice Del Sensore Installato Sulla Porta
{
Serial.println(" (Porta Ingresso Aperta) "); // Scrivo Il Sensore/Stato
Serial.println(value); // Stampo Il Codice Inviato Dal Sensore
digitalWrite(11, HIGH); // Accendo Il Ied Verde Collegato Al Pin 11 = (Sensore Ricevuto)
delay(250); // Tempo Durata Led Acceso (1/4 secondo)
digitalWrite(11, LOW); // Led Verde Spento
delay(3000); // Tempo Di Attesa Invio Codice IR (3 Secondi)
digitalWrite(12, HIGH); // Accende Il Led Rosso Collegato Al Pin 12 = (Conferma Invio Comando Spegnimento)
delay(250); // Tempo Durata Led Acceso (1/4 secondo)
digitalWrite(12, LOW); // Led Rosso Spento
irsend.sendRaw(powerOff, sizeof(powerOff) / sizeof(int), khz); // Invio Codice Di Spegnimento
delay(16);
irsend.sendRaw(powerOff, sizeof(powerOff) / sizeof(int), khz);
}
else
// SENSORE FINESTRA CAMERA
if (value == 615047) // Codice Del Sensore Installato Sulla Finestra
{