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

Lese­zeit: 4 Minu­ten
Navi­ga­ti­on

Benö­tig­te Bau­tei­le:

  • Tas­ter
  • 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)

So sieht es aus:

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 = 5;
int GELB = 6;
int GRUEN = 7;

// Fußgängerampel
int F_ROT = 8;
int F_GRUEN = 9;

// Taster
int TASTER = 13;

// Status des Taster
int TasterLesen;

Im setup-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 wer­den.

void setup()
{
  pinMode(ROT, OUTPUT);
  pinMode(GELB, OUTPUT);
  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-Abfrage benutzt.

Sie hat die Form:

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

Wei­te­re Infor­ma­tio­nen

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

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 abge­fragt:

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

  // Zustand des Tasters lesen 
  TasterLesen = digitalRead(TASTER);
 
  // 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
    // anschließend zurück zum Start von loop
    digitalWrite(GELB, HIGH); 
    delay(1000); 
    digitalWrite(ROT, LOW); 
    digitalWrite(GELB, LOW);
  }
}


Ver­wand­te Auf­ga­ben:


Letzte Aktualisierung: 23. Aug 2020 @ 12:36