Arduino Grundlagen Teil 7: Mehrere LEDs ansteuern & blinken lassen

Mehrere LEDs ansteuern - Arduino Grundlagen Teil 7

Nachdem wir im Artikel >> Eine externe LED blinken lassen bereits eine einzelne LED angesteuert haben und danach im Artikel >> Die LED Schaltung im Detail die Berechnung des Vorwiderstandes betrachtet haben, wollen wir jetzt mehrere LEDs ansteuern.

Dazu müssen lediglich die bisherigen Informationen miteinander kombiniert werden. Wir beginnen mit der Berechnung der Widerstände, bauen dann die Schaltung auf und verändern den Code, damit die LEDs wie gewünscht blinken.

Komponenten-Liste

Für die Umsetzung brauchen wir folgende Komponenten:

Die Schaltung um mehrere LEDs ansteuern zu können

Die Schaltung soll gleich wie in folgt aufgebaut werden.

Breadboard mit Schaltung für mehrere LEDs

Breadboard mit Schaltung für mehrere LEDs

Berechnung der Widerstände

Für die Realisierung brauchen wir für die verschiedenen LEDs passende Vorwiderstände.

Die Spannungen der LEDs

Dafür müssen wir erst mal wieder wissen, welche Spannung welche LED-Farbe benötigt. Dies ist in Tabelle 1 exemplarisch dargestellt. Achte aber wie immer auf die Angaben des Herstellers bzw. Händlers.

LED-Farbe Spannung (ULED)
Infrarot 1,2-1,8V
Rot 1,6-2,3V
Gelb 1,9-2,5V
Grün 1,9-2,5V
Blau 3-4V
Weiß 3-4V
Ultra-Violett 3-4V

Tab 1: LED-Spannungen von Standard-LEDs

Der maximale Strom

Der zweite Punkt ist wieder der maximale Strom. Meist liegt er bei Standard-LEDs bei 10-30mA. Auch hier hilft das Datenblatt des Herstellers bzw. Händlers. Die von mir eingesetzten LEDs haben unabhängig von der Farbe einen maximalen Strom von 10mA.

Die Berechnungen

Hier können wir dieselbe Berechnung nehmen, wie bei dem Beispiel >> mit einer LED.

Die roten LEDs
Die Berechnung für die Spannung der Widerstände R1 und R2 (UR1 und UR2) ist:

UR1 = UR2 = Uges – ULED1 = 5,0V – 1,6V = 3,4V

An den Widerständen R1 und R2 wird also die Spannung UR1 (bzw. UR2) von 3,4V abfallen.

LED-Schaltung

LED-Schaltung

Nach Ohm’schen Gesetz:

R = U / I (Widerstand = Spannung / Strom)

müssen die Widerstände R1 und R2 für die roten LEDs mindestens folgenden Wert haben:

R2 = R1 = UR1 / IR1 = UR1 / ILED1 = 3,4V / 10mA = 340Ω

Wählen wir einen 340Ω Widerstand, können also maximal 10mA fließen.

Natürlich besteht hier wieder das Problem, dass wir vermutlich keinen 340Ω Widerstand haben. Deswegen wählen wir den nächst größeren Widerstand mit 470Ω. Dadurch verringert sich der maximale LED-Strom ILED auf 7,23mA.

Die Berechnung dazu ist:

ILED1 = IR1 = UR1 / R1 = (Uges – ULED1) / R1 = (5,0V – 1,6V) / 470Ω = 3,4V / 470Ω = 7,23mA

Die grünen LEDs
Bei den grünen LEDs ist die Berechnung identisch, sie haben aber eine Spannung von ca. 2,1V. Die Berechnung für die Spannung an den Widerständen R3 und R4 (UR3 und UR4) ist:

UR3 = UR4 = Uges – ULED3 = 5,0V – 2,1V = 2,9V

An den Widerständen R3 und R4 wird also die Spannung UR3 (bzw. UR4) von 2,9V abfallen.

Die LEDs werden mit einem maximalen Strom (ILED) von 10mA angegeben. Mit diesen beiden Informationen können wir den passenden Widerstand berechnen.

R4 = R3 = UR3 / IR3 = UR3 / ILED3 = 2,9V / 10mA = 290Ω

