IR-ontvanger-0 (ontvanger voor afstandsbediening)

Doel:

  • gebruik van infrarood ontvanger voor afstandsbediening

nodig:

  • IR ontvanger
  • LED met serieweerstand
  • IR afstandsbediening

Voorkennis:

  • installeren van libraries

Met een IR ontvanger en de software voor het decoderen van IR-codes kun je je Arduino besturen met een IR afstandsbediening. We gebruiken dit om de LED aan- en uit te schakelen.

Pin-out voor TSOP34836:

1 = Out, 2=GND, 3=Vs

Schakeling

Verbind de IR ontvanger met de Arduino :

  • pin 1 met Arduino 11
  • pin 2 met Arduino GND (0V)
  • pin 3 met Arduino 5V

Verbind de LED met serieweerstand aan Arduino pin 12.

Library

We gebruiken de IRremote library. Installeer deze library in de IDE: Bibliotheek gebruiken -> Bibliotheken beheren -> ...zoek op irremote...

Opdracht 1 -  IRrevcDemo

Met het programma Voorbeelden -> IRremote -> IRrevcDemo kun je de codes van je afstandsbediening leren kennen. De uitvoer bekijk je met de Seriële Monitor (9600 baud).

Laad dit programma op je Arduino, en test dit met je afstandsbediening.

Vragen

  • Welke codes gebruikt worden voor de knoppen "0" en "1"? Noteer deze.
  • wat gebeurt er als je een knop langer ingedrukt houdt?

Afstandsbediening

Het onderstaande programma zet de LED op pin 12 aan met de knop "1", en uit met de knop "0".

Pas dit programma eventueel aan aan je eigen afstandsbediening.

Het programma gebruikt alleen de laatste 2 bytes (4 hexadecimale cijfers) van de codes.

#include <IRremote.h>

int RECV_PIN = 11;

int ledPin = 12;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup() {

  pinMode(ledPin, OUTPUT);

  Serial.begin(9600);

  irrecv.enableIRIn(); // Start receiver

  Serial.println("IR receiver started");

}

void loop() {

  if (irrecv.decode(&results)) {

    int keycode =

        results.value & 0xFFFF;

    if (keycode == 0x6897) {

      digitalWrite(ledPin, LOW);

    } else if (keycode == 0x30CF) {

      digitalWrite(ledPin, HIGH);

    }

    Serial.println(results.value, HEX);

    irrecv.resume(); // restart receiver

  }

  // delay(100);

}

Programma IRrecvLED

Voordat je een IR-waarde kunt ontvangen, moet je eerst de ontvanger starten. Dit gebeurt met

irrecv.enableIRin()

De aanroep

irrecv.decode(&results)

geeft aan of er een nieuwe IR-code ontvangen is. Het resultaat vindt je in de results.value.

De constructie

results.value & 0xFFFF

levert de laatste 2 bytes van de 32-bits results.value; dit zijn 4 hexadecimale cijfers. Deze bevatten de eigenlijke toetscode, de eerste bytes bevatten soms andere informatie.

Het afdrukken van de ontvangen code is optioneel; dit kan handig zijn voor foutzoeken.

Nadat je de ontvangen code verwerkt hebt, moet je de ontvanger herstarten.

Opdracht 2

Bouw en test deze schakeling.

  • waarom gebruiken we verschillende knoppen (en codes) voor het aan- en uitzetten van de LED?

Arduino lessen IR-ontvanger-0     --