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 .. :)