Ampel mit Fußgängerampel

Lese­zeit: 4 Minu­ten
Lösung
Seite als PDF
Navi­ga­ti­on

Eine Ampel soll zusam­men mit einer Fuß­gän­ger­am­pel in einem fest­ge­leg­ten Takt geschal­tet werden.

So sieht es aus:

Benö­tig­te Bauteile:

  • 2 rote LEDs 
  • 2 grü­ne LEDs
  • 1 gel­be LED
  • 5 Wider­stän­de > 100 Ω
  • Lei­tungs­dräh­te

Baue die Schal­tung auf.

(Fah­re mit der Maus über das Bild, um die Bezeich­nun­gen der Bau­tei­le zu sehen)

Die Schal­tung der Fahrbahnampel:

1 Sekun­de Sicher­heits­zo­ne (bei­de Ampeln zei­gen für 1 Sekun­de rot)
5 Sekun­den rot
1 Sekun­de Sicher­heits­zo­ne (bei­de Ampeln zei­gen für 1 Sekun­de rot)
1 Sekun­de rot/gelb
5 Sekun­den grün
1 Sekun­de gelb

Die Schal­tung der Fußgängerampel:

1 Sekun­de Sicher­heits­zo­ne (bei­de Ampeln zei­gen für 1 Sekun­de rot)
5 Sekun­den grün
1 Sekun­de Sicher­heits­zo­ne (bei­de Ampeln zei­gen für 1 Sekun­de rot)
7 Sekun­den rot

Der zeit­li­che Ablauf:

Programmablauf

Defi­nie­re zuerst die ➨Varia­blen für die Zuord­nung der Bauteile:

// Fahrbahnampel
int ROT = 3;
int GELB = 4;
int GRUEN = 5;

// Fußgängerampel
int F_ROT = 6;
int F_GRUEN = 7;

Füge dem setup-Teil den pin­Mo­de für die Fuß­gän­ger­am­pel (F_ROT, F_GRUEN) hinzu.

void setup() 
{
  pinMode(ROT, OUTPUT);
  pinMode(GELB, OUTPUT);
  pinMode(GRUEN, OUTPUT);
  pinMode(F_ROT, OUTPUT);
  pinMode(F_GRUEN, OUTPUT);
}

Begin­ne den loop-Teil mit der Sicher­heits­zo­ne (bei­de Ampeln zei­gen für 1 Sekun­de rot).

void loop()
{
  digitalWrite(ROT, HIGH);
  digitalWrite(F_ROT, HIGH);

  // 1 Sekunde Sicherheitszone
  delay(1000);

  // Fußgängerampel wird von rot auf grün geschaltet
  digitalWrite(F_ROT, LOW);  
  digitalWrite(F_GRUEN, HIGH);
  delay(5000);

  // Fußgängerampel wird von grün auf rot geschaltet
  // F_GRUEN -> aus, F_ROT -> an
  digitalWrite(F_GRUEN, LOW);
  digitalWrite(F_ROT, HIGH);

  // 1 Sekunde Sicherheitszone, beide Ampeln bleiben rot
  delay(1000);

  // Fahrbahnampel auf rot-gelb und dann auf grün schalten
  // GELB -> an, 1 Sekunde warten, GELB und ROT -> aus, 
  // GRUEN -> an
  digitalWrite(GELB, HIGH);
  delay(1000); 
  digitalWrite(ROT, LOW);
  digitalWrite(GELB, LOW);
  digitalWrite(GRUEN, HIGH);

  // GRUEN -> 5 Sekunden, GRUEN -> aus, GELB 1 Sekunde an,
  // GELB aus
  delay(5000);
  digitalWrite(GRUEN, LOW);
  digitalWrite(GELB, HIGH);
  delay(1000);
  digitalWrite(GELB, LOW);
}

Startseite
Aufgaben A-Z
Suchen
Downloads
Fehlermeldungen
Seite als PDF

Ver­wand­te Aufgaben:


Letzte Aktualisierung: 14. Jul 2021 @ 8:39