Мазмуну:

Resecupérer Les Codes Infra-Rouge Et 433mhz: 4 кадам
Resecupérer Les Codes Infra-Rouge Et 433mhz: 4 кадам

Video: Resecupérer Les Codes Infra-Rouge Et 433mhz: 4 кадам

Video: Resecupérer Les Codes Infra-Rouge Et 433mhz: 4 кадам
Video: Télécommande universelle, pour portail ou garage automatique. 2024, Июль
Anonim
Les Codes Infra-Rouge Et 433mhz редактору
Les Codes Infra-Rouge Et 433mhz редактору

Le but est d’afficher les kodları des télécommandes du stylee 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.

Түзмөктө, орнотууда, коддордо жана пилоттук кызматтарда!

1 -кадам: Ле Монтаж

Le Montage
Le Montage

Жөнөкөй, Arduino Nano эмес, инфраструктура диапазону 433 МГц.

2 -кадам: Le Code Arduino

// InfraRouge

#кошуу

int recvPin = 11; // Arduino төөнөгүчүн кабыл алуучу InfraRouge (TOSP4838)

IRrecv irrecv (recvPin);

// RX433

#кошуу

RCSwitch mySwitch = RCSwitch ();

decode_results жыйынтыктары;

жараксыз орнотуу ()

{

Serial.begin (9600);

irrecv.enableIRIn ();

irrecv.blink13;

mySwitch.enableReceive (0); // Récepteur RX433 (XY-MK-5V) 2 pin Arduino Uno et Nano

}

// affichage des коддору InfraRouge

жараксыз код (decode_results *натыйжалары)

{

// Panasonic

if (results-> decode_type == PANASONIC) {

Serial.print (натыйжалар-> дарек, HEX);

Serial.print (":");

}

Serial.print (results-> мааниси, HEX);

} // жараксыз

// afficahge des encodés коддору

жараксыз коддоо (decode_results *натыйжалары)

{

которуштуруу (натыйжалар-> декоддун_түрү) {

демейки:

учурда БЕЛГИСИЗ: Serial.print ("Inconnu"); тыныгуу;

case NEC: Serial.print ("NEC"); тыныгуу;

case SONY: Serial.print ("SONY"); тыныгуу;

case RC5: Serial.print ("RC5"); тыныгуу;

иши RC6: Serial.print ("RC6"); тыныгуу;

case DISH: Serial.print ("DISH"); тыныгуу;

case SHARP: Serial.print ("SHARP"); тыныгуу;

case JVC: Serial.print ("JVC"); тыныгуу;

case SANYO: Serial.print ("SANYO"); тыныгуу;

case MITSUBISHI: Serial.print ("MITSUBISHI"); тыныгуу;

case SAMSUNG: Serial.print ("SAMSUNG"); тыныгуу;

иш LG: Serial.print ("LG"); тыныгуу;

case WHYNTER: Serial.print ("WHYNTER"); тыныгуу;

case AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); тыныгуу;

case PANASONIC: Serial.print ("PANASONIC"); тыныгуу;

case DENON: Serial.print ("Denon"); тыныгуу;

}

}

// dump les résultats

жараксыз dumpInfo (decode_results *натыйжалары)

{

// Буфердин толуп кеткенин текшериңиз

if (results-> overflow) {

Serial.println ("IR коду өтө узун. IRremoteInt.h түзөтүү жана RAWBUF жогорулатуу");

кайтуу;

}

// Коддоо стандартын көрсөтүү

Serial.print ("Encodage:");

коддоо (натыйжалар);

Serial.println ("");

// Кодду жана узундугун көрсөтүү

Serial.print ("Code:");

иркод (жыйынтыктар);

Serial.print ("(");

Serial.print (results-> бит, DEC);

Serial.println ("бит"));

}

// структура

void dumpRaw (decode_results *натыйжалары)

{

// Чийки маалыматтарды басып чыгаруу

Serial.print ("Хронинг [");

Serial.print (натыйжалар-> rawlen-1, DEC);

Serial.println ("]:");

үчүн (int i = 1; i rawlen; i ++) {

белгисиз узун x = натыйжалары-> rawbuf * USECPERTICK;

if (! (i & 1)) {// ал тургай

Serial.print ("-");

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

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

Serial.print (x, DEC);

} башка {// кызык

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 структурасын таштаңыз.

//

жараксыз dumpCode (decode_results *натыйжалары)

{

// Декларацияны баштаңыз

Serial.print ("unsigned int"); // өзгөрмө түрү

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

Serial.print (натыйжалар-> rawlen - 1, DEC); // массивдин өлчөмү

Serial.print ("] = {"); // Декларацияны баштаңыз

// Маалыматтарды төгүү

үчүн (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 ("");

иркод (жыйынтыктар);

// Жаңы сызык

Serial.println ("");

// Эми "белгилүү" коддорду төгүңүз

if (results-> decode_type! = Белгисиз) {

// Кээ бир протоколдордун дареги бар

if (results-> decode_type == PANASONIC) {

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

Serial.print (натыйжалар-> дарек, HEX);

Serial.println (";");

}

// Бардык протоколдордо маалыматтар бар

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

Serial.print (results-> мааниси, HEX);

Serial.println (";");

}

}

боштук цикл ()

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

{

decode_results жыйынтыктары; // Жыйынтыктарды сактоо үчүн бир жерде

if (irrecv.decode (& results)) {// IR кодун кармаңыз

dumpInfo (& жыйынтыктар); // Жыйынтыктарды чыгаруу

dumpRaw (& жыйынтыктары); // RAW форматында жыйынтыктарды чыгаруу

dumpCode (& жыйынтыктар); // Натыйжаларды баштапкы код катары чыгаруу

Serial.println (""); // Жазуулардын ортосундагы бош сызык

irrecv.resume (); // Кийинки баага даярдан

}

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

эгер (mySwitch.available ())

{

int мааниси = mySwitch.getReceivedValue ();

Serial.println ("RX433");

if (value == 0) {

Serial.print ("Codage inconnu");

} башка

{

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-кадам: Inf Les-Codes Infra-Rouge маалыматы

Il y a plusieurs протоколдору:

NEC: 32 бит (протоколдун чоо -жайы)

Sony: 12 же 20 бит (протоколдун чоо -жайы) (Sony IR алыскы коддорун түшүнүү.)

RC5: 12 бит (протоколдун чоо -жайы)

RC6: 20 же 36 бит (протоколдун чоо -жайы)

Sony жана RC5/6 төктү, 3 дарекке жеткирүү керек!

ЭСКЕРТҮҮ: la librairie IRremote.h ne semble pas pouvoir envoyer decodes codés sur plus de 32bits. Les RC6, 36 чайкоочулуктун элчиси, преннент плюс де taille mémoire.

L'envoie desodes se fera avec la librairie IRremote.h

Мисалы: (0x devant le code) жана bits irsend.sendNEC (0xA55A38C7, 32);

4 -кадам: Info Sur Codes RX433

L'envoie se fera avec la librairie RCSwitch.h

Exemple mySwitch.send (1975778, 24);

Peut facilement боюнча учкуч avec cela des prises commandés.

Сунушталууда: