IR control typu HX1838

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

Další podobné články

Senzor oxidu uhelnatého MQ-9

Senzor reaguje nejvíce na oxid uhelnatý (CO) ale i na hořlavé plyny metan a propan. Aktivním prvkem tohoto senzoru je tenká vrstva SnO2, jejíž odpor se mění s koncentrací zmíněných plynů.

RFID Systém s LCD displejem, bzučákem a servomotorem

Tento projekt ukazuje, jak vytvořit jednoduchý přístupový systém pomocí RFID čtečky, LCD displeje, bzučáku a servomotoru. Systém umožňuje kontrolu přístupu pomocí RFID tagů – při správném tagu se servo otočí, zobrazí se zpráva, a systém se resetuje. Při špatném tagu bzučák vydá zvuk a zobrazí se zamítnutí přístupu.