Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-13 06:58
Bu erda 433 MGts chastotali (RX433) mais aussi ceux des télécommandes infra-rouge de télévision au autre.
Qachonki, montaj qilinsa, kodlarni yuborish va uchuvchisiz yuborish kerak!
1 -qadam: Le Montaj
Oddiy, Arduino Nano-da, infraqizil-diodli va 433 MGts chastotali chastotali.
2 -qadam: Le Code Arduino
// InfraRouge
#qo'shing
int recvPin = 11; // InfraRouge (TOSP4838) qabul qilgichini Arduino -ga ulang
IRrecv irrecv (recvPin);
// RX433
#qo'shing
RCSwitch mySwitch = RCSwitch ();
decode_results natijalari;
bo'sh o'rnatish ()
{
Serial.begin (9600);
irrecv.enableIRIn ();
irrecv.blink13 (rost); // LED yoritgichlari
mySwitch.enableReceive (0); // RX433 qabul qiluvchisi (XY-MK-5V) 2-pinli Arduino Uno va Nano
}
// InfraRouge kodlari
bekor kodi (kod hal qilish natijalari *natijalari)
{
// Panasonic
agar (natijalar-> dekod_tipi == PANASONIK) {
Serial.print (natijalar-> manzil, HEX);
Serial.print (":");
}
Serial.print (natijalar-> qiymat, HEX);
} // bo'sh
// afficahge des encodés kodlari
bekor kodlash (dekodlash_ natijalari *natijalari)
{
almashtirish (natijalar-> dekod_tipi) {
standart:
noma'lum holat: Serial.print ("Inconnu"); tanaffus;
ish NEC: Serial.print ("NEC"); tanaffus;
SONY holati: Serial.print ("SONY"); tanaffus;
ish RC5: Serial.print ("RC5"); tanaffus;
ish RC6: Serial.print ("RC6"); tanaffus;
ish DISH: Serial.print ("DISH"); tanaffus;
ish SHARP: Serial.print ("SHARP"); tanaffus;
ish JVC: Serial.print ("JVC"); tanaffus;
holat SANYO: Serial.print ("SANYO"); tanaffus;
MITSUBISHI holati: Serial.print ("MITSUBISHI"); tanaffus;
holat SAMSUNG: Serial.print ("SAMSUNG"); tanaffus;
LG korpusi: Serial.print ("LG"); tanaffus;
ish WHYNTER: Serial.print ("WHYNTER"); tanaffus;
ish AIWA_RC_T501: Serial.print ("AIWA_RC_T501"); tanaffus;
ish PANASONIC: Serial.print ("PANASONIC"); tanaffus;
ish DENON: Serial.print ("Denon"); tanaffus;
}
}
// dump les résultats
void dumpInfo (decode_results *natijalari)
{
// Tampon to'lib ketganligini tekshiring
agar (natijalar-> to'lib ketish) {
Serial.println ("IR kodi juda uzun. IRremoteInt.h -ni tahrir qiling va RAWBUF -ni oshiring");
qaytish;
}
// Kodlash standartini ko'rsatish
Serial.print ("Kodlash:");
kodlash (natijalar);
Serial.println ("");
// Kod va uzunlikni ko'rsatish
Serial.print ("Kod:");
Ircode (natijalar);
Serial.print ("(");
Serial.print (natijalar-> bit, DEC);
Serial.println ("bit"));
}
// tuzilish
void dumpRaw (decode_results *natijalari)
{
// Raw ma'lumotlarini chop etish
Serial.print ("Vaqt [");
Serial.print (natijalar-> rawlen-1, DEC);
Serial.println ("]:");
uchun (int i = 1; i rawlen; i ++) {
imzosiz uzun x = natijalar-> rawbuf * USECPERTICK;
agar (! (i va 1)) {// hatto
Serial.print ("-");
if (x <1000) Serial.print ("");
if (x <100) Serial.print ("");
Serial.print (x, DEC);
} boshqa {// g'alati
Serial.print ("");
Serial.print ("+");
if (x <1000) Serial.print ("");
if (x <100) Serial.print ("");
Serial.print (x, DEC);
if (i rawlen-1) Serial.print (","); // ',' oxirgi uchun kerak emas
}
agar (! (i % 8)) Serial.println ("");
}
Serial.println (""); // Yangi qator
}
//+=============================================================================
// decode_results tuzilishini olib tashlang.
//
bekor dumpCode (decode_results *natijalar)
{
// Deklaratsiyani boshlang
Serial.print ("imzosiz int"); // o'zgaruvchining turi
Serial.print ("rawData ["); // qator nomi
Serial.print (natijalar-> rawlen - 1, DEC); // massiv hajmi
Serial.print ("] = {"); // Deklaratsiyani boshlang
// Ma'lumotlarni o'chirish
uchun (int i = 1; i rawlen; i ++) {
Serial.print (natijalar-> rawbuf * USECPERTICK, DEC);
if (i rawlen-1) Serial.print (","); // ',' oxirgi satrda kerak emas
if (! (i & 1)) Serial.print ("");
}
// Deklaratsiyani tugatish
Serial.print ("};"); //
// Izoh
Serial.print ("//");
kodlash (natijalar);
Serial.print ("");
Ircode (natijalar);
// Yangi qator
Serial.println ("");
// Endi "ma'lum" kodlarni tashlab yuboring
agar (natijalar-> dekod_tipi = Bilmasangiz) {
// Ba'zi protokollarning manzili bor
agar (natijalar-> dekod_tipi == PANASONIK) {
Serial.print ("imzosiz int addr = 0x");
Serial.print (natijalar-> manzil, HEX);
Serial.println (";");
}
// Barcha protokollarda ma'lumotlar mavjud
Serial.print ("imzosiz int ma'lumotlar = 0x");
Serial.print (natijalar-> qiymat, HEX);
Serial.println (";");
}
}
bo'sh halqa ()
/*********************************************** *InfraRouge ****************************************/
{
decode_results natijalari; // Natijalarni saqlash uchun biror joy
if (irrecv.decode (& natijalar)) {// IR kodini oling
dumpInfo (va natijalar); // Natijalarni chiqarish
dumpRaw (va natijalar); // Natijalarni RAW formatida chiqarish
dumpCode (va natijalar); // Natijalarni manba kodi sifatida chiqaring
Serial.println (""); // Yozuvlar orasidagi bo'sh chiziq
irrecv.resume (); // Keyingi qiymatga tayyorlaning
}
/*********************************************** *** RX433 ******************************************/
agar (mySwitch.available ())
{
int qiymati = mySwitch.getReceivedValue ();
Serial.println ("RX433");
agar (qiymat == 0) {
Serial.print ("Codage inconnu");
} boshqa
{
Serial.print ("Reçu");
Serial.print (mySwitch.getReceivedValue ());
Serial.print (" /");
Serial.print (mySwitch.getReceivedBitlength ());
Serial.print ("bit");
Serial.print ("Protokol:");
Serial.println (mySwitch.getReceivedProtocol ());
}
mySwitch.resetAvailable ();
} // RX433
} // halqa
3-qadam: Infra-Rouge kodlari haqida ma'lumot
Il y a plusieurs protokollari:
NEC: 32 bit (protokol tafsilotlari)
Sony: 12 ou 20 bit (protokol tafsilotlari) (Sony IR masofaviy kodlarini tushunish.)
RC5: 12 bit (protokol tafsilotlari)
RC6: 20 yoki 36 bit (protokol tafsilotlari)
Sony va RC5/6 -ni to'kib tashlang, 3 ta ovoz o'tkazing!
DIQQAT: IRremote.h na semble pas pouvoir envoyer kodlar sur plus de 32bits. Les RC6, 36 -sonli vakolatli xodimlar, eng yaxshi va eng yuqori darajadagi elchi.
IRremote.h saytining kodlari
Misol: (0x devant le code) va boshqalar irsend.sendNEC (0xA55A38C7, 32);
4 -qadam: Sur kodlari haqida ma'lumot RX433
L'envoie se fera avec la librairie RCSwitch.h
Misol mySwitch.send (1975778, 24);
Peut facilement bo'yicha uchuvchi avec cela des prises commandés.