====== 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 ===== {{:faecher:informatik:arduino:ampel-neu.png?600|}} ===== 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 [[faecher:informatik:arduino:led_ueber_taster|LED über Taster]] aufgebaut war. ==== Links ==== [[faecher:informatik:arduino:ampel_ueber_taster|{{ :faecher:informatik:arduino:links.png?100|}}]] [[faecher:informatik:arduino:led_ueber_taster|{{:faecher:informatik:arduino:rechts.png?100|}}]]