Zum Hauptinhalt springen

Hallo Welt oder eine blinkende LED

Das erste Programm (in der Arduinowelt Sketch genannt) lässt eine LED, die mit einem Vorwiderstand verbunden ist, regelmäßig blinken. Am folgenden Programmbeispiel werden der Grundaufbau eines Arduino-Sketches und alle notwendigen Befehle erläutert.

Eine einfache Schaltung für eine LED

Am Anfang eines jeden Arduino-Programms steht natürlich die Schaltung. Für das Hallo Welt Beispiel soll eine LED mit einer entsprechenden Schaltung an den Arduino angeschlossen werden. Wichtig ist bei der LED, dass der lange Anschluss der Plus-Pol und der kurze Anschluss der Minus-Pol ist. Wird die LED falsch angeschlossen, wird sie nicht leuchten. Außerdem muss dafür gesorgt werden, dass der Strom durch die LED auf ca. 20 mA begrenzt wird. Ein größerer Strom könnte die LED zerstören. Auch sollten die Ströme der einzelnen Arduino-Pins auf 20 mA begrenzt werden. Höhere Stromwerte könnten den Arduino zerstören. Zur Strombegrenzung wird ein Widerstand mit R = 220 Ω verwendet. Die vollständige Schaltung ist unten abgebildet.

LED mit Arduino
danger

Eine LED darf niemals ohne Vorwiderstand an den Arduino angeschlossen werden!

blink.ino
/* Die angeschlossene LED wird abwechselnd an- und ausgeschaltet.
Durch den Befehl delay() ergibt sich eine blinkende LED.*/

#define PIN_LED 2 // im Programm wird PIN_LED immer durch 2 ersetzt
// #define definiert einen Platzhalter, keine Variable

// setup() wird nur einmal durchlaufen und konfiguriert das Board
void setup() {
pinMode(PIN_LED,OUTPUT); // Setzt den Pin (2) der roten LED als Ausgang
}

// loop() läuft als Endlosschleife. Hier kommt das Hauptprogramm rein.
void loop() {
digitalWrite(PIN_LED,HIGH); // Ausgang HIGH (5V), LED an
delay(1000); // Programmverzögerung um 1s = 1000ms
digitalWrite(PIN_LED,LOW); // Ausgang LOW (0V), LED aus
delay(1000); //
}

Kopieren Sie das abgebildete Programm in ein neues Arduino-Fenster und speichern Sie es unter dem Namen blink. Unter Werkzeuge/Board/ muss nun der Arduino Uno ausgewählt werden und unter Werkzeuge/Port/ muss der mit dem Arduino verbunden USB-Port festgelegt werden. Anschließend können Sie Ihr erstes Arduino-Programm hochladen.

drawing

Wenn alles richtig gemacht wurde, sollte anschließend die LED mit einer Periodendauer von 2 Sekunden blinken.

Dieses erste Arduino-Programm ist auch in der Arduino-Programmierumgebung unter Datei/Beispiele/01.Basics/Blink zu finden. Neben diesen einfachem Beispiel gibt es dort auch viele andere Beispiele zu den verschiedensten Themen.

Aufbau eines Arduino Programms

Ein Arduino-Programm besteht immer aus zwei Teilen, welche durch die beiden Funktionen void setup() und void loop() dargestellt werden.

void setup()

Die Funktion void setup() wird vom Arduino nach dem Starten genau einmal ausgeführt. Damit ist sie besonders zum Konfigurieren des Boards geeignet. Hier kann zum Beispiel angegeben werden, ob ein Pin als Ein- oder Ausgang genutzt werden soll, oder ob eine serielle Kommunikation zum PC aufgebaut werden soll.

void loop()

Die Funktion void loop() wird, nachdem setup() ausgeführt wurde, wie eine Endlosschleife immer wieder aufgerufen. In der Regel befindet sich hier das Hauptprogramm. Für das Beispiel der blinkenden LED wird hier immer wiederkehrend die LED erst an- und dann ausgeschaltet.

/* Grundaufbau eines Arduino-Sketches (Programms)*/

void setup() {
// Die setup() Funktion wird nur einmal durchlaufen
//und konfiguriert das Board.
}

void loop() {
// Die loop() Funktion wird immer wieder ausgeführt
// und stellt eine Endlosschleife dar.
}
caution

Sollte eine der beiden Funktion setup() oder loop() für ein Programm nicht benötigt werden, so wird dessen Rumpf einfach leer gelassen. Sie dürfen niemals ganz weggelassen werden, da sonst Fehlermeldungen beim Kompilieren auftreten.

#define

Die Zeile

#define PIN_LED 2   // im Programm wird PIN_LED immer durch 2 ersetzt

