Prog Shield IR-Modtager
IR modtageren er en enhed der kan give firkant-signaler ud fra et modtaget IR-signal moduleret på en 38 kHz bærebølge.
Software
Biblioteket ligger i denne ZIP-fil. Biblioteket downloades og installeres som beskrevet under Arduinos biblioteker.
Biblioteket er tilrettet ud fra Henvisninger fra Arduinos side[1]
Anvendelsen af softwaren
Den software der vises her er eksemplet IRrecord, der kan hentes når biblioteket er installeret.
Som alle andre biblioteker skal der sættes de grundlæggende ting op for at kontakte biblioteket og definere hvordan modulet er tilsluttet. Denne testsoftware har mere inkluderet.
#include <IRremote.h>
int RECV_PIN = 2;
int BUTTON_PIN = 8;
int STATUS_PIN = 3;
IRrecv irrecv(RECV_PIN);
IRsend irsend;
decode_results results;
Inde i setup() skal der sættes gang i objektet ved hjælp af enableIRIn-metoden som vist her:
void setup() {
Serial.begin(9600);
irrecv.enableIRIn(); // Start the receiver
pinMode(BUTTON_PIN, INPUT);
pinMode(STATUS_PIN, OUTPUT);
}
Selve det at tage imod IR-signalet er mere kompliceret, da det dækker forskellige typer fjenbetjeninger, så koden er ikke vis her.
Anvendelse af det konkrete output
Hver type IR-fjernbetjening har sin egen måde at sende på, hvor knapperne selvfølgelig har hver sin værdi, men der ligger også en protokol som softwaren kan forstå.
Her er vist eksempler med en NEC-protokol og en RC5-protokol. Anvender man en ny type fjernbetjening, så skal man selvfølgelig bestemme hvilken protokol det er og hvilke værdier knapperne på fjernbetjeningen giver.
Når man sender noget fra en IR fjernbetjening til Arduinoen med IRremote-programmet uploadet, så kan man på Serial Monitor kan man få følgende resultater:
Received NEC: FFB04F Received NEC: FFA857 Received NEC: FF708F
Holder man en taste på fjernbetjeningen, så vil nogle fjernbetjeninger sende et repeat-signal, det giver følgende output:
Received NEC: FFE817 Received NEC: repeat; ignoring. Received NEC: repeat; ignoring. Received NEC: repeat; ignoring.
Der kan også ske en fejltolknong af et signal, så der kommer følgende output:
Received unknown code, saving as raw m8850 s4600 m400 s700 m450 s650 m450 s700 m400 s700 m450 s650 m450 s700 m400 s700 m450 s650 m450 s1800 m450 s1800 m400 s1800 m450 s1800 m400 s1800 m450 s1800 m450 s1800 m400 s1800 m450 s1800 m450 s1800 m400 s1800 m400 s750 m400 s650 m450 s700 m400 s700 m450 s650 m450 s700 m400 s700 m450 s650 m450 s1800 m450 s1800 m400 s1800 m450 s1800 m450 s1800 m400
Det viste output udtrykker det rå signal tolket som tider for Marker (m) og tider for Space (s) angivet i mikrosekunder.
En anden type fjernbetjening aflæses på følgende måde, hvor man kan se at det blot er den samme tast der sendes flere gange, når man holder den nede:
Received RC5: 820 Received RC5: 820 Received RC5: 820
Den type fjernebetjening har en lille særhed, at den kan sende to forskellige koder for samme knap, hvor den så hver anden gang lægger 0x800 til det der sendes:
Received RC5: 20 Received RC5: 20 Received RC5: 820 Received RC5: 820 Received RC5: 20 Received RC5: 20 Received RC5: 80D Received RC5: 80D Received RC5: 21 Received RC5: 21 Received RC5: 810 Received RC5: 810
De 3 første værdier er samme knap, hvilket resulterer i 0x20, 0x820 og 0x20. De tre næste tryk er på 3 andre knapper på fjernbetjeningen, og som det kan ses, så skifter værdierne mellem at der er lagt 0x800 til og at der ikke er lagt noget til.
Yderligere muligheder i softwaren
Der ligger yderligere muligheder i klassen man kan anvende, hvis man ønsker andre måder at anvende IR-modtageren på:
IRrecv(int recvpin);
void blink13(int blinkflag);
int decode(decode_results *results);
void enableIRIn();
void resume();
Hardware
Princippet i IR fjernbetjeninger er nærmere beskrevet på IR Fjernbetjening.
Layout
IR-remote modtagerens placering på programmerings-shieldet kan ses her:
Placering af IR-remote modtager
Referencer
- ↑ Omtale af IR modtager til Arduino