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: