Съдържание:

Récupérer Les Codes Infra-Rouge Et 433mhz: 4 стъпки
Récupérer Les Codes Infra-Rouge Et 433mhz: 4 стъпки

Видео: Récupérer Les Codes Infra-Rouge Et 433mhz: 4 стъпки

Видео: Récupérer Les Codes Infra-Rouge Et 433mhz: 4 стъпки
Видео: Télécommande Infra rouge 2/3 2024, Ноември
Anonim
Récupérer Les Codes Infra-Rouge Et 433mhz
Récupérer Les Codes Infra-Rouge Et 433mhz

Le but est d’afficher les codes des télécommandes du style commande de lampe, porte de garage et autre fonctionnant sous 433 mhz (RX433) mais aussi ceux des télécommandes infra-rouge de télévision au autre.

На pourra donc ensuite, grâce à une autre монтаж, пратеник ces кодове и пилот не импортирайте quoi!

Стъпка 1: Le Montage

Le Montage
Le Montage

Прост, без Arduino Nano, инфрачервен инфрачервен диод с диод и приемник 433 mhz.

Стъпка 2: Le Code Arduino

// InfraRouge

#включва

int recvPin = 11; // щифт Arduino за приемник InfraRouge (TOSP4838)

IRrecv unrecv (recvPin);

// RX433

#включва

RCSwitch mySwitch = RCSwitch ();

decode_results резултати;

void setup ()

{

Serial.begin (9600);

unrecv.enableIRIn ();

unrecv.blink13 (вярно); // allume la LED internet lors de l'envoie InfraRouge

mySwitch.enableReceive (0); // Récepteur RX433 (XY-MK-5V) извод 2 от Arduino Uno et Nano

}

// affichage des code InfraRouge

void ircode (decode_results *резултати)

{

// Panasonic

if (резултати-> decode_type == PANASONIC) {

Serial.print (резултати-> адрес, HEX);

Serial.print (":");

}

Serial.print (резултати-> стойност, HEX);

} // невалиден

// afficahge des code encodés

кодиране на void (decode_results *резултати)

{

ключ (резултати-> декодиране_тип) {

по подразбиране:

случай НЕИЗВЕСТЕН: Serial.print ("Inconnu"); прекъсване;

калъф NEC: Serial.print ("NEC"); прекъсване;

калъф SONY: Serial.print ("SONY"); прекъсване;

калъф RC5: Serial.print ("RC5"); прекъсване;

случай RC6: Serial.print ("RC6"); прекъсване;

калъф DISH: Serial.print ("DISH"); прекъсване;

калъф SHARP: Serial.print ("SHARP"); прекъсване;

калъф JVC: Serial.print ("JVC"); прекъсване;

калъф SANYO: Serial.print ("SANYO"); прекъсване;

калъф MITSUBISHI: Serial.print ("MITSUBISHI"); прекъсване;

калъф SAMSUNG: Serial.print ("SAMSUNG"); прекъсване;

калъф LG: Serial.print ("LG"); прекъсване;

регистър WHYNTER: Serial.print ("WHYNTER"); прекъсване;

калъф AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); прекъсване;

калъф PANASONIC: Serial.print ("PANASONIC"); прекъсване;

калъф DENON: Serial.print ("Denon"); прекъсване;

}

}

// dump les résultats

void dumpInfo (decode_results *резултати)

{

// Проверете дали буферът е препълнен

if (резултати-> препълване) {

Serial.println ("IR кодът е твърде дълъг. Редактирайте IRremoteInt.h и увеличете RAWBUF");

връщане;

}

// Показване на стандарта за кодиране

Serial.print ("Encodage:");

кодиране (резултати);

Serial.println ("");

// Показване на код и дължина

Serial.print ("Код:");

ircode (резултати);

Serial.print ("(");

Serial.print (резултати-> битове, DEC);

Serial.println ("битове)");

}

// структура

void dumpRaw (decode_results *резултати)

