Usando-LEDs-con-sentencias-condicionales-if-else

Jetzt ist es endlich soweit, und wir werden etwas an unsere Platine anschließen! In dieser Lektion werden wir verschiedene LEDs ein- und ausschalten und außerdem lernen, wie man die if-else Konditionalsätze verwendet. Jetzt kannst du all das anwenden, was wir bis jetzt gelernt haben.

  • Kommunikaiton über die serielle Schnittstelle
  • Funktionen und Variablen

Für diese Lektion benötigst du eine LED und eine Steuerplatine wie die ZUM BT 328 ( oder eine, die mit Arduino kompatibel ist).

Ein- und Ausschalten einer LED

Eine LED ein- und auszuschalten ist eines der ersten Programme mit Peripheriegeräten, die mit Arduino erstellt werden. Da es sich um das Erste handelt, werden wir es uns etwas intensiver ansehen. In den folgenden Lektionen gehen wir dann weniger detailliert vor.

Erste Frage: Ist eine LED analog oder digital? Eine LED ist eine digitale Komponente, die nur zwei Werte annehmen kann, nämlich ein und aus.
Zweite Frage: Ist eine LED eine Ausgangs- oder Eingangskomponente? Eine LED ist eine Ausgangskomponente, da wir ihr ein Kommando senden müssen, ihr mitteilen müssen, ob sie sich ein- oder ausschalten soll. Das Gegenteil von einem Sensor, der uns den ausgelesenen Wert angibt.

Beginnen wir damit, eine LED so wie es auf dem Bild gezeigt wird, an den digitalen Pin 8 der Platine anzuschließen.

zum-8ledWir wir in den vorigen Lektionen erklärt haben, gibt es zwei grundlegende Funktionen bei der Arduino Programmierung, nämlich setup() und loop(). Die Funktion setup() ist für das Durchführen aller Konfigurations- und Initialisierungsaufgaben zuständig, während die Funktion loop() die Anweisungen enthält, die das Programm ausführt.

void setup()

Hier müssen wir bei der Konfiguration einzig und allein angeben, dass es sich beim digitalen Pin um eine Ausgabe handelt.

Die Funktion pinMode() enthält als ersten Parameter die Nummer des digitalen Pins und als zweiten die Arbeitsweise, die INPUT oder OUTPUT sein kann.

void loop()

Jetzt bringen wir die LED zum Blinken. Wir schalten sie ein, warten eine Sekunde, schalten sie aus und warten eine weitere Sekunde. Da die Funktion loop() in einer Schleife ausgeführt wird, führt dies dazu, dass die LED blinkt. Sehen wir uns den Code einmal an.

Die Funktion digitalWrite() nimmt zwei Parameter an. Der erste ist die Zahl des digitalen Pins und der zweite ist der Zustand, den er besitzt: HIGH oder LOW. Ist der Zustand HIGH, besitzt der Pin 5 Volt, ist er hingegen LOW ist er geerdet (0 Volt). Dies führt dazu, dass sich die LED ein- oder ausschaltet. Um eine Schreibaktion auf einem digitalen Pin auszuführen, muss der pinMode zuvor auf  OUTPUT gesetzt werden. Die Funktion delay() unterbricht die Ausführung für die angegebene Zeit in Millisekunden.

If-else Konditionalsätze

Ein Konditionalsatz verändert abhängig von einer Bedingung die Ausführung des Programms. Beispielsweise könnte man ein Programm erstellen, bei dem sich, bei Erhalt des Zeichens H die LED einschaltet, während sie sich beim Erhalt des Zeichens L ausschaltet. Sehen wir uns an, wie man das erreicht.

If-else Struktur

Die If-else-Anweisung besitzt die folgende Struktur:

ifelseIst die Bedingung erfüllt, werden die Anweisungen 1 und 2 ausgeführt; im umgekehrten Fall die Anweisungen 3 und 4. Zu beachten ist, dass es nicht notwendig ist, eine else-Anweisung einzufügen. Weitere Informationen zu diesem Thema finden sich in den offiziellen Unterlagen der Anweisung if und der Anweisung else.

Abhängig von einem Wert handeln

Sehen wir uns an, wie wir bei Erhalt des Zeichens H eine LED einschalten können und sie beim Erhalt des Zeichens L  ausschalten. Wir erinnern uns an die vorige Lektion, bei der das Programm angehalten wurde bis wir Daten über die serielle Schnittstelle erhielten.

Verändern wir die Funktion, damit sie das Zeichen speichert, das sie über die serielle Schnittstelle erhalten hat. Diesen Wert soll sie an eine andere Funktion senden (die wir später erstellen), die bestimmt, was mit dem gelesenen Zeichen passieren soll. Wir nennen sie manageChar(). Sehen wir uns an, wie das Programm aussehen würde. Anschließend erklären wir es.

int ledPin = 8;

Wir speichern die Nummer des Pins an dem die LED angeschlossen ist in einer globalen Variable. So vermeiden wir, dass wir beim Schreiben in den verschiedenen Teilen des Programmes einen Fehler .

void manageChar(char c)

Diese Funktion nimmt ein Zeichen als Parameter. Wenn der Wert dieses Parameters H ist (das Gleichheitszeichen schreibt man in Arduino so ==) schaltet sich die LED, die am ledPin angeschlossen ist ein (in unserem Fall die 8), wenn der Parameter L ist, schaltet sie sich aus. Sollte der Parameter weder H noch L sein, führt die Funktion keinerlei Aktion aus.

void waitForInput()

Wie wir in der vorigen Lektion gesehen haben, wartet diese Funktion darauf, Daten über die serielle Schnittstelle zu erhalten. Wir haben sie dahingehend abgeändert, dass sie den gelesenen Wert in einer Variable des Typ char speichert (wir erinnern uns, dass die Funktion Serial.read() einen char -byte-ausgibt)

Anschließend wir der ausgelesene Wert an die Funktion manageChar gesendet, damit die LED sich entsprechend ein- oder ausschaltet.

setup()

Lege den Pin 8 als Ausgang fest und beginne die serielle Kommunikationen mit 9600 Baud.

loop()

Dies ist die Funktion, die in einer Schleife ausgeführt wird. In diesem Fall wartet sie darauf, Daten über die serielle Schnittstelle zu erhalten. Sobald sie diese erhält, werden sie mit der Funktion manageChar() bearbeitet. So geht es dann immer weiter.

Übung

Versuche nun, mit dem was du bisher gelernt hast, das folgende Programm zu erstellen. Die Lösung veröffentliche ich nächste Woche in der nächsten Lektion. Erstelle ein Programm, das Daten über die serielle Schnittstelle ausliest und die gelesenen Werte auf die folgende Art und Weise bearbeitet:

  • Erstes Zeichen: gibt die Nummer des digitalen Pins an, zwischen 0 und 9.
  • Zweites Zeichen: gibt an, ob die mit dem entsprechenden Pin verbundene LED mit dem Wert H oder L ein- oder ausgeschaltet wird.

Das bedeutet, dass wenn die folgende Sequenz 1H4L5H2L über die serielle Schnittstelle ankommt, Folgendes ausgeführt wird:

  • Mit den Pins 1 und 5 verbundene und eingeschaltete LEDs.
  • Mit den Pins 2 und 4 verbundene und ausgeschaltete LEDs.
  • Alle übrigen LEDs verbleiben in dem Zustand, in dem sie sich zuvor befunden haben.

Na dann mal los. Warum versuchst du nicht, die Lösung zu finden, teilst den Code und wenn du dich traust, schickst du uns ein Video mit der Funktionsweise. Die Lösung zeige ich dir in der nächsten Lektion.