In diesem zweiten Teil möchte ich dir gerne zeigen, wie du am Funduino-Cube die LEDs per Infrarot-Schnittstelle steuern kannst.
Auf dem Funduino-Cube (welchen ich dir unter Review – Funduino-Cube vorgestellt habe) findest du fast alles, was du für dieses kleine Projekt benötigst.
Hier möchte ich dir nun zeigen, wie du die nachfolgend aufgelisteten, verbauten LEDs per Infrarot Fernbedienung steuern kannst.
- 8 mm, rot
- 8 mm, gelb
- 8 mm, grün
Auf dem Funduino-Cube ist dafür bereits eine Infrarot-Diode verbaut, welche wir hierzu natürlich verwenden. Für diese Infrarot-Diode benötigen wir noch zusätzlich einen Infrarot-Sender, hier kannst du eine einfache Fernbedienung für den Fernseher, Receiver, DVD-Player etc. nutzen.
Es gibt auf ebay.de auch günstige, einfache Infrarot Fernbedienungen* welche für solche und andere kleine Projekte ausgelegt sind.
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Ziel dieses kleinen Projektes
Das Ziel von diesem kleinen Projekt ist es dir zu zeigen, wie einfach es ist eine LED per Infrarot Fernbedienung am Funduino-Cube zu steuern. Des Weiteren möchte ich dir mithilfe der Entwicklungsumgebung DUINO EDU bzw. ArduBlock aufzeigen, wie einfach dieses sein kann.
Die Entwicklungsumgebung (kurz IDE) DUINO EDU habe ich dir bereits im vergangenen Beitrag Arduino Programmierung mit DUINO EDU vorgestellt und ein erstes kleines Projekt vorgestellt.
Natürlich kannst du dieses Programm auch mit der Arduino IDE per Hand programmieren, d.h. in C/C++. Aber ich finde diese Möglichkeit der Programmierung von solch kleinen Programmen sehr interessant.
Pins der benötigten Komponenten
Zunächst benötigen wir die Pins der verbauten LEDs, welche wir steuern möchten:
Komponente | Arduino Nano V3 |
---|---|
LED, rot | D3 |
LED, gelb | D4 |
LED, grün | D5 |
Infrarot-Diode | A0 |
Programmieren in DUINO EDU
Die Entwicklungsumgebung DUINO EDU enthält viele vorbereitete Elemente, welche wir per Drag’n Drop auf einer Fläche zusammen klicken.
Auslesen der Tasten der Infrarot-Fernbedienung
Schreiben bzw. klicken wir uns zunächst ein kleines Programm zusammen, um die Tasten der IR Fernbedienung auszulesen.
Wenn wir diesen Code auf den Mikrocontroller überspielen, dann erhalten wir nachfolgende Ausgabe. Mit dem Code erzeugen wir eigentlich nur die Ausgabe, welche mit einem grünen Rahmen markiert ist. Die anderen Werte sind Debugausgaben von der Bibliothek.
Programm zum Steuern der LEDs per Infrarot Fernbedienung am Funduino-Cube
Schritt 1 – ablegen der Werte für die Tasten in Variablen
Wenn wir die Tasten ermittelt haben, dann legen wir uns diese Werte in Variablen vom Typ “INTEGER” ab.
Schritt 2 – anlegen der Felder für die Status der LEDs
Für die Status der LEDs (AN/AUS) legen wir uns ganzzahlige Variablen an und benennen diese entsprechend mit led<Farbe>.
Schritt 3 – auslesen der Infrarot-Fernbedienung
Den Wert vom eventuell betätigten Taster an der Infrarot-Fernbedienung legen wir in der ganzzahligen Variablen “irValue” ab.
Schritt 4 – prüfen, ob der gelesene Wert größer 0 ist
Zunächst muss man prüfen ob der Wert der Variable “irValue” größer 0 ist. Denn wenn keine Taste betätigt wird ist der Wert gleich 0 und wir brauchen diesen nicht zu behandeln.
Schritt 5 – Reset-Taster
Die Taste “OK” auf der Fernbedienung möchte ich als Reset-Taste nutzen, dazu habe ich zunächst den Wert ausgelesen und in die Variable “TASTE_OK” abgelegt. Wenn also nun der Wert der “irValue” gleich dem Wert der Variable “TASTE_OK” ist, dann werden alle Status auf 0 gesetzt und die LEDs deaktiviert.
Schritt 6 – aktivieren einer LED per Taster
In meinem Fall habe ich den Wert der Taste 1 der roten LED zugeordnet, d.h. wenn diese Taste betätigt wird, dann soll die rote LED aktiviert bzw. deaktiviert werden.
Zusätzlich wird der Status in der Variable “ledRot” gespeichert.
Wenn wir dieses vermeintlich kleine Projekt mit der genannten IDE zusammen geklickt haben, dann ist dieses, wie man sehen kann, sehr lang.
Der automatisch generierte Code von ArduBlock sieht wie folgt aus:
#include <IRremote2.h> int TASTE_1 = 0; int TASTE_4 = 0; int TASTE_5 = 0; int TASTE_OK = 0; int ledRot = 0; int ledGelb = 0; int ledGruen = 0; int irValue = 0; IRrecv2 monRecepteur_pinA0(A0); void setup(){ monRecepteur_pinA0.enableIRIn(); Serial.begin(9600); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); TASTE_1 = 26775; TASTE_4 = 12495; TASTE_5 = 6375; TASTE_OK = 765; ledRot = 0; ledGelb = 0; ledGruen = 0; } void loop(){ irValue = monRecepteur_pinA0.lireCodeIr() ; if (irValue > 0) { Serial.print("message"); Serial.println(irValue); if (irValue == TASTE_OK){ ledRot = 0; ledGelb = 0; ledGruen = 0; digitalWrite(3, LOW); digitalWrite(4, LOW); digitalWrite(5, LOW); } if (irValue == TASTE_1){ if (ledRot == 0){ digitalWrite(3 , HIGH); ledRot = 1; } else { digitalWrite(3 , LOW); ledRot = 0; } } if (irValue == TASTE_4){ if (ledGelb == 0){ digitalWrite(4 , HIGH); ledGelb = 1; } else { digitalWrite(4 , LOW); ledGelb = 0; } } if (irValue == TASTE_5){ if (ledGruen == 0){ digitalWrite(5 , HIGH); ledGruen = 1; } else { digitalWrite(5 , LOW); ledGruen = 0; } } delay(1000); } }