Arduino Tutorial: Alternative Ampel
Dieser Post beinhaltet ein Tutorial für eine sehr einfache Alternative Ampel mit Arduino. Alternativ deshalb, weil sie nicht einfach nur die Farben rot, gelb und grün nacheinander anzeigt. Stattdessen werden „echte“ Ampelphasen durchlaufen: nach rot erst rot-gelb, dann grün, dann gelb, dann wieder rot. Allerdings schneller als im Straßenverkehr. 😉
Per Default ist diese Arduino-Ampel rot. Wenn der Knopf gedrückt wurde, dauert es drei Sekunden, bis die rot-gelbe Ampelphase beginnt. Eine Sekunde später endet diese, stattdessen startet die grüne Ampelphase. Auf vier Sekunden grün folgen zwei Sekunden gelb. Schließlich wird die Ampel wieder rot. Sobald der Knopf gedrückt wird, durchläuft die Ampel die Phasen erneut.
Arduino-Ampel: Aufbau im Detail

Alternative Ampel – dargestellt mit Fritzing
Benötigt werden:
- 3 LEDs: Je eine rote, gelbe und grüne. Ampel eben. 😉
- 1 Pushbutton
- 3 Widerstände, je 220 Ω
- 1 Widerstand 10 kΩ
- Arduino Uno, Breadboard und Kabel
GND wird mit der blauen Lochreihe verbunden.
Die drei LEDs werden als Ampel eingesteckt. Jede bekommt einen 220Ω-Widerstand, der die Kathode (Minus, GND, kurzes Beinchen) mit der blauen Lochreihe verbindet.
Von oben nach unten werden nun die Anoden (Plus, langes Beinchen) jeweils mit einem PIN verbunden: Anode rot mit Pin 12, Anode gelb mit Pin 11, Anode grün mit Pin 10.
Der Pushbutton bekommt an einer Seite eine Verbindung zum 5V-Pin vom Board. Die andere Seite wird mit Pin 9 verbunden, außerdem mittels 10 kΩ-Widerstand mit der blauen Lochreihe.
Der Code zur Ampel
Ich habe möglichst viel kommentiert. Um ehrlich zu sein: So viele Kommentare in so wenig Code hab ich, glaube ich, seit meinem Informatik-LK nicht mehr gemacht. Aber als Tutorial soll es schließlich auch für Anfänger geeignet und komplett nachvollziehbar sein… 😉
// Alternative Arduino-Ampel // Aufbau unter https://fraunerd.de/tutorial-alternative-arduino-ampel const int Pushbutton = 9; //Pushbutton an Pin 9 const int redLED = 12; //Pin für rote LED ist 12 const int yellowLED = 11; //Pin für gelbe LED ist 11 const int greenLED = 10; //Pin für grüne LED ist 10 void setup() { pinMode(Pushbutton,INPUT); //Pushbutton-Pin als Input initialisiert pinMode(redLED,OUTPUT); //redLED-Pin als Output initialisiert pinMode(yellowLED,OUTPUT); //yellowLED-Pin als Output initialisiert pinMode(greenLED,OUTPUT); //greenLED-Pin als Output initialisiert //Ausgangsstatus: Ampel ist auf rot digitalWrite(redLED,HIGH); } void loop() { //Auslesen des Pushbutton-Pins if (digitalRead(Pushbutton) == HIGH) { //3 Sekunden = 3000 ms warten, gelbe LED einschalten delay(3000); digitalWrite(yellowLED,HIGH); //1 Sekunde warten, gelbe und rote LED ausschalten delay(1000); digitalWrite(redLED,LOW); digitalWrite(yellowLED,LOW); //grüne LED einschalten, 4 Sekunden warten, ausschalten digitalWrite(greenLED,HIGH); delay(4000); digitalWrite(greenLED,LOW); //gelbe LED einschalten, 2 Sekunden warten, ausschalten digitalWrite(yellowLED,HIGH); delay(2000); //gelbe LED ausschalten, rote LED einschalten digitalWrite(yellowLED,LOW); digitalWrite(redLED,HIGH); } }