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);
}