MINT - Unterricht  mit  Arduino und anderen

Robino III

 

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.

Zum Ermitteln der Tastencodes wird wird der IR Empfänger wie in der Abbildung links mit dem Arduino-Board verbunden:

 

 

 

 

 

 

Zur Programmierung wird die Bibliothek "Arduino-IRremote-master" benötigt, die hier heruntergeladen werden kann: Download.

Nach dem Download wird die ZIP-Datei mit Hilfe der Arduino-IDE über Sketch  Bibliothek einbinden  .ZIP-Bibliothek hinzufügen eingebunden.

Ü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 <boarddefs.h> und <IRremote.h> benötigt werden.

 

Hier der Sketch zum Ermitteln der Tasten-Kennungen:

#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();

  }

}

Ist der Sketch übertragen, wird der serielle Monitor mit der Tastenkombination <Strg+Shift+M> gestartet und im Fenster unten rechts 9600 Baud ausgewählt.

Anschließend wird die Fernbedienung auf den IR-Empfänger gerichtet und eine Taste gedrückt. 

Im Monitorfenster erscheint daraufhin der Code dieser Taste (eine achtstellige Zahlt), 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. Ein 9V Block dient als Stromquelle.

Hier das zur Programmierung passende Verdrahtungsschema.

Das Programm ermöglicht, die Motoren über die Tasten 1 und 4 bzw.2 und 5 an- und abzuschalten. 

Die im Code unten verwendeten 8-stelligen Zahlen müssen 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();

  }

}

Die Motoren sind mit den Pins 6 und 9 verbunden, an denen Pulsweitenmodulation (PWM) möglich ist.

Das hat den Vorteil, dass die Drehzahlen der Motoren am Robino geregelt werden können. Ein langsam fahrendes Fahrzeug lässt sich leichter steuern.

Wird der Programmcode von

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

geändert, dreht der Motor nur noch etwa halb so schnell.

Die Zahlwerte können zwischen 0 und 255 variiert werden.  

 



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