Televizní dálkový ovladač a arduino

26.03.2017 Arduino #arduino #tutorial

Ukázka zapojení jak využít jakýkoliv dálkový ovladač a Arduinem.


V tomto projektu bych chtěl ukázat jak můžeme použít jakýkoliv dálkový ovladač co máte v domácnosti k ovládání Arduina. Zároveň si ukážeme použití sedmi-segmentového displeje. Každý dálkový ovladač vysílá jiné kódy, takže nejprve si budeme muset zjistit jaké kódy vysílají jednotlivá tlačítka na ovladači. K tomu použijeme výstup na Serial monitor. Zapojte IR přijímač podle schématu a potom na dálkovém ovladači stiskněte některé tlačítko (třeba jedničku). Serial monitor vám vypíše kód který toto tlačítko vysílá. V případě mnou použitého ovladače je to 8C03F. V programu si budete muset upravit funkci translateIR(). Musíte zaměnit kódy na ty co vysílá váš ovladač. Všimněte si že před kódem je třeba připsat 0x. Pro správné přeložení a nahrání uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovny IRremote a SevSeg, které jsou ke stažení dalkovy_ovladac_libs, návod jak na to je uveden zde

#include 
#include 
#include "SevSeg.h"

SevSeg sevseg; //inicializace 7digit displ

int receiver = 10; // pin IR
IRrecv irrecv(receiver);           // create instance of 'irrecv'
decode_results results;

 void setup() 
 {
  Serial.begin(9600);
  // setup pro 7digit
  byte numDigits = 4; 
  byte digitPins[] = {10, 11, 12, 13};
  byte segmentPins[] = {2, 3, 4, 5, 6, 7, 8, 9};
 
  sevseg.begin(COMMON_CATHODE, numDigits, digitPins, segmentPins); 
  sevseg.setBrightness(90);

 // setup pro 7digit END
 irrecv.enableIRIn(); // Start the receiver

}

void loop() {
 
    if (irrecv.decode( & results)) // prisel IR signal?
    {
        Serial.print("kod ");
        Serial.println(results.value, HEX); //vypis kodu
        int tlacitko1 = translateIR(); // prirazeni kodu k cislu
        sevseg.setNumber(tlacitko1, 0);  // zobrazeni cisla na display
        delay(500);
        irrecv.resume();
    }
    sevseg.refreshDisplay(); 
}


int  translateIR() // prevede kod na cislo
{

  int tlacitko = 0 ;
  switch(results.value)
  {
  case 0x8C03F: tlacitko = 1;    break;
  case 0x820DF: tlacitko = 2;    break;
  case 0x8A05F: tlacitko = 3;    break;
  case 0x8609F: tlacitko = 4;    break;
  case 0x8E01F: tlacitko = 5;    break;
  case 0x810EF: tlacitko = 6;    break;
  default: 
    Serial.println(" jine tlacitko   ");
  }// End Case

 
 return tlacitko;
} //konec funkce translateIR
/// konec - celý program ///

V druhé části projektu si zapojíme sedmi-segmentový displej a zobrazíme na něm číslo zmáčknuté na ovladači. Bohužel Arduino UNO nemá dostatek pinů na kompletní zapojení displeje a IR přijímače, tak ponecháme na displeji jednu číslici nezapojenou. Pro přehlednost jsem nakreslili schéma zapojení IR a displeje zvlášť.

d1

d2

Sedmi segmentových displejů existuje několik druhů, zde byl použit 5641AS pro který platí zapojení:

http://haneefputtur.com/7-segment-4-digit-led-display-sma420564-using-arduino.html