Prog Shield IR-Modtager

Fra Holstebro HTX Wiki
Skift til: navigering, søgning
IR Fjernbetjening og en IR-modtager der placeret på Programmerings-Shieldet

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:
Layout-IR-remote.png
Placering af IR-remote modtager

Referencer