Come già scritto sto cercando di creare un allarme in tutto e per tutto per casa mia ..
Ora qui vi presento e rilascio il codice per inviare un codice XXXXXX dal trasmettitore 433 così da poterlo copiare con un telecomando e poi riscontrare se tale telecomando sia stato copiato correttamente
Facciamo conto che l'emettitore si collegato al pin 3
e il ricevitore al pin 2
mySwitch.enableTransmit(3);
mySwitch.enableReceive(0); // Receiver on inerrupt 0 => that is pin #2
Modificate il codice del telecomando da far apprendere e verificare : 5588305
con quello che a voi più piace !
eccovi il codice :
// includo la libreria da utilizzare per lcd
#include <LiquidCrystal.h>
// imposto i pin che utilizzera lcd
LiquidCrystal lcd(7, 6, 5, 38,40,42,44,46,48,50,52);
// imposto il pin per accendere l lcd e giocare con il suo contrasto
int backLight = 8;
// <<-------------Inizio 433 reciver
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
// <<------------- Fine 433 reciver
int copia = 0 ;
void setup() {
Serial.begin(9600);
// Transmitter is connected to Arduino Pin #10
mySwitch.enableTransmit(3);
mySwitch.enableReceive(0); // Receiver on inerrupt 0 => that is pin #2
// Abilito LCD
Serial.print("Avvio L'LCD \r\n\r");
pinMode(backLight, OUTPUT);
// seleziono il contrasto dell lcd
digitalWrite(backLight, 60);
// imposto i caratteri e le righe dell lcd
lcd.begin(20,4);
lcd.clear();
// imposto l'intestazione
lcd.setCursor(0,0);
lcd.print("Remote : All. ON ");
}
void loop() {
// imposto il tempo di uscita da casa
if ( copia == 1 ){
lcd.setCursor(0,1);
lcd.print(" Copia Avvenuta ");
lcd.setCursor(0,2);
lcd.print(" Uscire Dal Menu ");
lcd.setCursor(0,3);
lcd.print(" ");
}else{
int ms = 5000;
int refreshms = 250;
for (int i = 1; i <= 5000 / refreshms ; i++){
lcd.setCursor(0,1);
lcd.print("Clonare codice Prego");
mySwitch.send(5588305, 24);
ms -= refreshms;
// se i secondi sono minori di due cifre sposto i secondi
if ( (ms/1000) <= 9 ){
lcd.setCursor(15,3);
lcd.print((ms/1000));
lcd.print(" s");
//Serial.print((ms/1000));
//Serial.print(" SEC\r\n\r");
}else{
lcd.setCursor(15,3);
lcd.print((ms/1000));
lcd.print("s");
//Serial.print((ms/1000));
//Serial.print("SEC\r\n\r");
}
// attendo due secondi e pulisco il display
if ( (ms/1000) < 26 ){
lcd.setCursor(0,1);
lcd.print(" ");
lcd.setCursor(0,2);
lcd.print(" ");
}
delay(refreshms);
if (i == 5000 / refreshms)
{
//operazioni da eseguire alla fine del countdown
ms = 5000;
lcd.setCursor(0,1);
lcd.print("Prova ricezione ");
lcd.setCursor(0,2);
lcd.print(" ");
}
}
// fine trassmissione codice
// ricezione
int ms1 = 10000;
int refreshms1 = 250;
for (int o = 1; o <= 10000 / refreshms1 ; o++){
if (mySwitch.available()) {
int value = mySwitch.getReceivedValue();
if (value == 0) {
Serial.print("Unknown encoding");
} else {
if (mySwitch.getReceivedValue() == 5588305 ){
lcd.setCursor(0,1);
lcd.print("Copia Avvenuta ");
lcd.setCursor(0,2);
lcd.print("Con successo ");
copia = 1 ;
delay(4000);
break;
}else{
lcd.setCursor(0,1);
lcd.print("Prova ricezione code : ");
lcd.setCursor(0,2);
lcd.print(mySwitch.getReceivedValue());
}
}
}
mySwitch.resetAvailable();
ms1 -= refreshms1;
// se i secondi sono minori di due cifre sposto i secondi
if ( (ms1/1000) <= 9 ){
lcd.setCursor(15,3);
lcd.print((ms1/1000));
lcd.print(" s");
//Serial.print((ms/1000));
//Serial.print(" SEC\r\n\r");
}else{
lcd.setCursor(15,3);
lcd.print((ms1/1000));
lcd.print("s");
//Serial.print((ms/1000));
//Serial.print("SEC\r\n\r");
}
delay(refreshms1);
if (o == 10000 / refreshms1)
{
//operazioni da eseguire alla fine del countdown
lcd.setCursor(0,1);
lcd.print("Ripetere la Copia ");
lcd.setCursor(0,2);
lcd.print("Copia non eseguita ");
delay(4000);
break;
}
}
}
}
ed il video dimostrativo