{

// Печат на необработени данни

Serial.print ("Timing [");

Serial.print (резултати-> rawlen-1, DEC);

Serial.println ("]:");

for (int i = 1; i rawlen; i ++) {

unsigned long x = results-> rawbuf * USECPERTICK;

if (! (i & 1)) {// четно

Serial.print ("-");

if (x <1000) Serial.print ("");

if (x <100) Serial.print ("");

Serial.print (x, DEC);

} else {// нечетно

Serial.print ("");

Serial.print ("+");

if (x <1000) Serial.print ("");

if (x <100) Serial.print ("");

Serial.print (x, DEC);

if (i rawlen-1) Serial.print (","); // ',' не е необходимо за последното

}

if (! (i % 8)) Serial.println ("");

}

Serial.println (""); // Нова линия

}

//+=============================================================================

// Изхвърлете структурата decode_results.

//

void dumpCode (decode_results *резултати)

{

// Старт на декларацията

Serial.print ("unsigned int"); // променлив тип

Serial.print ("rawData ["); // име на масива

Serial.print (резултати-> необработени - 1, DEC); // размер на масива

Serial.print ("] = {"); // Старт на декларацията

// Изхвърляне на данни

for (int i = 1; i rawlen; i ++) {

Serial.print (резултати-> rawbuf * USECPERTICK, DEC);

if (i rawlen-1) Serial.print (","); // ',' не е необходимо на последния

if (! (i & 1)) Serial.print ("");

}

// Крайна декларация

Serial.print ("};"); //

// Коментар

Serial.print ("//");

кодиране (резултати);

Serial.print ("");

ircode (резултати);

// Нова линия

Serial.println ("");

// Сега изхвърлете "известни" кодове

if (results-> decode_type! = UNKNOWN) {

// Някои протоколи имат адрес

if (резултати-> decode_type == PANASONIC) {

Serial.print ("unsigned int addr = 0x");

Serial.print (резултати-> адрес, HEX);

Serial.println (";");

}

// Всички протоколи имат данни

Serial.print ("unsigned int data = 0x");

Serial.print (резултати-> стойност, HEX);

Serial.println (";");

}

}

void loop ()

/************************************************* *InfraRouge ******************************************/

{

decode_results резултати; // Някъде за съхраняване на резултатите

if (unrecv.decode (& results)) {// Вземете IR код

dumpInfo (& резултати); // Извеждане на резултатите

dumpRaw (& резултати); // Извежда резултатите във формат RAW

dumpCode (& резултати); // Извеждаме резултатите като изходен код

Serial.println (""); // Празен ред между записите

unrecv.resume (); // Подгответе се за следващата стойност

}

/************************************************* *** RX433 ********************************************/

if (mySwitch.available ())

{

int стойност = mySwitch.getReceivedValue ();

Serial.println ("RX433");

ако (стойност == 0) {

Serial.print ("Codage inconnu");

} else

{

Serial.print ("Reçu");

Serial.print (mySwitch.getReceivedValue ());

Serial.print (" /");

Serial.print (mySwitch.getReceivedBitlength ());

Serial.print ("бит");

Serial.print ("Протокол:");

Serial.println (mySwitch.getReceivedProtocol ());

}

mySwitch.resetAvailable ();

} // RX433

} // цикъл

Стъпка 3: Infos Sur Les Codes Infra-Rouge

Протоколите „плюс плюс“:

NEC: 32 бита (подробности за протокола)

Sony: 12 ou 20 бита (подробности за протокола) (Разбиране на кодовете за дистанционно управление на Sony IR.)

RC5: 12 бита (подробности за протокола)

RC6: 20 ou 36 бита (подробности за протокола)

Изсипете Sony et RC5/6, предаването на Chaque е подходящо за 3 респекта!

ВНИМАНИЕ: 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 codes se fera avec la librairie IRremote.h

Пример: (0x devant le code) et le nombre de bits irsend.sendNEC (0xA55A38C7, 32);

Стъпка 4: Infos Sur Codes RX433

L’envoie se fera avec la librairie RCSwitch.h

Например mySwitch.send (1975778, 24);

Пилотът на peut facilement avec cela des prises commandés.

Препоръчано: