MINT - Unterricht  mit  Arduino und anderen

Bestückt mit einem einfachen Infrarot-Empfänger wie dem VS1838B kann ein Arduino-Board mit einem Infrarot-Sender kommunizieren. Als Sender eignen sich handelsübliche Fernbedienungen, die beim Drücken einer Taste ein spezifisches Signal aussenden. Wie diese Signale aufgeschlüsselt werden können, erklären die folgenden Ausführungen:

Schaltplan:

Programm:

Für den Sketch wird die Bibliothek "Arduino-IRremote-master" benötigt, die hier heruntergeladen werden kann: Download.

Nach dem Download kann die ZIP-Datei mit Hilfe der Arduino-IDE über Sketch > Bibliothek einbinden > .ZIP-Bibliothek hinzufügen eingebunden werden. Über einen erneuten Aufruf des Menüpunkts "Bibliothek einbinden" findet sich dann unter "Contributed Bibliotheken" der Eintrag "IRremote". Wählt man ihn an, werden mehrere Headerdateien zum Programmcode hinzugefügt, von denen aber nur  "boarddefs.h" und "IRremote.h" benötigt werden. Der komplette Sketch sieht so aus:

#include <boarddefs.h> 

#include <IRremote.h>

IRrecv irrecv(11);

decode_results results;

void setup(){

  Serial.begin(9600);

  irrecv.enableIRIn();

  }

void loop(){

  if (irrecv.decode(&results)) {

    Serial.println(results.value, DEC);

    irrecv.resume();

  }

}

Hardware:

Der VS1838B hat 3 Anschlüsse, zwei zur Stromversorgung und einen zur Datenübertragung.

Blickt man auf das blaue Fenster, muss das linke Beinchen mit Pin 11, das mittlere mit GND und das rechte mit 5V verbunden werden.

 

Serieller Monitor:

Ist der IR-Sensor richtig angeschlossen und der Arduino programmiert, wird der serielle Monitor mit der Tastenkombination Strg+Shift+M gestartet und die Fernbedienung auf den IR-Empfänger gerichtet. Beim Drücken eines Knopfes erscheint im Monitorfenster bei 9800 Baud eine achtstellige Zahl, die zur späteren Verwendung notiert werden sollte.

 

 

 

 

 

 

 

 


 

Um den Robino III zu realisieren, wird das gleiche Fahrgestell wie beim Robino I und II verwendet, wobei der VS1838B die dort verwendeten Sensoren ersetzt.

Schaltbild:

 

Programm:

Größere Teile des Programms zum Auslesen der Fernsteuerung finden sich hier wieder. Neu sind die Programmteile, die Sicherstellen, dass auf Knopfdruck die Motoren an- oder abgeschaltet werden. Die dazu verwendete 8-stelligen Zahlenfolgen müssen im Code unten durch die selbst ermittelten Werte ersetzt werden.

#include <boarddefs.h> 

#include <IRremote.h>

IRrecv irrecv(11);

decode_results results;

void setup(){

  pinMode(6, OUTPUT);

  pinMode(9, OUTPUT);

  irrecv.enableIRIn();

}

void loop(){

  if (irrecv.decode(&results)) {

    if (results.value == 16724175)  //Knopf 1

    {

      digitalWrite(6, HIGH);

    }

    if (results.value == 16718055)  //Knopf 2

    {

      digitalWrite(6, LOW);

    }

    if (results.value == 16716015)  //Knopf 4

    {

      digitalWrite(9, HIGH);

    }

    if (results.value == 16726215)  //Knopf 5

    {

      digitalWrite(9, LOW);

    }

    irrecv.resume();

  }

}

Das obige Programm ist so angelegt, dass die Motoren über vier dicht beieinander liegende Knöpfe auf der Fernbedienung gesteuert werden können.

Die Motoren sind mit GND und den Pins 6 und 9 verbunden, an denen Pulsweitenmodulation (PWM) möglich ist. Das dient dem Zweck, die Drehzahlen der Motoren am Robino herunterregeln zu können, was dessen Steuerung erheblich vereinfacht.

Zum Einstellen der Drehgeschwindigkeit müssen die Steuercodes der Motoren von digitalWrite(..., ...); nach analogWrite(..., Zahl) geändert werden, wobei Zahlen zwischen 1 (Stillstand) und 255 (höchstmögliche Drehzahl) verwendet werden können. Beispielsweise könnten

digitalWrite(6, HIGH) nach analogWrite(6, 130);

und

digitalWrite(6, LOW) nach analogWrite(6, 1);

was zur Folge hätte, dass der Motor an Pin 6 nur noch etwa halb so schnell dreht wie vorher.  

Nach erfolgreicher Programmierung können die Motoren über die Knöpfe 1 und 4 gestartet und über 2 und 5 gestoppt werden.

 



Der Infrarotempfänger und die Fernbedienung können preisgünstig im Funduino-Shop erworben werden.