Auch das ist wieder ein Widerstand, den man selten in einem Widerstands-Sortiment findet. Hier können wir einen 330Ω Widerstand wählen, da er laut Berechnung:

ILED3 = IR3 = UR3 / R3 = (Uges – ULED3) / R3 = (5,0V – 2,1V) / 330Ω = 2,9V / 330Ω = 8,79mA

8,79mA durchlässt. Mit 8,79mA liegen wir unterhalb der maximalen 10mA der grünen LEDs.

Jetzt haben wir alle nötigen Informationen, um die folgende Schaltung aufbauen zu können:

Breadboard mit Schaltung für mehrere LEDs

Breadboard mit Schaltung für mehrere LEDs

Aufbau der Schaltung

Den Aufbau führen wir wieder Schritt für Schritt durch. Vom ersten Beispiel sollte der Aufbau mit einer LED noch vorhanden sein. Wir machen also mit der zweiten LED weiter.

 

LED 2

Zuerst positionieren wir die zweite rote LED so, dass das kürzere Beinchen (Kathode = Minus-Pol) in Reihe 37 steckt. Von Reihe 37 brauchen wir natürlich eine Verbindung zur durchgezogenen Masse-Reihe an der Unterseite des Breadboards. Unterhalb des längeren Beinchens der LED (Anode = Plus-Pol) stecken wir den 470Ω Widerstand (Farben Gelb, Violett, Braun, Gold) ein, sodass die andere Seite vom Widerstand in Reihe 32 steckt. In Reihe 32 stecken wir noch die Leitung Richtung Arduino. Die zweite LED soll über den digitalen Ausgang D5 des Arduinos angesteuert werden. Die Leitung wird deshalb in Reihe 9 des Breadboards gesteckt.

Breadboard mit angeschlossener LED 2

Breadboard mit angeschlossener LED 2

 

LED 3

Mit der ersten grünen LED (LED 3) gehen wir genauso vor. Das kurze Beinchen (Kathode = Minus-Pol) wird in Reihe 49 gesteckt und ebenfalls mit der Masse-Reihe am unteren Rand des Breadboards verbunden. Der 330Ω Widerstand (Farben Orange, Orange, Braun, Gold) wird unterhalb des längeren Beinchens der LED (Anode = Plus-Pol) in Reihe 48 eingesteckt und zur Reihe 44 gelegt. In Reihe 44 wird auch die Leitung zum Arduino gesteckt. Die erste grüne LED soll am digitalen Ausgang D6 des Arduinos betrieben werden, also wird die Leitung in Reihe 8 gesteckt.

 

Breadboard mit angeschlossener LED 3

Breadboard mit angeschlossener LED 3

LED 4

LED 4 wird mit der Kathode in Reihe 61 gesteckt, wo auch die Verbindung zur Masse-Reihe hergestellt wird. Der 330Ω Widerstand (Farben Orange, Orange, Braun, Gold) verbindet die Anode der LED in Reihe 60 mit der Reihe 56. Hier erfolgt der Anschluss an den digitalen Ausgang D9 des Arduinos in Reihe 5.

Hat alles geklappt, sollte das Breadboard wie in Abbildung 6 aussehen.

 

Breadboard mit angeschlossener LED 4

Breadboard mit angeschlossener LED 4

TIPP
Warum haben wir nicht einfach die Ausgänge D1-D4 genommen oder wenigstens die Ausgänge D3-D6?

Ganz einfach, die Ausgänge D3, D5, D6 und D9 können mit einem Hardware PWM-Signal angesteuert werden. Was uns das für einen Vorteil verschafft, schauen wir uns im Artikel LEDs Faden an. An dieser Stelle sei nur so viel verraten: Mit PWM-Signalen lassen sich noch viel coolere Sachen mit LEDs machen!

Das Programm

Wir haben jetzt vier LEDs an den Arduino angeschlossen. Die Ausgänge des Arduinos sind:

  • LED 1 – Rot: D3
  • LED 2 – Rot: D5
  • LED 3 – Grün: D6
  • LED 4 – Grün: D9

Da es jetzt schon vier LEDs sind, macht es Sinn, dass wir mit Variablen arbeiten.

Einschub Variablen und Defines

Durch Variablen lassen sich die Programme viel einfacher lesen und bearbeiten. Ich habe mir angewöhnt, den „Sinn“ (Eingang, Ausgang, Integer, Boolean,…) immer an den Anfang des Variablen-Namens zu schreiben. Der Ausgang von LED 1 würde also out_LED1 heißen.

Möchte man also der Variablen out_LED1 einen Wert zuweisen, würde die entsprechende Zeile beispielsweise:

int out_LED1 = 3;

heißen. Wir hätten somit eine Variable vom Typ Integer (Standard-Länge 16bit) mit der Bezeichnung out_LED1 erstellt und ihr den Wert 3 zugewiesen.

Variablen lassen sich während des Programm-Ablaufs immer wieder verändern, verbrauchen dadurch aber dynamischen Speicher. Der dynamische Speicher ist nicht im Überfluss vorhanden, weswegen wir uns schon von Anfang an angewöhnen sollten ihn nur dann zu nutzen, wenn es nötig ist.

Wenn sich der Wert während des Programm-Ablaufs nicht ändern wird (was bei Ein- und Ausgängen eigentlich der Fall ist), kann man auch so genannte Defines (Definitionen) nutzen. Man kann mit der Bezeichnung eines Defines wie mit einem Variablen-Namen arbeiten, ein Define verbraucht aber keinen dynamischen Speicher. Für Ein- und Ausgänge bieten sich solche Defines also prinzipiell gut an. Man könnte folglich auch diesen Befehl nutzen:

#define out_LED1 3

Dies war sicher ein sehr kurzer Sprung in das Thema und bei weitem nicht ausführlich. Das soll uns jetzt aber nicht stören. Variablen und Defines werden wir an anderer Stelle und zu einem späteren Zeitpunkt sicher nochmal genauer betrachten.

 

Kommen wir also zum Programm. Wir wollen erst mal einfach die LEDs testen und schauen, ob auch alle LEDs korrekt funktionieren.

#define out_LED1 3              // Den vier Ausgängen einen
#define out_LED2 5              // Namen zuweisen. 
#define out_LED3 6
#define out_LED4 9

// Das Setup
void setup() {
  pinMode(out_LED1, OUTPUT);	// Die vier Pins als
  pinMode(out_LED2, OUTPUT);	// Ausgänge deklarieren.
  pinMode(out_LED3, OUTPUT);
  pinMode(out_LED4, OUTPUT);
}

// Die Haupt-Schleife (Main-Loop)
void loop() {
  digitalWrite(out_LED1, HIGH);	// Alle Ausgänge setzen 
  digitalWrite(out_LED2, HIGH);	// und somit alle LEDs 
  digitalWrite(out_LED3, HIGH);	// einschalten.
  digitalWrite(out_LED4, HIGH);	//

  delay(1000);			        // 1 Sekunde warten. 
  digitalWrite(out_LED1, LOW);	// Alle LEDs wieder
  digitalWrite(out_LED2, LOW);	// ausschalten.
  digitalWrite(out_LED3, LOW);	// 
  digitalWrite(out_LED4, LOW);	// 
  delay(1000);			        // 1 Sekunde warten.
}

Listing 1: Der Sketch für vier LEDs

Den Sketch kannst Du einfach kopieren und in die Arduino IDE einfügen. Nach einem Klick auf den Upload-Button, sollten die LEDs wie im folgenden Video blinken.

Hier wieder ein kurzes Beispiel-Video (ohne Ton!):


Arduino Grundlagen Kurs im Überblick:

>> Teil 1: Der Arduino im Detail
>> Teil 2: Die Bauteile des Arduino
>>Teil 3: Ein Programm auf einen Arduino laden
>> Teil 4: Eine LED blinken lassen!
>> Teil 5: Eine externe LED blinken lassen
>> Teil 6: Die LED Schaltung im Detail
>> Teil 7: Mehrere LEDs ansteuern & blinken lassen
>> Teil 8: Eine LED dimmen
>> Teil 9: Mehrere LEDs dimmen
>> Teil 10: Taster an Arduino anschließen
>> Teil 11: Serielle Schnittstelle
>> Teil 12: Softwareserial Library

Kommentar hinterlassen zu "Arduino Grundlagen Teil 7: Mehrere LEDs ansteuern & blinken lassen"

Hinterlasse einen Kommentar

E-Mail Adresse wird nicht veröffentlicht.


*


*