Mit dem Arduino eine Ampel bauen

Erklärung

Man baut auf dem Breadboard mit dem Arduino 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 Strom an welche LED leiten soll.

Materialien

  • 1x Arduino
  • 1x Breadboard
  • 3x LEDs (Rot, Gelb, Grün)
  • 4x Kabel
  • 3x Widerstände 150 Ω (gelb)

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 = 2;
int ledGelb = 4;
int ledGruen = 6;
 
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 = 2;
int ledGelb = 4;
int ledGruen = 6;
 
void setup() {
  pinMode(ledRot, 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 Gruen) {
  digitalWrite(ledRot, Rot);
  digitalWrite(ledGelb, Gelb);
  digitalWrite(ledGruen, Gruen);
}

Erweiterung

Manche Ampeln wechseln nicht automatisch von Grün zu Rot. Vielmehr muss man das als Fußgänger per Tastendruck hervorrufen. Das nennt man eine Bedarfsampel.
Kannst du dieses Projekt mit einem Taster erweitern, sodass die Ampel nur dann für eine kurze Zeit Rot wird, wenn man den Taster gerückt hat?
Informiere dich noch einmal, wie das Projekt LED über Taster aufgebaut war.