definiert eine Konstante (Platzhalter), die nicht im Speicher abgelegt wird, sondern beim Kompilieren im Programmcode mit dessen Wert ersetzt wird. #define wird sehr häufig zum Konfigurieren der Pins verwendet. Die Zeile endet nicht mit einem Semikolon.

pinMode()

Die Pins am Arduino können sowohl als Eingang als auch als Ausgang betrieben werden. Soll eine LED an einen Pin angeschlossen werden, so ist es notwendig, diesen Pin als Ausgang zu konfigurieren. Dafür gibt es den Befehl pinMode(pin,OUTPUT), welcher den angegeben Pin pin als Ausgang (OUPUT) konfiguriert.

pinMode(LED_PIN,OUTPUT); // Arduino-Pin als Ausgang definieren

Die Konfiguration der verwendeten Pins sollte immer in der void setup() Funktion vorgenommen werden.

digitalWrite()

Wenn ein Pin als Ausgang definiert ist, kann mit dem Befehl

digitalWrite(pin,HIGH); // (Pin  5 Volt)
digitalWrite(pin,LOW); // (Pin 0 Volt)

der entsprechende pin auf HIGH (5 Volt), bzw LOW (0 Volt) gesetzt werden. Alternativ kann für HIGH auch 1 und für LOW auch 0 geschrieben werden.

delay()

Der Befehl

delay(time_ms)

pausiert den Programmablauf um den angegebenen Wert in Millisekunden. Ohne diesen Befehl würden wir das Blinken der LED nicht wahrnehmen können, da das Umschalten zwischen an und aus für das menschliche Auge zu schnell passieren würde.

Arduino-Referenz

In der Arduino-Referenz werden alle Arduino-Befehle mit einem Beispiel erläutert. Daher lohnt es sich bei Fragen die Referenz zu nutzen. Mit einem Rechts-Klick auf einen Befehl in der Arduino-Umgebung kann die Befehls-Referenz auch direkt zu einem Befehl aufgerufen werden.

Arduino Referenz
Aufgaben - Programmieren
  1. Ändern Sie die Periodendauer der LED auf 2 Sekunden. Innerhalb der 2 Sekunden soll die LED 90% der Zeit ausgeschaltet sein.
  2. Lassen Sie die LED das SOS Signal morsen (3x kurz, 3x lang, 3x kurz).
  3. Schließen Sie eine weitere LED an einen anderen Pin an und lassen Sie beide LEDs abwechselnd blinken.
  4. Lassen Sie die zwei LEDs mit unterschiedlichen An- und Auszeiten blinken.
  5. Analysieren Sie in Gruppenarbeit (2-4 Personen), welche Fehler beim Blink-Programm auftreten können (Schaltung, Programm). Dokumentieren Sie die möglichen Fehlerquellen und geben Sie Hinweise zum Lösen der Fehler.

Sollten Sie gerade keinen Zugang zu einem Arduino-Board haben, können die Aufgaben auch online mit dem Arduino-Simulator Wokwi bearbeitet werden.

Wie funktioniert eine LED?

Eine LED (light emitting diode), auch Leuchtdiode genannt, ist ein Halbleiterbauteil, welches auf sehr effiziente Weise elektrischen Strom in Licht umwandelt. Anders als bei einer Glühlampe wird das Licht nicht durch einen glühenden Wolframfaden erzeugt, sondern durch die Rekombination von positiven und negativen Ladungsträgern in einem Halbleiter. Die Wellenlänge, also die Farbe des ausgestrahlten Lichts, hängt vom gewählten Halbleitermaterial ab. Ein typisches Material für ein rote LED ist zum Beispiel Galiumarsenidphosphid (GaAaP).

drawing

LEDs gibt es in vielen verschiedenen Bauformen. Für die Nutzung mit einem Steckbrett eignen sich besonders LEDs mit einem Durchmesser von 5 mm und zwei langen metallischen Anschlüssen. Der lange Anschluss wird Anode, der kurze Anschluss Kathode genannt. Bei diesen LEDs befindet sich der tatsächlich leuchtende Chip im Inneren eines Kunststoffgehäuses und ist um einiges kleiner als das gesamte Bauteil (siehe Abbildung). Das Kunststoffgehäuse dient nicht nur zum Schutz, sondern enthält auch eine Linse zum Bündeln des emittierten Lichtes. Der LED-Chip selbst befindet sich auf einem kleinen Reflektor, welcher das auch in seitlicher Richtung ausgestrahlte Licht nach oben zur Linse reflektiert. Elektrisch kontaktiert wird der Chip zum einen von unten durch den Reflektor und zum anderen von oben durch einen sehr feinen Bonddraht.

Elektrische Eigenschaften

