Ampel mit Fuß­gän­ger­am­pel und Taster

Lese­zeit: 4 Minu­ten

Lösung
Seite als PDF

Eine Ampel mit Fuß­gän­ger­am­pel soll mit einem Tas­ter geschal­tet wer­den. Wird der Tas­ter gedrückt, schal­tet die Fahr­bahn­am­pel auf rot und die Fuß­gän­ger­am­pel auf grün.

So sieht es aus:

Benö­tig­te Bauteile:

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

Beach­te die ➨Vor­wi­der­stän­de ver­schie­de­ner LEDs

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

Defi­nie­re zuerst die Varia­blen für die Zuord­nung der LEDs und die Varia­ble für den Sta­tus des Tas­ters (Tas­ter­Le­sen).
Der gele­se­ne Wert (LOW/HIGH) ent­schei­det über die Schal­tung der Ampeln.

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

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

// Taster
int TASTER = 12;

// Status des Taster
int TasterLesen;

Im set­up-Teil muss der pin­Mo­de des Tas­ters hin­zu­fügt und der Vor­wi­der­stand (INPUT_PULLUP) ein­ge­schal­tet werden.

void setup()
{
  // Fahrbahnampel
  pinMode(ROT, OUTPUT);
  pinMode(GELB, OUTPUT);
  pinMode(GRUEN, OUTPUT);

  // Fußgängerampel
  pinMode(F_ROT, OUTPUT);
  pinMode(F_GRUEN, OUTPUT); 
 
  // Taster
  pinMode(TASTER, INPUT_PULLUP);
}

Der zeit­li­che Ablauf:

Das Pro­gramm muss fest­stel­len kön­nen, ob der Tas­ter gedrückt wur­de. Hier­zu wird eine if-Abfra­ge benutzt.

Sie hat die Form:

// wenn die Bedin­gung erfüllt ist ...
if (Bedin­gung == Zustand)
{
    // Befehl aus­füh­ren
}

Wei­te­re Informationen

In die­sem Fall wird der Zustand der Varia­ble Tas­ter­le­sen abge­fragt. Ist der Zustand LOW, wird die Ampel geschaltet.

Zunächst zeigt die Fuß­gän­ger­am­pel rot und die Fahr­bahn­am­pel grün. Ein Druck auf den Tas­ter unter­bricht den Strom. Der Sta­tus des Tas­ters ist dann LOW. 

Das wird mit if abgefragt: 

void loop()
{
  // Ampel grün/Fußgängerampel rot
  digitalWrite(F_ROT, HIGH);
  digitalWrite(GRUEN, HIGH);

  // Zustand des Tasters lesen 
  TasterLesen = digitalRead(TASTER);
  delay(200);
 
  // PULLUP-Widerstand eingeschaltet-> LOW = Taster gedrückt
  if (TasterLesen == LOW)
  {
    // 1 s Pause
    delay(1000);

    // Fahrbahnampel grün aus
    digitalWrite(GRUEN, LOW);

    // Fahrbahnampel gelb an 
    digitalWrite(GELB, HIGH);
    delay(1000);
    digitalWrite(GELB, LOW);

    // Fahrbahnampel rot an
    digitalWrite(ROT, HIGH); 

    // 1 s Sicherheitszeit 
    delay(1000); 

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

    // Fußgängerampel auf rot schalten
    digitalWrite(F_GRUEN, LOW);
    digitalWrite(F_ROT, HIGH);

    // 1 s Pause
    delay(1000);

    // Fahrbahnampel auf gelb und dann auf rot schalten
    digitalWrite(GELB, HIGH);
    delay(1000);
    digitalWrite(ROT, LOW);
    digitalWrite(GELB, LOW);
  }
}

Startseite
Aufgaben A-Z
Suchen
Fehlermeldungen
Seite als PDF

Ver­wand­te Aufgaben:


Letzte Aktualisierung: 2. Jan 2024 @ 12:44