IR-ontvanger-1 (ontvanger voor afstandsbediening)

Doel:

  • gebruik van infrarood ontvanger voor afstandsbediening
  • gebruik van switch-statement

nodig:

  • IR ontvanger
  • LED met serieweerstand
  • IR afstandsbediening

Voorkennis:

  • IR-ontvanger-0
  • timer

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 het knipperen van de LED aan te passen.

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.

Opdracht 1

Het onderstaande programma (IRrecvLED-1) laat de LED via de knoppen 0, 1, 2, 3 met verschillende snelheden knipperen. Breid dit uit voor de knoppen 4 t/m 9.

#include <IRremote.h>

int RECV_PIN = 11;

int ledPin = 12;

int ledState = 0;

unsigned long timerStart;

unsigned long timerPeriod = 1000L;

IRrecv irrecv(RECV_PIN);

decode_results results;

void setup() {

  pinMode(ledPin, OUTPUT);

  Serial.begin(9600);

  Serial.println("Enabling IRin");

  irrecv.enableIRIn(); // Start the receiver

  Serial.println("Enabled IRin");

}

void loop() {

  if (millis() - timerStart >= timerPeriod) {

    timerStart = timerStart + timerPeriod;

    ledState = 1 - ledState;

    digitalWrite(ledPin, ledState);

  }

 

  if (irrecv.decode(&results)) {

    Serial.println(results.value, HEX);

    unsigned int keycode =

       results.value & 0xFFFF;

      // last 2 bytes

    irrecv.resume();

      // start receiving the next value

    switch (keycode) {

      case 0x6897: timerPeriod = 0L;

          break;

      case 0x30CF: timerPeriod = 100L;

          break;

      case 0x18E7: timerPeriod = 200L;

          break;

      case 0x7A85: timerPeriod = 400L;

          break;            

      default: ;

    }

  }

}

IRrecvLED-1

De constructie

  switch (x) {

    case 1: actie1;

        break;

    case 2: actie2;

        break;

   ...

    default: actied;

  }

komt overeen met:

  if (x == 1) {

      actie1;

  } else if (x == 2) {

    actie2;

  ...

 } else {

    actied;

 }

Opdracht 2

Breid het programma uit voor de knoppen + en -. Welke functie zou je deze willen geven?

Arduino lessen IR-ontvanger-1     --