Een Arduino-verkeerslicht programmeren
FunduinoLaatst bijgewerkt op
Vom einfachen Ampeltakt bis zur Fußgängerampel mit Taster
Ampel ohne Taster für Fußgänger
Programmcode – Ampel ohne Taster
int ROT = 5; // Rote LED an Pin 5
int GELB = 6; // Gelbe LED an Pin 6
int GRUN = 7; // Grüne LED an Pin 7
void setup() // Wir starten mit dem Setup
{
pinMode(ROT, OUTPUT); // Pin 5 ist ein Ausgang.
pinMode(GELB, OUTPUT); // Pin 6 ist ein Ausgang.
pinMode(GRUN, OUTPUT); // Pin 7 ist ein Ausgang.
}
void loop() // Das Hauptprogramm beginnt
{
digitalWrite(ROT, HIGH); // Schalte die LED an Pin 5 an.
delay(2000); // Warte 2000 Millisekunden.
digitalWrite(GELB, HIGH); // Schalte die LED an Pin 6 an.
delay(1000); // Warte 1000 Millisekunden.
digitalWrite(ROT, LOW); // Schalte die LED an Pin 5 aus.
digitalWrite(GELB, LOW); // Schalte die LED an Pin 6 aus.
digitalWrite(GRUN, HIGH); // Schalte die LED an Pin 7 an.
delay(2000); // Warte 2000 Millisekunden.
digitalWrite(GRUN, LOW); // Schalte die LED an Pin 7 aus.
digitalWrite(GELB, HIGH); // Schalte die LED an Pin 6 an.
delay(1000); // Warte 1000 Millisekunden.
digitalWrite(GELB, LOW); // Schalte die LED an Pin 6 aus.
}
// Hier am Ende springt das Programm an den Start des Loop-Teils.Die Fußgängerampel mit Tasterabfrage
Programmcode – Fußgängerampel mit Tasterabfrage
int Taster = 4;
int tasterstatus = 0;
int ROT = 5;
int GELB = 6;
int GRUN = 7;
void setup() // Wir starten mit dem Setup
{
pinMode(Taster, INPUT); // Pin 4 ist ein Eingang.
pinMode(ROT, OUTPUT); // Pin 5 ist ein Ausgang.
pinMode(GELB, OUTPUT); // Pin 6 ist ein Ausgang.
pinMode(GRUN, OUTPUT); // Pin 7 ist ein Ausgang.
}
void loop() // Das Hauptprogramm beginnt.
{
digitalWrite(GRUN, HIGH); // Schalte die grüne LED an Pin 7 an.
tasterstatus = digitalRead(Taster); // Hier wird Pin 4 ausgelesen (Befehl: digitalRead). Das Ergebnis wird unter der Variable "tasterstatus" mit dem Wert "HIGH" für 5 Volt oder "LOW" für 0 Volt gespeichert.
if (tasterstatus == HIGH) // Verarbeitung: Wenn der Taster gedrückt ist (das Spannungssignal ist hoch), arbeitet der Sketch den folgenden Abschnitt ab.
{ // Programmabschnitt des IF-Befehls öffnen.
delay(2000); // Warte 2000 Millisekunden (2 Sekunden), da es bei einer echten Ampel aus Sicherheitsgründen auch immer eine Weile dauert, bis die Ampel umspringt.
digitalWrite(GRUN, LOW); // Schalte die grüne LED an Pin 7 aus.
digitalWrite(GELB, HIGH); // Schalte die gelbe LED an Pin 6 an.
delay(1000); // Warte 1000 Millisekunden.
digitalWrite(GELB, LOW); // Schalte die gelbe LED an Pin 6 aus.
digitalWrite(ROT, HIGH); // Schalte die rote LED an Pin 5 an.
delay(5000); // Warte 5000 Millisekunden, die Ampel ist für die Autofahrer rot.
digitalWrite(GELB, HIGH); // Schalte zusätzlich die gelbe LED an Pin 6 an.
delay(1000); // Warte 1000 Millisekunden.
digitalWrite(ROT, LOW); // Schalte die rote LED an Pin 5 aus.
digitalWrite(GELB, LOW); // Schalte zusätzlich die gelbe LED an Pin 6 aus.
} // Programmabschnitt des IF-Befehls schließen.
}
// Hier am Ende springt das Programm an den Start des Loop-Teils. Da dort die grüne LED direkt aktiviert wird, muss das nicht zusätzlich am Ende des IF-Abschnitts geschehen.Eine eigene Ampel für die Fußgänger ergänzen
Programmcode – Mit eigener Ampel für Fußgänger
int Taster = 4;
int tasterstatus = 0;
int ROT = 5;
int GELB = 6;
int GRUN = 7;
int RotFuss = 8; // Rotes Ampelsignal für Fußgänger
int GrunFuss = 9; // Grünes Ampelsignal für Fußgänger
void setup() // Wir starten mit dem Setup
{
pinMode(Taster, INPUT); // Pin 4 ist ein Eingang.
pinMode(ROT, OUTPUT); // Pin 5 ist ein Ausgang.
pinMode(GELB, OUTPUT); // Pin 6 ist ein Ausgang.
pinMode(GRUN, OUTPUT); // Pin 7 ist ein Ausgang.
pinMode(RotFuss, OUTPUT); // Pin 8 ist ein Ausgang.
pinMode(GrunFuss, OUTPUT);// Pin 9 ist ein Ausgang.
}
void loop() // Das Hauptprogramm beginnt.
{
digitalWrite(GRUN, HIGH); // Schalte die grüne Ampel an Pin 7 an. Die Autos sehen also das grüne Signal.
digitalWrite(RotFuss, HIGH); // Schalte die rote Fußgängerampel an Pin 8 an. Die Fußgänger sehen also das rote Signal.
tasterstatus = digitalRead(Taster); // Hier wird Pin 4 ausgelesen (Befehl: digitalRead). Das Ergebnis wird unter der Variable "tasterstatus" mit dem Wert "HIGH" für 5 Volt oder "LOW" für 0 Volt gespeichert.
if (tasterstatus == HIGH) // Verarbeitung: Wenn der Taster gedrückt ist (das Spannungssignal ist hoch), arbeitet der Sketch den folgenden Abschnitt ab.
{ // Programmabschnitt des IF-Befehls öffnen.
delay(2000); // Warte 2000 Millisekunden (2 Sekunden), da es bei einer echten Ampel aus Sicherheitsgründen auch immer eine Weile dauert, bis die Ampel umspringt.
digitalWrite(GRUN, LOW); // Schalte die grüne LED an Pin 7 aus.
digitalWrite(GELB, HIGH); // Schalte die gelbe LED an Pin 6 an.
delay(1000); // Warte 1000 Millisekunden.
digitalWrite(GELB, LOW); // Schalte die gelbe LED an Pin 6 aus.
digitalWrite(ROT, HIGH); // Schalte die rote LED an Pin 5 an.
delay(2000); // Warte 2000 Millisekunden (2 Sekunden). Die Autofahrer haben jetzt "rot".
digitalWrite(RotFuss, LOW); // Schalte die rote Fußgängerampel an Pin 8 aus.
digitalWrite(GrunFuss, HIGH); // Schalte die grüne Fußgängerampel an Pin 9 an. Die Radfahrer und Fußgänger gehen los.
delay(5000); // Warte weitere 5000 Millisekunden.
digitalWrite(RotFuss, HIGH); // Schalte die rote Fußgängerampel an Pin 8 wieder ein.
digitalWrite(GrunFuss, LOW); // Schalte die grüne Fußgängerampel an Pin 9 aus. Die Radfahrer und Fußgänger müssen stehen bleiben.
delay(2000); // Warte 2000 Millisekunden (2 Sekunden). Die Autofahrer haben immer noch "rot" und die Fußgänger müssen die Straße räumen.
digitalWrite(GELB, HIGH); // Schalte zusätzlich für die Autofahrer die gelbe LED an Pin 6 an.
delay(1000); // Warte 1000 Millisekunden.
digitalWrite(ROT, LOW); // Schalte die rote LED an Pin 5 aus.
digitalWrite(GELB, LOW); // Schalte zusätzlich die gelbe LED an Pin 6 aus.
} // Programmabschnitt des IF-Befehls schließen.
}
// Hier am Ende springt das Programm an den Start des Loop-Teils. Da dort die grüne LED direkt aktiviert wird, muss das nicht zusätzlich am Ende des IF-Abschnitts geschehen.Klaar!
Handleiding beoordelen