Sisukord:
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
Kui see on olemas, on selle stiili juhtimisseadmete koodid, garaaži ja autokontrolli 433 mhz (RX433) infra-rouge de télévision au autre.
On pourra donc ensuite, grâce à une autre montage, envoyer ces code et piloter n’importe quoi!
Samm: Le Montage
Lihtne, Arduino Nano, infrapunakiirguse ja dioodiga 433 mhz.
2. samm: Le Code Arduino
// InfraRouge
#kaasake
int recvPin = 11; // pin Arduino pour récepteur InfraRouge (TOSP4838)
IRrecv irrecv (recvPin);
// RX433
#kaasake
RCSwitch mySwitch = RCSwitch ();
decode_results tulemused;
tühine seadistus ()
{
Seriaalne algus (9600);
irrecv.enableIRIn ();
irrecv.blink13 (tõsi); // allume la LED interne lors de l'envoie InfraRouge
mySwitch.enableRecept (0); Récepteur RX433 (XY-MK-5V) surn 2 de Arduino Uno et Nano
}
// affichage des koodid InfraRouge
void ircode (decode_results *tulemused)
{
// Panasonic
if (tulemused-> dekodeerimise_tüüp == PANASONIC) {
Serial.print (tulemused-> aadress, HEX);
Serial.print (":");
}
Serial.print (tulemused-> väärtus, HEX);
} // tühine
// afficahge des code encodés
tühine kodeering (decode_results *tulemused)
{
lüliti (tulemused-> dekodeerimise_tüüp) {
vaikimisi:
juhtum TUNDMATU: Serial.print ("Inconnu"); murda;
juhtum NEC: Serial.print ("NEC"); murda;
juhtum SONY: Serial.print ("SONY"); murda;
juhtum RC5: Serial.print ("RC5"); murda;
juhtum RC6: Serial.print ("RC6"); murda;
juhtum DISH: Serial.print ("DISH"); murda;
ümbris SHARP: Serial.print ("SHARP"); murda;
juhtum JVC: Serial.print ("JVC"); murda;
juhtum SANYO: Serial.print ("SANYO"); murda;
korpus MITSUBISHI: Serial.print ("MITSUBISHI"); murda;
ümbris SAMSUNG: Serial.print ("SAMSUNG"); murda;
juhtum LG: Serial.print ("LG"); murda;
juhtum WHYNTER: Serial.print ("WHYNTER"); murda;
juhtum AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); murda;
juhtum PANASONIC: Serial.print ("PANASONIC"); murda;
juhtum DENON: Serial.print ("Denon"); murda;
}
}
// dump les résultats
void dumpInfo (decode_results *tulemused)
{
// Kontrollige, kas puhver on üle voolanud
if (tulemused-> ületäitumine) {
Serial.println ("IR -kood on liiga pikk. Muutke IRremoteInt.h ja suurendage RAWBUF -i");
tagasipöördumine;
}
// Näita kodeerimisstandardit
Serial.print ("Kodeerimine:");
kodeerimine (tulemused);
Serial.println ("");
// Näita koodi ja pikkust
Serial.print ("Kood:");
ircode (tulemused);
Serial.print ("(");
Serial.print (tulemused-> bitti, DEC);
Serial.println ("bitti"));
}
// struktuur
void dumpRaw (decode_results *tulemused)
{
// Prindi toorandmed
Serial.print ("Ajastus [");
Serial.print (tulemused-> rawlen-1, DEC);
Serial.println ("]:");
jaoks (int i = 1; i rawlen; i ++) {
allkirjata pikk x = tulemused-> rawbuf * USECPERTICK;
kui (! (i & 1)) {// isegi
Serial.print ("-");
if (x <1000) Serial.print ("");
if (x <100) Serial.print ("");
Serial.print (x, DEC);
} muu {// veider
Serial.print ("");
Serial.print ("+");
if (x <1000) Serial.print ("");
if (x <100) Serial.print ("");
Serial.print (x, DEC);
if (i rawlen-1) Serial.print (","); // ',' pole viimase jaoks vajalik
}
kui (! (i % 8)) Serial.println ("");
}
Serial.println (""); // Uus rida
}
//+=============================================================================
// Eemaldage struktuur decode_results.
//
void dumpCode (decode_results *tulemused)
{
// Alusta deklareerimist
Serial.print ("unsigned int"); // muutuja tüüp
Serial.print ("rawData ["); // massiivi nimi
Serial.print (tulemused-> rawlen - 1, DEC); // massiivi suurus
Seeria.print ("] = {"); // Alusta deklareerimist
// Andmete tühjendamine
jaoks (int i = 1; i rawlen; i ++) {
Serial.print (tulemused-> rawbuf * USECPERTICK, DEC);
if (i rawlen-1) Serial.print (","); // ',' viimasel pole vaja
if (! (i & 1)) Serial.print ("");
}
// Lõppdeklaratsioon
Seeria.print ("};"); //
// Kommentaar
Serial.print ("//");
kodeerimine (tulemused);
Serial.print ("");
ircode (tulemused);
// Uus rida
Serial.println ("");
// Nüüd tühjendage "teadaolevad" koodid
if (tulemused-> dekodeerimise_tüüp! = TUNDMATU) {
// Mõnel protokollil on aadress
if (tulemused-> dekodeerimise_tüüp == PANASONIC) {
Serial.print ("unsigned int addr = 0x");
Serial.print (tulemused-> aadress, HEX);
Serial.println (";");
}
// Kõigil protokollidel on andmed
Serial.print ("allkirjastamata int andmed = 0x");
Serial.print (tulemused-> väärtus, HEX);
Serial.println (";");
}
}
tühine tsükkel ()
/************************************************ *InfraRouge *****************************************/
{
decode_results tulemused; // Kuhugi tulemuste salvestamiseks
if (irrecv.decode (& results)) {// Haara IR -kood
dumpInfo (& tulemused); // Väljundi tulemused
dumpRaw (& tulemused); // Väljastage tulemused RAW -vormingus
dumpCode (& tulemused); // Väljundi tulemused lähtekoodina
Serial.println (""); // Tühi rida kirjete vahel
irrecv.resume (); // Valmistuge järgmiseks väärtuseks
}
/************************************************ *** RX433 ******************************************/
kui (mySwitch.available ())
{
int väärtus = mySwitch.getReceivedValue ();
Serial.println ("RX433");
kui (väärtus == 0) {
Serial.print ("Codage inconnu");
} muud
{
Serial.print ("Reçu");
Serial.print (mySwitch.getReceivedValue ());
Serial.print (" /");
Serial.print (mySwitch.getReceivedBitlength ());
Serial.print ("bit");
Serial.print ("Protokoll:");
Serial.println (mySwitch.getReceivedProtocol ());
}
mySwitch.resetAvailable ();
} // RX433
} // silmus
3. samm: Infos Sur Les Codes Infra-Rouge
Lisaprotokollid:
NEC: 32 bitti (protokolli üksikasjad)
Sony: 12 või 20 bitti (protokolli üksikasjad) (Sony IR kaugkoodide mõistmine.)
RC5: 12 bitti (protokolli üksikasjad)
RC6: 20 ou 36 bitti (protokolli üksikasjad)
Valage Sony ja RC5/6, tehke käigukast 3 tassi!
TÄHELEPANU: la librairie IRremote.h ne semble pas pouvoir envoyer des code codés sur plus de 32bits. Les RC6, 36 doivent donc êtres envoyer en raw, qui prennent plus de taille mémoire.
L’envoie des koodid se fera avec la librairie IRremote.h
Näide: (0x devant le code) ja nbspre bits irsend.sendNEC (0xA55A38C7, 32);
Samm 4: Teave Sur koodid RX433
L’envoie se fera avec la librairie RCSwitch.h
Näide mySwitch.send (1975778, 24);
Peut facilement piloot avec cela des prises commandés.