Arduino Projekt: Pulsierende LED
Autor: Justin Frommberger
Ablaufplan
Um das Projekt "Pulsierende LED" durchzuführen, wird der folgende Ablauf empfohlen einzuhalten.
- Betrachten Sie das Video mit der Abbildung 1, das eine pulsierende LED zeigt und lesen Sie die Aufgabenstellung sorgfältig durch.
- Es wird empfohlen, dass Personen ohne vorherige Programmierkenntnisse zunächst das Spiel "Blockly-Spiele" absolvieren.
- Es wird Personen, die das Spiel "Blockly-Spiele" als zu einfach empfinden, empfohlen, stattdessen direkt mit "Karel-Spiele" zu starten.
- Nach Abschluss der Spiele ist es erforderlich, eine Überprüfung der Materialliste durchzuführen, um sicherzustellen, dass alle erforderlichen Materialien vorhanden sind.
- Bevor Sie mit dem Hauptprojekt beginnen, ist es ratsam, das "Vorab wichtig zu wissen" zu lesen und bei der Durchführung des Projekts zu beachten.
- Nachdem die Grundbausteine erklärt wurden, sollten Sie nun mit der Abbildung 3 fortfahren und die Schaltung des Projekts nachbauen.
- Vor der Programmierung ist es wichtig, die benötigte Hardware gemäß den Angaben unter "Benötigtes Programm" herunterzuladen.
- Abschließend wird eine schrittweise Anleitung zur Programmierung präsentiert. Wichtig ist, dass der Code in der gleichen Position wie in den Lösungen platziert wird.
- Viel Freude und Erfolg bei der Umsetzung Ihres ersten Projektes!
Aufgabenstellung
Das Ziel dieses Projekts besteht darin, eine LED durch pulsierende Helligkeitsänderungen effektvoll zum Leuchten zu bringen.
Dieser Vorgang wird in der Fachsprache als "Faden" bezeichnet.
Programmieren lernen
Um Personen ohne Vorkenntnissen im Bereich der Programmierung angemessen einzubeziehen, sollten vorab beide der nachfolgenden Spiele durchgeführt werden.
- Ohne Vorkenntnisse bedeutet, dass man keinerlei Kenntnisse zum Thema Programmierung besitzt.
- Teilnehmer, die bereits über grundlegende Kenntnisse verfügen, haben die Möglichkeit, die Blockly-Spiele zu überspringen und direkt mit dem Spiel Karel zu beginnen.
- Blockly-Spiel ohne Vorkenntnisse: (klicken)
- Karel-Spiel für Personen mit leichten Vorkenntnissen: (klicken)
Start des Projektes
Benötigte Materialien!
Tabelle 1: Materialliste
Nr. | Anz. | Beschreibung | Bild | Pos. | Anz. | Beschreibung | Bild |
---|---|---|---|---|---|---|---|
① | 1 | Funduino Arduino UNO R3 | ② | 2 | Jumper Kabel, männlich/männlich | ||
③ | 1 | Steckbrett | ④ | 1 | LED | ||
⑤ | 1 | Widerstand 120 Ω |
Vorab wichtig zu wissen!
LED
Beachte beim Arbeiten mit der LED, die Anode und Kathode nicht zu vertauschen.
- In die Anode fließt der Strom hinein (lange Seite), danach fließt der Strom wieder durch die Kathode hinaus (kurze Seite) siehe Abbildung 2.
- Wenn die LED am Ende des Projektes nicht leuchtet, kann es sein, dass sie vertauscht wurde.
- In diesem Fall reicht es aus, sie einfach umzudrehen und schon leuchtet sie.
Arduino Uno R3
Der Arduino besitzt unterschiedliche Schnittstellen, weil der Arduino ein digitaler Mikrocontroller ist, kann er nur 5 Volt ausgeben oder annehmen.
Bei einer konstanten 5 V Spannung, ist die LED immer gleich hell, so ist das Ziel die Spannung zur LED zu reduzieren.
- Dafür wird eine Pulsweitenmodulation (PWM) Schnittstelle benötigt, denn bei den anderen Schnittstellen ist der Wert nicht anpassbar.
- Bei einem geringen PWM-Wert (0 bis 255) ist das 5 V Signal kaum noch vorhanden und bei einem hohen PWM-Wert liegen 5 V durchgehend am Pin an.
- Durch die PWM Schnittstelle kann nun die LED unterschiedlich hell leuchten, da die Spannung (Volt) anpassbar ist.
- Die PWM Schnittstellen sind ganz einfach zu erkennen an diesem Zeichen (~)
- Das Zeichen ist auf dem Arduino bei den digitalen Zahlen zu finden, siehe Abbildung 3.
Steckbrett
Erklärung zum Arbeiten mit einem Steckbrett. (klicken)
Widerstand
Um die Größe der Widerstände zu bestimmen, kann man anhand ihres Farbcodes erkennen.
Eine hilfreiche Internetseite steht zur Verfügung, um die genaue Größe zu ermitteln. (klicken)
Aufbau Schaltung
In Abbildung 3 wird die Schaltung für das Projekt "Pulsierende LED" dargestellt.
Bevor mit der Programmierung begonnen werden kann, muss die Schaltung des Projekts aufgebaut werden.
- Beim Aufbau der Schaltung ist es egal, wo diese auf dem Steckbrett platziert wird, zwischen a und j.
- Zu beachten ist, dass Kabel, Widerstand und LED genau wie in der Abbildung 3 platziert werden.
- Achte auf die Vertikalen und Horizontalen Reihen!
- Ground (Schwarze Kabel) in einer Reihe mit der linken Seite vom Widerstand.
- Linke Seite vom Wiederstand mit der Kathode in Reihe.
- Anode in Reihe mit Pin 9 (Rotes Kabel).
Programmierung
Benötigtes Programm!
Lade Sie die aktuellste Version der Arduino IDE herunter. (klicken)
Stellen Sie sicher, dass Sie die korrekte Version für Ihren PC oder Laptop herunterladen.
1. Erstellen der Arduino Datei
Starten Sie das Programm Arduino IDE mit einem Doppelklick.
Sobald das Programm gestartet ist, soll ein neues Projekt geöffnet und anschließend abgespeichert werden.
Stelle sicher, dass dein Arduino über ein Kabel mit dem Computer verbunden ist.
- Wichtig: Unter jeder Anleitung ist ein Beispiel vorhanden, das durch Klicken auf "Ausklappen" sichtbar wird.
Neues Projekt & Speichern |
⇒ Überprüfe, ob das richtige Board ausgewählt wurde.
Board check |
⇒ Überprüfe, ob der richtige Port ausgewählt wurde.
- Die Port Nummer ist für jede Schnittstelle anderes, beachten Sie den Namen, der in Klammern angegeben ist (Arduino Uno).
Port check |
2. Wichtig für die Programmierung
Es ist wichtig, die Programmierrichtlinien beim Verfassen von Programmiercode zu beachten und einzuhalten.
[Programmierrichtlinien, klicken]
Die Grundkenntnisse dienen als Nachschlagewerk, um während der Programmierung Code zu überprüfen, den man möglicherweise nicht vollständig verstanden hat.
[Grundkenntnisse Pulsierende LED, klicken]
3. Start der Programmierung
Wichtig vorab:
- Unter jedem Programmierabschnitt befindet sich ein ausklappbares Element, das die Teillösung enthält.
- Überprüfen Sie Ihre Lösungen sorgfältig und stellen Sie sicher, dass Ihr Code genau in der gleichen Reihenfolge angeordnet ist wie im Beispiel.
- Beachte die Klammer vor, hinter oder nach jedem Wort, diese sind sehr wichtig in der Programmierung.
- Ihr Code muss genau so aussehen wie im Beispiel: Quelltext 1:
Start.ino
[Quelltext 1: Start.ino
]
void setup()
{
}
void loop()
{
}
Initialisierung (Zuweisung)
Im ersten Schritt der Programmierung soll der LED in der Arduino IDE mit ihrem Namen und Datentyp versehen werden.
Um das Verständnis zu verbessern, wird empfohlen, sich mit den Grundkenntnissen der Initialisierung und Datentypen vertraut zu machen.
- Durch die Verwendung des Codes
const byte Name = Zahl;
wird der LED ein spezifischer Name und Datentyp zugewiesen. - Schreiben Sie den Code über das
void setup()
, beachte das jedes Zeichen übernommen werden muss. - Ihre Aufgabe ist, den Code einzufügen und Name und Zahl zu ihren Werten auszutauschen.
- Name: Es besteht die Möglichkeit, einen beliebigen Namen zu wählen, achte auf die korrekte Schreibweise. Im folgenden Beispiel wird der Name LED_PIN verwendet.
- Zahl: Die Zahl ergibt sich aus der Position, an der das Kabel mit der LED verbunden ist. In diesem Beispiel ist es die Zahl 9 (siehe Schaltung).
- const byte: Beutetet, dass die Zahl Konstant bleibt und im Bereich 0 und 255 liegt.
[Quelltext 1: LED.ino
]
Lösung |
const byte LED_PIN = 9; // ⇐ Das Wort „LED_PIN“ steht jetzt für den Wert 9
void setup()
{
//später
}
void loop()
{
//später
}
|
LED festlegen
Nun muss entschieden werden, ob eine LED ein INPUT oder OUTPUT-Befehl verwenden muss.
Hierfür wird der Code pinMode(LED_PIN,OUTPUT);
oder pinMode(LED_PIN,INPUT);
verwendet.
- OUTPUT = Definiert den Pin als Ausgang.
- INPUT = Definiert den Pin als Eingang.
- Da der Arduino die LED mit Strom versorgt, ergibt sich die Notwendigkeit eines OUTPUTs.
- Der Befehl wird ins
void setup()
geschrieben.
[Quelltext 2: LED.ino
]
Lösung |
const byte LED_PIN = 9; // Das Wort „LED_PIN“ steht jetzt für den Wert 9
void setup()
{
pinMode(LED_PIN,OUTPUT); // ⇐ Definiert den Pin als Ausgang
}
void loop()
{
//später
}
|
LED Helligkeit
In den nächsten Schritten, soll dem Arduino-Programm erklärt werden, wie hell die LED leuchten soll.
Zuerst muss wieder ein Name erstellt werden, so ähnlich wie bei dem Namen der LED.
- In diesem Beispiel wird der Variable der [Name: Helligkeit] zugewiesen.
- Weil derzeit kein Wert für die Helligkeit benötigt wird, wird ihr vorübergehend der Wert [Helligkeit = 0] zugewiesen.
- Achte darauf, den richtigen Datentypen (siehe Datentypen) und die richtige Namensgebung gemäß den Programmierrichtlinien zu verwenden.
- Dieser Code wird ebenfalls über den Abschnitt
void setup()
geschrieben.
- Dieser Code wird ebenfalls über den Abschnitt
[Quelltext 3: LED.ino
]
Lösung |
const byte LED_PIN = 9; // Das Wort „LED_PIN“ steht jetzt für den Wert 9
byte Helligkeit = 0; // ⇐ Das Wort „Helligkeit“ steht nun für den Wert, der ausgegeben wird
void setup()
{
pinMode(LED_PIN, OUTPUT); // Definiert den Pin als Ausgang
}
void loop()
{
//später
}
|
Um die LED zum Leuchten zu bringen, muss der Helligkeitswert der LED zugewiesen werden.
- Mit dem Befehl
analogWrite(LED_PIN, Helligkeit)
ist dies möglich. - Dieser Code wird in die Klammern vom
void loop()
geschrieben. - Bei Fragen, siehe Grundkenntnisse Programmierung
analogWrite()
.
[Quelltext 4: LED.ino
]
Lösung |
const byte LED_PIN = 9; //Das Wort „LED_PIN“ steht jetzt für den Wert 9
byte Helligkeit = 0; // Das Wort „Helligkeit“ steht nun für den Wert, der ausgegeben wird
void setup()
{
pinMode(LED_PIN, OUTPUT); // Definiert den Pin als Ausgang
}
void loop()
{
analogWrite(LED_PIN, Helligkeit); // ⇐ (Die Helligkeit wird später erhöht)
}
|
Rechenfunktion Helligkeit
Das Ziel des Projekts besteht darin, die LED faden zu lassen, wofür eine Rechenfunktion und eine If-Verzweigung erforderlich sind, siehe Grundkenntnisse.
Derzeit ist der Helligkeitswert im Programm auf 0 eingestellt, dieser Wert muss angepasst werden, um die LED unterschiedlich hell leuchten zu lassen.
- Um dies zu erreichen, bedarf es Programmiercode, die die Variable "Helligkeit" von 0 hochzählt und anschließend wieder herunterzählt.
- Hierfür wird eine Variable mit dem Namen [byte FADE_SCHRITT = 5;] benötigt, diese soll später die Helligkeit um +5 erhöhen und um -5 herunterzählen.
- Die Variable wird wieder über dem
void setup()
geschrieben.
- Die Variable wird wieder über dem
[Quelltext 5: LED.ino
]
Lösung |
const byte LED_PIN = 9; //Das Wort „LED_PIN“ steht jetzt für den Wert 9
byte Helligkeit = 0; // Das Wort „Helligkeit“ steht nun für den Wert, der ausgegeben wird
byte FADE_SCHRITT = 5; //⇐ Bestimmt die Geschwindigkeit des „Fadens“
void setup()
{
pinMode(LED_PIN, OUTPUT); // Definiert den Pin als Ausgang
}
void loop()
{
analogWrite(LED_PIN, Helligkeit);
}
|
Addition:
Zum Schluss muss die Helligkeit um die FADE_SCHRITTEN erhöht und der neue Wert gespeichert werden. Weitere Informationen zur Addition findest du in den Grundlagen.
Um dies umzusetzen, wird die Helligkeit gleichgesetzt mit der Helligkeit plus den FADE_SCHRITTEN.
- Beispiel:
Ergebnis = Ergebnis + Addition;
- Dieser Code muss unter dem Code
analogWrite(LED_PIN,Helligkeit);
geschrieben werden.
- Dieser Code muss unter dem Code
[Quelltext 6: LED.ino
]
Lösung |
const byte LED_PIN = 9; //Das Wort „LED_PIN“ steht jetzt für den Wert 9
byte Helligkeit = 0; // Das Wort „Helligkeit“ steht nun für den Wert, der ausgegeben wird
byte FADE_SCHRITT = 5; // Bestimmt die Geschwindigkeit des „Fadens“
void setup()
{
pinMode(LED_PIN, OUTPUT); // Definiert den Pin als Ausgang
}
void loop()
{
analogWrite(LED_PIN, Helligkeit);
Helligkeit =Helligkeit + FADE_SCHRITT; // ⇐ Wert für die PWM-Ausgabe verändert
delay(25); // ⇐ Wartet 25ms, damit die Helligkeit länger angezeigt wird
}
|
if-Bedingung Helligkeit
Abschließend muss eine if-Bedingung erstellt werden, um die Helligkeit wieder herunterzuzählen, siehe Grundkenntnisse.
- Wenn die Variable Helligkeit den Wert 0 oder 255 erreicht, ändert sich das Vorzeichen von FADE_SCHRITTEN.
- Beispiel: Helligkeit erreicht den Wert 255, folgend wird FADE_SCHRITTE zu -FADE_SCHRITTE.
- Dies sorgt dafür, dass die Helligkeit wieder heruntergezählt wird.
- Dieser Code wird unter
delay(25);
geschrieben.
- Dieser Code wird unter
Hinweiß:
Die Lösung der If Aufgabe ist anspruchvoller, so wird gerate die Lösung 7 zu übernehmen.
Um im Anschluss die Lösung besser nachvollziehen zu können, ist es wichtig, zu verstehen, wie die Aufgabe gelöst wurde.
[Quelltext 7: LED.ino
]
Lösung |
const byte LED_PIN = 9; //Das Wort „LED_PIN“ steht jetzt für den Wert 9
byte Helligkeit = 0; // Das Wort „Helligkeit“ steht nun für den Wert, der ausgegeben wird
byte FADE_SCHRITT = 5; // Bestimmt die Geschwindigkeit des „Fadens“
void setup()
{
pinMode(LED_PIN, OUTPUT);
}
void loop()
{
analogWrite(LED_PIN, Helligkeit);
Helligkeit= Helligkeit + FADE_SCHRITT;
delay(25); // 25 Sekunden Pause zwischen dem Hochzählen
if(Helligkeit== 0 || Helligkeit== 255) // ⇐ if-Bedingung
{
FADE_SCHRITT = -FADE_SCHRITT; // Zahl negieren, sodass subtrahiert wird
}
}
|
Musterlösung
Quelle: Link
Musterlösung |
/* Konstanten */
const byte LED_PIN = 9; //Das Wort „LED_PIN“ steht jetzt für den Wert 9
byte FADE_SCHRITT = 5; // Bestimmt die Geschwindigkeit des „fadens“
/* Variablen deklarieren */
byte Helligkeit = 0; // Das Wort „Helligkeit“ steht nun für den Wert, der bei der PWM ausgegeben wird
void setup()
{
pinMode(LED_PIN, OUTPUT); // Der Pin mit der LED (Pin9) ist ein Ausgang
}
void loop()
{
analogWrite(LED_PIN, Helligkeit); // LED (Pin9) die PWM Ausgabe aktiviert
Helligkeit =Helligkeit + FADE_SCHRITT; // Wert für die PWM-Ausgabe verändert
delay(25); // Helligkeit beibehalten
if (Helligkeit == 0 || Helligkeit == 255) // Wenn Helligkeit 0 ODER 255 erreicht wird die Schleife ausgeführt
{
FADE_SCHRITT = -FADE_SCHRITT ; // Wechselt den Wert für die „Fadeschritte“ von positiv zu negativ
}
} // Loop-Teil geschlossen.
|
→ zurück zum Hauptartikel: BA: Arduino-Projekte für die Lehre