Projekt od našeho čtenáře Petra S. - Použití jakéhokoliv dálkového ovladače
Popis:
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í zde, návod jak na to je uveden zde.
#include <IRremote.h>
#include <IRremoteInt.h>
#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ášť.
Sedmi segmentových displejů existuje několik druhů, já jsem použil 5641AS pro který platí zapojení:
http://haneefputtur.com/7-segment-4-digit-led-display-sma420564-using-arduino.html
Poznámka od našeho čtenáře Radka:
Dle vyobrazení na schématu se jedná o součástku TFMS 5360, která podle katalogového listu je zapojena špatně. Viz obrázek níže: