Moje zkušenosti s modulem pro IR control typu HX1838 od Dratek_cz
Při překladu, když jsem si nenainstaloval potřebnou knihovnu a Arduino IDE 1.8... ji neznalo, tak se mi pro IRremote dohledala knihovna IRremote ale poslední verze 4.4.1. ..
Překlad s ní normálně prošel ale pak mi na monitoru vyjelo sáhodlouhé čtení, které jsem si hned nepřečetl a pokládal jsem to za nějaký autorův pozdrav.
IR mi částečně reagovalo nebo nereagovalo, tak co s tím, nakonec jsem se šel podívat na ten Github a tam jsem zjistil že verze IRremote 4.4.1. je na úplně jiný level komunikace, ani nevím, zda s týmž typem modulu nebo s nějakým vylepšeným, kdo má zájem, ať si to tam zkusí prostudovat.
Teprve potom jsem si přečetl, co se mi na monitoru vlastně vypsalo :
IR remote receiver version 2.6.0 from Github is on !
16:37:46.737 -> **************************************************************************
16:37:46.822 -> Thank you for using the IRremote library!
16:37:46.860 -> It seems, that you are using a old version 2.0 code / example.
16:37:46.960 -> This version is no longer supported!
16:37:46.960 -> Please use one of the new code examples from the library,
16:37:47.060 -> available at "File > Examples > Examples from Custom Libraries / IRremote".
16:37:47.107 -> Or downgrade your library to version 2.6.0.
16:37:47.192 ->
16:37:47.192 -> Start with the SimpleReceiver or SimpleSender example.
16:37:47.239 ->
16:37:47.239 -> The examples are documented here:
16:37:47.277 -> https://github.com/Arduino-IRremote/Arduino-IRremote#examples-for-this-library
16:37:47.323 -> A guide how to convert your 2.0 program is here:
16:37:47.408 -> https://github.com/Arduino-IRremote/Arduino-IRremote#converting-your-2x-program-to-the-4x-version
16:37:47.508 ->
16:37:47.508 -> Thanks
16:37:47.508 -> **************************************************************************
Tak jsem pochopil, že tu doporučenou knihovnu IRremote2 v zipu jsem si asi měl nainstalovat spíš než tu, kterou mi tam Arduino INE dohodilo.
Po její doinstalaci už pak běželo všechno tak, jak to bylo v progámku připraveno !!
Zde je kousek výpisu z monitoru :
IR-control-HX1838-Dratek-po-01 2024-11-27 1214 výpis z monitoru
12:14:02.632 -> IR remote receiver verdion 2.6.0 from Github is on !
12:14:12.807 -> FFE21D
12:14:12.807 -> Stisknuto CH+
12:14:19.077 -> FF629D
12:14:19.077 -> Stisknuto CH
12:14:23.467 -> FFA25D
12:14:23.467 -> Stisknuto CH-
. . . . . . . . .
12:14:44.391 -> FFE01F
12:14:44.391 -> Stisknuto VOL-
12:14:47.052 -> FFA857
12:14:47.052 -> Stisknuto VOL+
12:14:50.338 -> FF906F
12:14:50.338 -> Stisknuto EQ
12:14:53.616 -> FF6897
12:14:53.616 -> Stisknuto 0
12:14:55.690 -> FF9867
12:14:55.690 -> Stisknuto 100+
12:14:57.479 -> FFB04F
12:14:57.479 -> Stisknuto 200+
12:15:00.133 -> FF30CF
12:15:00.133 -> Stisknuto 1
12:15:02.138 -> FF18E7
12:15:02.138 -> Stisknuto 2
12:15:06.180 -> FF7A85
12:15:06.180 -> Stisknuto 3 atd ...
Původní prográmek jsem si trošku upravil, takže s ním mohu zapínat a vypínat dvě ledky, červenou a zelenou ... pokud bych tam přidal ještě žlutou, tak bych z toho měl i semafor ... tady je výpis z monitoru :
17:06:27.457 -> IR remote receiver version 2.6.0 from Github is on !
17:06:36.635 -> FF30CF
17:06:36.635 -> Stisknuto 1
17:06:36.635 -> Green LED on !
17:06:42.650 -> FF7A85
17:06:42.650 -> Stisknuto 3
17:06:42.650 -> Green LED off !
17:06:49.869 -> FF10EF
17:06:49.869 -> Stisknuto 4
17:06:49.869 -> Red LED on !
17:06:55.785 -> FF5AA5
17:06:55.785 -> Stisknuto 6
17:06:55.785 -> Red LED off !
Kód pro Arduino:
// IR-control-HX1838-Dratek-po-02.ino // Dálkové ovládání infračervené s HX1838 // zkouska ovladani dvou LED diod // Green Led se zapne tlacitkem 1 a vypne tlacitkem 3 // Red Led se zapne tlacitkem 4 a vypne tlacitkem 6 // připojení knihovny #include"IRremote2.h" // // nastavení čísla pinu pro propojení s Arduinem #define pinIN 4 // //Led diody, ktere budou spinany a vypinany const int LED1_Pin = 5; // Green LED const int LED2_Pin = 6; // Red LED // vytvoření instance dalkoveOvladani z knihovny IRremote2 // a proměnné odezvaSenzoru pro ukládání výsledků IRrecv dalkoveOvladani(pinIN); decode_results odezvaSenzoru; void setup() { // komunikace přes sériovou linku rychlostí 9600 baud Serial.begin(9600); // start komunikace s IR přijímačem Serial.println("IR remote receiver version 2.6.0 from Github is on !"); dalkoveOvladani.enableIRIn(); //zhasnuti obou diod pinMode(LED1_Pin, OUTPUT); pinMode(LED2_Pin, OUTPUT); } void loop() { // v if podmínce je volána funkce decode // pro načtení dat z přijímače - pokud přišel // signál, provede se obsah if podmínky if (dalkoveOvladani.decode(&odezvaSenzoru)) { // pro zkoušení nového ovladače stačí odkomentovat // následující řádek a číst data po sériové lince Serial.println(odezvaSenzoru.value, HEX); // volání podprogramu detekceKlaves pro // zjištění názvu klávesy detekceKlaves(); // pokračování v detekci nových stisků dalkoveOvladani.resume(); } } // podprogram s překladem syrových hodnot na // jednotlivá tlačítka void detekceKlaves() { switch(odezvaSenzoru.value) { // u každé stisknuté klávesy se vždy vypíše // její název po sériové lince case 0xFFA25D: Serial.println("Stisknuto CH-"); break; case 0xFF629D: Serial.println("Stisknuto CH"); break; case 0xFFE21D: Serial.println("Stisknuto CH+"); break; case 0xFF22DD: Serial.println("Stisknuto PREV"); break; case 0xFF02FD: Serial.println("Stisknuto NEXT"); break; case 0xFFC23D: Serial.println("Stisknuto PLAY/PAUSE"); break; case 0xFFE01F: Serial.println("Stisknuto VOL-"); break; case 0xFFA857: Serial.println("Stisknuto VOL+"); break; case 0xFF906F: Serial.println("Stisknuto EQ"); break; case 0xFF6897: Serial.println("Stisknuto 0"); break; case 0xFF9867: Serial.println("Stisknuto 100+"); break; case 0xFFB04F: Serial.println("Stisknuto 200+"); break; case 0xFF30CF: Serial.println("Stisknuto 1"); //Green LED on digitalWrite(LED1_Pin, HIGH); Serial.println("Green LED on !"); break; case 0xFF18E7: Serial.println("Stisknuto 2"); break; case 0xFF7A85: Serial.println("Stisknuto 3"); //Green LED off digitalWrite(LED1_Pin, LOW); Serial.println("Green LED off !"); break; case 0xFF10EF: Serial.println("Stisknuto 4"); // Red Led on digitalWrite(LED2_Pin, HIGH); Serial.println("Red LED on !"); break; case 0xFF38C7: Serial.println("Stisknuto 5"); break; case 0xFF5AA5: Serial.println("Stisknuto 6"); digitalWrite(LED2_Pin, LOW); // Red Led off Serial.println("Red LED off !"); break; case 0xFF42BD: Serial.println("Stisknuto 7"); break; case 0xFF4AB5: Serial.println("Stisknuto 8"); break; case 0xFF52AD: Serial.println("Stisknuto 9"); break; default: Serial.println("Stisknuta jina klavesa"); } // pauza pro přehlednější výpis delay(500); }
Jinak sensor je také vhodný ke kontrole funkčnosti ovladačů nejrůznějších typů.
To jsem si vyzkoušel na ovladači GoGen a chodilo to bezvadně.
Arduino Nano, diody a snímač jsem si zabudoval do krabičky od šunkových závitků
s křenem a mám z toho hračku pro děti a tester na IR ovladače. Příště si z toho udělám ten semafor .. :)