Im ersten Schritt soll ein Entwurf der Leuchtreklame in Form einer Simulation entstehen.
Entwicklung einer LED-Leuchtreklame

Das Projekt „Entwicklung einer Leuchtreklame“ ist dazu geeignet, einige Themenbereiche der Elektronik und aktueller cloud-basierter Inhalte zu erarbeiten. Dieses Projekt wird in der Jahrgangsstufe 11 des Beruflichen Gymnasiums begonnen. In der Klasse 12 wird es in der Vertiefungsrichtung Elektrotechnik weiter thematisiert und fortgeschrittenere Techniken zur Anbindung an aktuelle Cloud-Systeme werden integriert.
Hilfreiches Vorwissen
Grundlagen der Programmierung (→ Einführung in Processing)
Grundlagen der Mikrocontrollerprogrammierung (→ Anwendungen mit dem Arduino)
Grundlagen der Elektrotechnik (→ Einführung in die Elektronik)
Erreichbare Kompetenzen
Einbindung analoger und digitaler Sensoren
Integration eines netzwerkfähigen Devices in eine Wifi Umgebung
Herstellung einer Client-Serverkommunikation mit dem MQTT Protokoll
Schülerergebnisse
Leuchtreklamen werden gefertigt
Nachdem die ersten Schüler*innen die Entwürfe und Simulationen der Leuchtreklamen fertiggestellt haben, konnten sie die Fertigung in der hauseigenen Werkstatt beginnen.
X. Besser (ran)tasten
In der Regel sind zur Steuerung des Mikrocontrollers von außen Taster besser geeignet als Schalter.
Daher soll das Blinkprogramm nun derart abgeändert werden, dass der Programmzustand mit Hilfe eines Tasters beeinflusst werden kann.
Besondere Herausforderung ist, dass der Taster kurzzeitig ein Signal am Eingang des Arduino anlegt. Um die Funktionsweise eines Schalters nachzuempfinden, muss eine zusätzliche Variable eingeführt werden. In ihr speichert man sich den alten Schaltzustand, um eine Flankenerkennung zu realisieren (Wechsel von LOW -> HIGH):
int letzterTasterZustand=LOW;
int tasterPinNr = 10;
int ledPinNr = 13;
int ledZustand = LOW;
void setup() {
pinMode(tasterPinNr, INPUT);
pinMode(ledPinNr, OUTPUT);
}
void loop() {
int aktuellerTasterzustand = digitalRead(tasterPinNr);
if(aktuellerTasterzustand==HIGH &&
letzterTasterZustand==LOW) {
letzterTasterZustand = aktuellerTasterzustand;
if(ledZustand == LOW) {
ledZustand = HIGH;
} else {
ledZustand = LOW;
}
}
digitalWrite(ledPinNr, ledZustand);
}
Diese einfache Lösung verhindert noch nicht die mehrfache Erkennung von Flanken aufgrund von typischen Tasterprellen.
9. Digitale Sensoren
Der Helligkeitssensor der in der Lektion zur Helligkeitserfassung eingesetzt wurde ist ein einfacher analoger Sensor.
Mittlerweile gibt es eine Vielzahl intelligenter, digitaler Sensoren. Zwar sind die Kosten dieser Sensoren i. d. R. höher, allerdings sind sie oft bei höherer Genauigkeit einfacher einzubinden.
[in work]
8. LEDs dimmen
7. Helligkeit messen
6. Schalter nutzen
An den GPIOs des Arduino lassen sich nicht nur Signale ausgeben, um beispielsweise LEDs einzuschalten. Es lassen sich auch Eingaben verarbeiten.
Dazu muss der GPIO in der Programmierung als Eingang festgelegt werden:
int eingangsPin = 10;
void setup() {
[...]
pinMode(eingangsPin, INPUT);
[...]
}
Die Hardwareverschaltung wird im folgenden Bild angezeigt:

