Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-13 06:58
Le but est d’afficher les codes des télécommandes du style commande de lampe, porte garazh dhe auton fonctionnant sous 433 mhz (RX433) mais aussi ceux des télécommandes infra-rouge de télévision au autre.
Për më tepër, siguroni një montazh të madh, dërgoni kodet e kodit dhe pilotit që nuk ju interesojnë!
Hapi 1: Le Montage
Thjeshtë, pa Arduino Nano, pa diodë réceptrice infra-rouge dhe un récepteur 433 mhz.
Hapi 2: Le Code Arduino
// InfraRouge
#përfshi
int recvPin = 11; // pin Arduino pour récepteur InfraRouge (TOSP4838)
IRrecv irrecv (recvPin);
// RX433
#përfshi
RCSwitch mySwitch = RCSwitch ();
rezultatet e deshifrimit_rezultateve;
void setup ()
{
Serial.filloj (9600);
irrecv.enableIRIn ();
irrecv.blink13 (e vërtetë); // allume la LED interne lors de l'envoie InfraRouge
mySwitch.enableReceive (0); // Récepteur RX433 (XY-MK-5V) mbi pin 2 nga Arduino Uno et Nano
}
// affichage des codes InfraRouge
ircode e pavlefshme (dekodoni_rezultatet *rezultatet)
{
// Panasonic
nëse (rezultatet-> lloji i dekodimit == PANASONIK) {
Serial.print (rezultatet-> adresa, HEX);
Serial.print (":");
}
Serial.print (rezultatet-> vlera, HEX);
} // e pavlefshme
// afficahge des kodet e koduara
kodim i pavlefshëm (dekodoni_rezultatet *rezultatet)
{
kaloni (rezultatet-> lloji i dekodimit) {
parazgjedhje:
rast I PANJOHUR: Serial.print ("Inconnu"); pushim;
rasti NEC: Serial.print ("NEC"); pushim;
rasti SONY: Serial.print ("SONY"); pushim;
rasti RC5: Serial.print ("RC5"); pushim;
rasti RC6: Serial.print ("RC6"); pushim;
rasti DISH: Serial.print ("DISH"); pushim;
rast SHARP: Serial.print ("SHARP"); pushim;
rasti JVC: Serial.print ("JVC"); pushim;
rasti SANYO: Serial.print ("SANYO"); pushim;
rasti MITSUBISHI: Serial.print ("MITSUBISHI"); pushim;
rasti SAMSUNG: Serial.print ("SAMSUNG"); pushim;
rast LG: Serial.print ("LG"); pushim;
rasti WHYNTER: Serial.print ("WHYNTER"); pushim;
rasti AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); pushim;
rast PANASONIC: Serial.print ("PANASONIC"); pushim;
rasti DENON: Serial.print ("Denon"); pushim;
}
}
// dump les résultats
void dumpInfo (deshifro_rezultatet *rezultatet)
{
// Kontrolloni nëse tamponi është tejmbushur
nëse (rezultatet-> tejmbushje) {
Serial.println ("Kodi IR shumë i gjatë. Redakto IRremoteInt.h dhe rrit RAWBUF");
kthim;
}
// Shfaq standardin e kodimit
Serial.print ("Kodimi:");
kodimi (rezultatet);
Serial.println ("");
// Shfaq kodin & gjatësinë
Serial.print ("Kodi:");
ircode (rezultatet);
Serial.print ("(");
Serial.print (rezultatet-> bit, DEC);
Serial.println ("bit"));
}
// struktura
void dumpRaw (deshifro_rezultatet *rezultatet)
{
// Shtypni të dhëna të papërpunuara
Serial.print ("Koha [");
Serial.print (rezultatet-> rawlen-1, DEC);
Serial.println ("]:");
për (int i = 1; i rawlen; i ++) {
i panënshkruar i gjatë x = rezultate-> rawbuf * USECPERTICK;
nëse (! (i & 1)) {// madje
Serial.print ("-");
nëse (x <1000) Serial.print ("");
nëse (x <100) Serial.print ("");
Serial.print (x, DEC);
} tjetër {// i rastësishëm
Serial.print ("");
Serial.print ("+");
nëse (x <1000) Serial.print ("");
nëse (x <100) Serial.print ("");
Serial.print (x, DEC);
nëse (i rawlen-1) Serial.print (","); // ',' nuk nevojitet për të fundit
}
nëse (! (i % 8)) Serial.println ("");
}
Serial.println (""); // Linja e re
}
//+=============================================================================
// Hidheni strukturën e deshifrimit_rezultatet.
//
void dumpCode (deshifro_rezultatet *rezultatet)
{
// Filloni deklaratën
Serial.print ("int pa shenjë"); // lloji i ndryshueshëm
Serial.print ("rawData ["); // emri i grupit
Serial.print (rezultatet-> rawlen - 1, DEC); // madhësia e grupit
Serial.print ("] = {"); // Filloni deklaratën
// Hedh të dhënat
për (int i = 1; i rawlen; i ++) {
Serial.print (rezultate-> rawbuf * USECPERTICK, DEC);
nëse (i rawlen-1) Serial.print (","); // ',' nuk nevojitet në të fundit
nëse (! (i & 1)) Serial.print ("");
}
// Përfundoni deklaratën
Serial.print ("};"); //
// Koment
Serial.print ("//");
kodimi (rezultatet);
Serial.print ("");
ircode (rezultatet);
// Linja e re
Serial.println ("");
// Tani hidhni kodet "e njohura"
nëse (rezultatet-> lloji i dekodimit! = I PANJOHUR) {
// Disa protokolle kanë një adresë
nëse (rezultatet-> lloji i dekodimit == PANASONIK) {
Serial.print ("unsigned int addr = 0x");
Serial.print (rezultatet-> adresa, HEX);
Serial.println (";");
}
// Të gjithë protokollet kanë të dhëna
Serial.print ("të dhënat e panënshkruara int = 0x");
Serial.print (rezultatet-> vlera, HEX);
Serial.println (";");
}
}
lak void ()
/********************************************* *InfraRouge **************************************/
{
rezultatet e deshifrimit_rezultateve; // Diku për të ruajtur rezultatet
if (irrecv.decode (& results)) {// Merrni një kod IR
dumpInfo (& rezultatet); // Nxjerr rezultatet
dumpRaw (& rezultatet); // Nxjerr rezultatet në formatin RAW
dumpCode (& rezultatet); // Nxjerr rezultatet si kod burimi
Serial.println (""); // Linja bosh midis shënimeve
irrecv.resume (); // Përgatituni për vlerën tjetër
}
/********************************************* *** RX433 ****************************************/
nëse (mySwitch.available ())
{
int vlera = mySwitch.getReceivedValue ();
Serial.println ("RX433");
nëse (vlera == 0) {
Serial.print ("Codage inconnu");
} tjetër
{
Serial.print ("Reçu");
Serial.print (mySwitch.getReceivedValue ());
Serial.print (" /");
Serial.print (mySwitch.getReceivedBitlength ());
Serial.print ("bit");
Serial.print ("Protocole:");
Serial.println (mySwitch.getReceivedProtocol ());
}
mySwitch.resetAvailable ();
} // RX433
} // lak
Hapi 3: Infos Sur Les Codes Infra-Rouge
Protokole Il y a plusieurs:
NEC: 32 bit (detajet e protokollit)
Sony: 12 ose 20 bit (detaje të protokollit) (Kuptimi i kodeve të largëta të IR IR të Sony.)
RC5: 12 bit (detajet e protokollit)
RC6: 20 ose 36 bit (detajet e protokollit)
Derdhni Sony et RC5/6, transmetimi chaque do të bëjë të njëjtën gjë 3!
KUJDES: la librari IRremote.h ne semble pas pouvoir i dërguari i kodeve kodet mbi plus 32bit. Les RC6, 36 nuk do të donte të dërgonte një informacion të papërpunuar, si dhe më shumë se një mesazh tjetër.
L’envoie des codes se fera avec la librairie IRremote.h
Shembull: (0x devant le code) dhe nombre de bit irsend.sendNEC (0xA55A38C7, 32);
Hapi 4: Infos Sur Codes RX433
L’envoie se fera avec la librairie RCSwitch.h
Shembull mySwitch.send (1975778, 24);
On peut facilement pilot pilot avec cela des prises commandés.