Metainformationen zur Seite
Dies ist eine alte Version des Dokuments!
Mit dem Arduino eine Ampel bauen
Erklärung
Man baut auf dem Breadboard des Arduinos eine Ampelschaltung, sprich Rot-Gelb-Grün, diese wollen wir gezielt mit einem kleinen Programm ansteuern, dazu benutzen wir den Arduino als einen Stromverteiler und sagen diesem wann er wieviel Strom an welche LED leiten soll.
Materialien
- 1x Arduino (in diesem Fall Arduino NANO)
- 1x Breadboard
- 3x LEDs (Rot, Gelb, Grün)
- 4x Kabel
- 3x Widerstände
Aufbau
Programmierung
In diesem Programm wird eine Ampelschaltung immer wiederholt. erst ist die Ampel 10 Sekunden rot, dann eine Sekunde rot-gelb, dann 10 Sekunden grün und zuletzt 3 Sekunden rot. Danach wird die Folge erneut ausgeführt.
int ledRot = 6; int ledGelb = 4; int ledGruen = 2; void setup() { pinMode(ledRot, OUTPUT); //Pins der LEDs als Ausgang definieren pinMode(ledGelb, OUTPUT); pinMode(ledGruen, OUTPUT); } void loop() { digitalWrite(ledRot, HIGH); //Ampel Rot digitalWrite(ledGelb, LOW); digitalWrite(ledGruen, LOW); delay(10000); //10 Sek. warten digitalWrite(ledRot, HIGH); //Ampel Rot-Gelb digitalWrite(ledGelb, HIGH); digitalWrite(ledGruen, LOW); delay(1000); //1 Sek. warten digitalWrite(ledRot, LOW); //Ampel Grün digitalWrite(ledGelb, LOW); digitalWrite(ledGruen,HIGH); delay(10000); //10 Sek. warten digitalWrite(ledRot, LOW); //Ampel Gelb digitalWrite(ledGelb, HIGH); digitalWrite(ledGruen, LOW); delay(3000); //3 Sek. warten }
Programmierung mit eigener Funktion
Um den Programmcode zu verkürzen, kann man eigene Funktionen erstellen, die dann mehrere Befehle ausführen. Hier schreiben wir eine Funktion, die alle drei LED gleichzeitig ansteuert.
int ledRot = 6; int ledGelb = 4; int ledGruen = 2; void setup() { pinMode(ledRed, OUTPUT); pinMode(ledGelb, OUTPUT); pinMode(ledGruen, OUTPUT); } void loop() { Phase(HIGH, LOW, LOW); delay(10000); Phase(HIGH, HIGH, LOW); delay(1000); Phase(LOW, LOW, HIGH); delay(10000); Phase(LOW, HIGH, LOW); delay(3000); } void Phase(int Rot, int Gelb, int Grün) { digitalWrite(ledRot, Rot); digitalWrite(ledGelb, Gelb); digitalWrite(ledGruen, Gruen); }