Der Taster muss mit einem sogenannten pull-down Widerstand angeschlossen werden, um auch im nicht betätigten Zustand des Schalters ein definiertes Potenzial am Pin des Mikrocontrollers zu haben. (Bei Verwendung des pin-Modes INPUT_PULLUP kann auch der in den Arduino integrierte pull-down Widerstand aktiviert werden, dann kann auf den Einsatz des externen pull-down Widerstands verzichtet werden.)
Auftrag
1) Ergänzen Sie einen Schalter und geben Sie den Schaltzustand über den Serialmonitor aus.
2) Passen Sie Ihr Blinkprogramm an, so dass der Blinker nur bei eingeschaltetem Schalter aktiv ist.
5. Variablen nutzen
Statt feste Werte in Programmen zu verwenden, ist es möglich Variablen einzusetzen. Variablen können als Platzhalter verstanden werden. Zum einen helfen sie, Programme übersichtlicher zu machen. Zum anderen sind viele Funktionen erst mit ihnen möglich.
Variablen müssen im Programm vor der Verwendung bekannt gemacht werden. Diesen Vorgang nennt man Deklaration.
Eine Variablendeklaration hat in folgender Form zu erfolgen:
Typ Name [ = Wert ]
Der Typ beschreibt die Art der Daten, die in der Variable gespeichert werden kann. Vorerst ist es ausreichend den Datentyp int zu kennen. Er dient dazu, Ganzzahlen zu speichern.
Der Name ist (fast) frei wählbar. Die Groß-/Kleinschreibung ist bedeutend! Der Wert ist optional. Die Variable kann zu Beginn einen definierten Wert erhalten. In Syntaxbeschreibungen wird dies häufig durch eckige Klammern kenntlich gemacht. Die erste Zuweisung eines Werts zu einer Variablen bezeichnet man auch Initialisierung.
Auftrag
1) Schreiben Sie das Blink-Programm mit Hilfe von Variablen um:
int ledPinNr = 13;
void setup() {
pinMode(ledPinNr, OUTPUT);
}
void loop() {
digitalWrite(ledPinNr, HIGH);
delay(1000);
digitalWrite(ledPinNr, LOW);
delay(1000);
}
2) Untersuchen Sie die Funktionsweise folgender Programme und begründen Sie warum die Variante B nicht wie gewünscht funktioniert.
Variante A:
int ledPinNr;
void setup() {
ledPinNr = 13;
pinMode(ledPinNr, OUTPUT);
}
void loop() {
digitalWrite(ledPinNr, HIGH);
delay(1000);
digitalWrite(ledPinNr, LOW);
delay(1000);
}
Variante B:
int ledPinNr;
void setup() {
pinMode(ledPinNr, OUTPUT);
}
void loop() {
digitalWrite(ledPinNr, HIGH);
delay(1000);
digitalWrite(ledPinNr, LOW);
delay(1000);
}
3) Programmoptimierung
Im unten stehenden Programm wurde eine Variable eingeführt, um die Blinkverzögerung zu steuern. Untersuchen Sie das Programm auch mit den Serialmonitor und erläutern Sie die Bedeutung und Sinnhaftigkeit der Zuweisungen 1 – 3.
int ledPinNr = 13;
int verzoegerung = 1000; // Zuweisung 1
void setup() {
Serial.begin(9600);
pinMode(ledPinNr, OUTPUT);
verzoegerung = 10; // Zuweisung 2
}
void loop() {
verzoegerung = verzoegerung+1000; // Zuweisung 3
Serial.println(verzoegerung);
digitalWrite(ledPinNr, HIGH);
delay(verzoegerung);
digitalWrite(ledPinNr, LOW);
delay(verzoegerung);
}
4. Eine externe LED anschließen
Der Arduino verfügt über zahlreiche Anschlussmöglichkeiten den sogenannten GPIOs (General Purpose Input Outputs).
Diese Anschlusspins können genutzt werden um beispielsweise weitere LEDs anzuschließen.
ampelsimulation
Entwickeln Sie eine Ampel indem Sie 3 LEDs an den das Mikrocontrollerboard anschließen und eine Ampelschaltung programmieren.
Anschluss von LEDs
LEDs können je nach Mikrocontroller an den GPIOs anschließen. Beim Arduino ist es erlaubt, sie an die digitalen Pins DX oder auch an die auch für analoge Zwecke nutzbaren analogen Pins AX anschließen.
Um die LEDs auf die durch den Mikrocontroller-Pin bereit gestellte Spannung anzupassen und den maximal zulässigen Strom einzuhalten, müssen die LEDs mit einem Vorwiderstand versehen werden.
Eine Beschreibung des genauen Anschlusses folgt.