Durch eine LED kann der elektrische Strom nur in eine Richtung fließen. Wird zwischen der Anode (+ Pol) und der Kathode (- Pol) eine negative Spannung angeschlossen, ist der Stromfluss null und die LED leuchtet nicht.

drawing

Das Verhalten bei einer positiven Spannung ist der abgebildeten Kennlinie einer roten LED zu entnehmen. Wird an die LED eine Spannungen kleiner als 1,7 V angelegt, fließt so gut wie kein Strom. Überschreitet die Spannung jedoch einen gewissen Schwellwert (in der Abbildung ca. 1,8 V ) steigt die Kennlinie steil an. Der Strom durch die LED nimmt rapide zu und erreicht bei einer Spannung von UD2 VU_\text{D} \approx 2 \text{ V} einen Wert von ID20 mAI_\text{D}\approx 20\text{ mA}. Die LED leuchtet hell. Ein weiteres Erhöhen der Spannung würde ab einem gewissem Spannungswert die LED zerstören.

Vorwiderstand bestimmen

LEDs müssen im Gegensatz zu Glühlampen bei einer relativ genauen Spannung betrieben werden. Ist die Spannung zu klein, würde die LED nicht leuchten, ist sie zu groß würde sie zerstört werden. Zum Einstellen der benötigten Diodenspannung wird meistens ein Vorwiderstand in Reihe zur LED geschaltet.

Im Datenblatt einer LED findet sich die UI-Kennlinie (Forward Current vs. Forward Voltage). Damit lässt sich ablesen, wie groß die Diodenspannung (Vorwärtsspannung) an der LED bei einem gegebenen Diodenstrom (Vorwärtsstrom) ist. In der abgebildeten Kennlinie einer roten LED ist zu erkennen, dass bei einem Diodenstrom von 20 mA die Diodenspannung ca. 2 V beträgt.

drawing

Mit Hilfe des Schaltbilds für eine LED mit Vorwiderstand lässt sich folgende Gleichung für die Spannungen aufstellen: U0=UR+UDU_0 = U_R + U_D. Da für UR=IDRVU_R = I_D \cdot R_V gilt, lässt sich die Gleichung auch folgendermaßen schreiben:

U0=IDRV+UDU_0 = I_D\cdot R_V + U_D

und nach dem gesuchten Widerstand RR umstellen:

RV=U0UDIDR_V= \dfrac{U_0- U_D}{I_D}

Mit den Werten für die LED UD=2 VU_D = 2\ \text{V} und I=20 mAI=20\ \text{mA} folgt:

R=U0UDI=5 V2 V20 mA=150 Ω<220 ΩR= \frac{U_0 - U_D}{I}= \frac{5\ V - 2\ V}{20\ mA} = 150\ \Omega < 220\ \Omega

Ein Vorwiderstand von 220Ω220 \Omega begrenzt somit den Diodenstrom auf unter 20 mA und sorgt dafür, dass eine LED sicher an einer 5 V Spannungsquelle betrieben werden kann.

Aufgaben - LED
  1. Recherchieren Sie die üblichen Diodenspannungen UDU_D verschiedenfarbiger LEDs: a) rot, b) gelb, c) grün, d) blau, e) weiß.
  2. Bestimmen Sie für eine an 5V angeschlossene blaue LED den benötigten Vorwiderstand, damit ein Maximalstrom von 20 mA bei einer Spannung von 3,2 V nicht überschritten wird.
  3. Zwei rote LEDs mit einer Diodenspannung von 2 V und einem Strom von 20 mA werden in Reihe an 5 V angeschlossen. Zeichnen Sie die Schaltung mit Vorwiderstand. Bestimmen Sie den Wert des Vorwiderstandes [50Ω].
  4. Eine ultrahelle LED mit folgendem Datenblatt soll an eine Spannungsquelle mit 5 V angeschlossen werden. Bestimmen Sie den nötigen Vorwiderstand, damit die Stromaufnahme der LED 50 mA beträgt [58Ω].

Bauteilliste

Für die meisten, der hier folgenden Beispiele zum Thema Arduino, werden nur relativ wenige Bauteile benötigt. Mit Ausnahme vom Abschnitt Analoger Eingang können alle Beispiele und Aufgaben mit den folgenden Bauteilen aufgebaut werden.

BauteilAnzahl
Arduino (Uno)1
LED6
Taster2
Widerstand 220 Ohm6
Widerstand 20 kOhm2
Steckbrett (half size)1
Steckbrett (mini)1
Verbindungskabelca. 10
weitere Bauteile nach Bedarf

Weitere Informationen zum Thema LEDs (Aufbau, Funktion, Schaltung, etc.) sind auf den folgenden Seiten zu finden: