Leuchtdioden verwenden

Das solltet ihr wissen

Bei einer LED (Leuchtdiode, eng.: light-emitting diode) ist es wichtig, wie rum sie einbaust/angeschlossen wird (Stichwort Durchlassrichtung).

Es darf nicht zu viel Strom durch die LED fließen, du brauchst also einen Vorwiderstand!

Das Breadboard (Steckbrett)

Mit Hilfe des Breadboards kannst du Bauteile verbinden, ohne sie zu verlöten. Dazu musst du allerdings wissen, was wie verbunden ist:

Übung

In dem Bild (unten) ist eingezeichnet, wie der Strom fließt, wenn Kabel (Jumper-Kabel: rot) am Breadboard angeschlossen sind. Die grünen Punkte helfen dir dabei, den Strompfad zu verfolgen. Hier ist Pin 7 (I/O-Pin auf dem Arduino) mit GND verbunden. 

 

Kannst du den Strompfad verfolgen?

Hinweis 1:

Natürlich ist es egal, welche Farbe deine Kabel haben, wenn du etwas anschließen willst.

Für die hier gezeigten Schaltpläne wir (ab jetzt) blau für GND und rot den Strompin verwendet.

Hinweis 2:

Pin 7

Auf dem Mikrocontroller-Board gibt es verschiedene Pins: Pin 7 ist ein sogenannter I/O-Pins. I/O steht für Input/Output.

 

Den Mikrocontroller (und die unterschiedlichen Pins) betrachten wir später noch einmal ganz genau. Momentan musst du nur wissen, dass LEDs (und Taster) an die Pins 3 – 13 angeschlossen werden können.  

GND

GND (eng. ground) ist das sogenannte Bezugspotential.

Das wird nochmal sehr wichtig zu verstehen, wenn wir Schaltungen genauer betrachten.

Eine LED anschließen

Die LED hat ein kurzes Bein (Kathode, ) und ein langes Bein (Anode, +). 

Es ist wichtig, welches Bein mit GND und welches Bein an den I/O-Pin verbunden (GND und I/O-Pin sind auf dem Arduino)

Außerdem müsst ihr jede LED mit einem Wiederstand in Reihe schalten.

Hier ist wichtig, welche LED du verwendest (Farbe), da jede LED einen anderen Widerstand braucht. Warum das so ist und wie ihr das berechnen könnt, schauen wir uns später an!

Hinweis:

Das „lange Bein“ der LED (Anode) ist in der Schaltplan (rechts) abgeknickt 

Hinweis:

Es ist egal, ob der Vorwiderstand an dem langen oder an dem kurzen Bein der LED (Anode/Kathode) angeschlossen wird.

Wenn wir später die Maschenregel betrachten kennenlernen, siehst du auch wieso (weil alles eine Masche ist)!

Übung

Schließe eine blaue LED an (wie oben gezeigt)

Die Arduino-IDE

Um die LED (besser gesagt den Mikrocontroller, der die LED mit Strom versorgt) zu programmieren, nutzen wir die Arduino-IDE.

Hinweis 1:

Installiert vorher den USB-Treiber CH340

Hinweis 2:

Bevor ihr etwas programmieren könnt, müsst ihr zunächst die Arduino-IDE „konfigurieren

Wählt unter Werkzeuge das verwendete Board „Arduino Uno“ und den dazu passenden Port aus

Hinweis 3:

Bevor ihr euer (selbst geschriebenes) Programm auf den Mikrocontroller laden könnt, müsst ihr es zuerst speichern.

(Die selbst geschriebenen Programme werden Sketch genannt)

Regeln zur benennung von Datein (Sketchen)

  • keine Umlaute (z.B. ä) verwenden
  • keine Leerzeichen -> benutzt Unterstriche _ oder –

  • Allgemein gilt: eure Programme solltet ihr speichern (und benennen)

Eine LED ansteuern (programmieren)

Hierzu seht ihr, wie der Befehl aufgebaut ist:

Hinweis 1:

Vergesst nicht, dass jeder Befehl mit einem ; (Semikolon) endet

Hinweis 2:

Auch hier hilft euch wieder das Syntax-Highlighting (der bunte Text).

  • In erster Linie unterscheidet die unterschiedlichen Elemente (Funktionsname, -typ usw.) voneinander.
  • Es hilft euch aber auch bei schreiben eures Codes, da pinMode, wenn ihr es falsch schreibt nicht mehr Orange sondern Schwarz ist
Übung

Programmiere die blaue LED, so dass sie leuchtet.

Die blinkende LED

Die LEDs nur anzuschalten wäre langweilig -> versuchen wir mal die LED an- und auszumachen.

Was passiert hier? -> Probiert es aus!

Hier siehst du, wie der Code für eine LED (an Pin 13) aussieht. Das Ziel: Die LED soll (sollte eigentlich) blinken!

 

void setup(){

   pinMode(13, OUTPUT);

}

 

void loop(){

   digitalWrite(13, HIGH); 

   digitalWrite(13, LOW); 

}

Die LED geht an – Die LED geht aus.

ABER: Das passiert so schnell, dass ihr es nicht sehen könnt -> Ihr müsst eurem Mikrocontroller also sagen:

 

Mach die LED an – Warte – Mach die LED aus

Hierzu brauchst du den delay-Befehl

Der delay-Befehl

Code - delay
Übung

Schaffst du es, dass die LED dauerhaft blinkt?

Dabei hast du als Hilfestellung den Code unten. Versuche es erst selbst, bevor du den Code unten ausklappst.

//Hier nur für die loop()

void setup(){

   pinMode(13, OUTPUT);

}

 

void loop(){

   digitalWrite(13, HIGH);     // LED an

   delay(1000);                      // Warte 1 Sekunde

   digitalWrite(13, LOW);     // LED aus

}

Irgendwie ist die LED jetzt permanent an?

-> Das liegt an der loop-Funktion

Du hast deinem Mikrocontroller gesagt: Mach die LED an – warte – mach die LED aus.

 

Ja, ABER: es steht in der loop() 

-> nach „LED aus“ ist die loop vorbei und wird wieder neu gestartet und dann kommt sofort wieder LED an (ohne Pause).

void setup(){

   pinMode(13, OUTPUT);

}

 

void loop(){

   digitalWrite(13, HIGH);     // LED an

   delay(1000);                      // Warte 1 Sekunde

   digitalWrite(13, LOW);     // LED aus

   delay(1000);                      // Warte 1 Sekunde

}

 

// Jetzt hast du eine blinkende LED

Der Unterschied zwischen loop() und setup()

Gerade haben wir die Funktion, um eine LED zum blinken zu bringen, in die loop()-Funktion geschrieben.

Übung

Was passiert, wenn der selbe Code im setup() steht? Probiere es mit der blinkenden LED aus!

// Der selbe Code wie oben, die LED blinkt

void setup(){

   pinMode(13, OUTPUT);

}

 

void loop(){

   digitalWrite(13, HIGH);     // LED an

   delay(1000);                      // Warte 1 Sekunde

   digitalWrite(13, LOW);     // LED aus

   delay(1000);                      // Warte 1 Sekunde

}

// Diesmal im setup(), was fällt dir auf?

 

void setup(){

   pinMode(13, OUTPUT);

   digitalWrite(13, HIGH);     // LED an

   delay(1000);                      // Warte 1 Sekunde

   digitalWrite(13, LOW);     // LED aus

   delay(1000);                      // Warte 1 Sekunde

}

 

void loop(){

}

Die loop-Funktion fängt immer wieder von vorne an, wenn sie „am Ende“ ist.

setup() wird hingegen nur ein mal ganz am Anfang ausgeführt und nicht wiederholt. Deshalb blinkt die LED auch nicht, sondern geht nur 1x an und bleibt danach aus!

 

Normalerweise nutzen wir die setup-Funktion primär um dem Mikrocontroller zu sagen, wo LEDs und co angeschlossen sind  {-> für z.B. pinMode()}

Mehrere LEDs verwenden

Wenn ihr mehrere LEDs (maximal 10 LEDs) anschließt, könnt ihr die Seitenleiste eures Breadboard nutzen.

Faustregel:

Vorwiderstand: 220 Ω

Vorwiderstand: 100Ω

Wo die Werte herkommen schauen wir uns später gemeinsam an. So könnt ihr später auch eure eigenen Projekte Planen und wisst, worauf ihr achten müsst!

Blaulicht

Übung

Schließe 4 blaue LEDs (je 2 links, 2 rechts) an und programmiere dein eigenes Blaulicht!

// Blaulicht

 

void setup() {
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode( 5, OUTPUT);
pinMode( 4, OUTPUT);
}

 

void loop() {

 

// Eine Seite an (LEDs 12 und 13)
digitalWrite(13, HIGH);
digitalWrite(12, HIGH);
digitalWrite( 5, LOW);
digitalWrite( 4, LOW);

 

delay(400);         // Warten (LEDs sollen kurz an bleiben)

 

// Andere Seite an (LEDs 4 und 5)
digitalWrite(13, LOW);
digitalWrite(12, LOW);
digitalWrite( 5, HIGH);
digitalWrite( 4, HIGH);

 

delay(400);        // Warten (LEDs sollen kurz an bleiben)
}

 

// Mit den Zeiten im delay könnt ihr ein wenig spielen (Porbiert mal 200, 400, 600 oder 1000 [ms]

Lauflicht

Als nächstes geht es darum, ein Lauflicht bestehend aus 8 LEDs anzuschließen und zu programmieren.

Auch hier kommt prinzipiell nichts Neues, probiers aus!

Übung

Schließe 8 LEDs an und und programmiere ein Lauflicht.

Eine LED soll immer an sein, die anderen aus (wie in dem Video). Spiele auch ein bisschen mit dem delay.

Denke an die richtigen Vorwiderstände!

 

Du musst nicht jedes mal alle LEDS ausschalten (und eine an). Es reicht, wenn du immer die, die gerade an war auf LOW setzt und die nächste auf HIGH.

Am Anfang (beim Start) sind standartmäßig alle LEDs aus!

// LED Lauflicht

 

void setup() {
pinMode(13, OUTPUT);
pinMode(12, OUTPUT);
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);
pinMode( 9, OUTPUT);
pinMode( 8, OUTPUT);
pinMode( 7, OUTPUT);
pinMode( 6, OUTPUT);

}

 

void loop() {

 

digitalWrite(13, HIGH);        // Tipp: an Anfang sind alle LEDs standartmäßig aus

 

delay(200);

 

digitalWrite(13, LOW);
digitalWrite(12, HIGH);

 

delay(200);

 

digitalWrite(12, LOW);
digitalWrite(11, HIGH);

 

delay(200);

 

digitalWrite(11, LOW);

digitalWrite(10, HIGH);

 

delay(200);

 

digitalWrite(10, LOW);
digitalWrite( 9, HIGH);

 

delay(200);

 

digitalWrite(9, LOW);
digitalWrite(8, HIGH);

 

delay(200);

 

digitalWrite(8, LOW);
digitalWrite(7, HIGH);

 

delay(200);

 

digitalWrite(7, LOW);
digitalWrite(6, HIGH);

 

delay(200);

 

digitalWrite(6, LOW);
digitalWrite(7, HIGH);

 

delay(200);

 

digitalWrite(7, LOW);
digitalWrite(8, HIGH);

 

delay(200);

 

digitalWrite(8, LOW);
digitalWrite(9, HIGH);

 

delay(200);

 

digitalWrite( 9, LOW);
digitalWrite(10, HIGH);

 

delay(200);

 

digitalWrite(10, LOW);
digitalWrite(11, HIGH);

 

delay(200);

 

digitalWrite(11, LOW);
digitalWrite(12, HIGH);

 

delay(200);

 

digitalWrite(12, LOW);        // danach Endet die loop() und beginnt erneut. Die erste Zeile ist hier LED 13 HIGH.

                                               // Wenn ihr es hier nochmal hinschreibt, ist es nicht falsch, steht aber doppelt im Code
}

 

 

/* Hinwies: Der Code ist sehr lang, dabei sind hier die meisten Befehle sehr ähnlich. Später, wenn wir uns etwas mehr mit Kontrollstrukturen auskennen, und gelernt haben Variablen einzubinden, geht das natürlich viel schöner */

Die Schaltpläne wurden mit der Software „Fritzig“ erstellt.