Einen Arduino programmieren.... Ampel

Eine mögliche Lösung:

Aufgabe

Schreibe ein Programm für eine Ampelsteuerung

  • Das Programm Ampel steuert 3 LEDs.
  • Zeitenfolge: grün 5 sek - gelb 2 sec - rot 7 sec - rot/gelb 2 sec
  • Der Ablauf soll sich immer wiederholen.

    Hinweise

    #define:

    // LED_rot ist an Pin 3 angeschlossen
    // kein '=' kein ';'
    #define LED_rot 3  
    

    unsigned:

    Kennzeichnet eine Variable ohne Vorzeichen
    

    Variable bool:

    bool ist 0 oder 1
    = LOW oder HIGH
    = false oder true
    

    Variable long:

    long bedeutet ganze Zahlen
    von -2147483648 bis 2147483647.
    
  • Lösungsansatz:

    Aufgabe

    Ändere das Programm für die Ampel

  • Für eine Baustellenampel werden 2 Ampeln benötigt
  • Verwende die gleichen Zeiten wie aus Aufgabe 1
  • Mache zuerst ein Ablaufdiagramm

    Hinweise

    LED:

    Das längere Beinchen wird an Plus angeschlossen.
    Verwende einen Vorwiderstand von ca. 200 Ohm.
    
  • Lösungsansatz:

    Aufgabe

    Berechne die Steuerzeiten für die Ampel

    gegeben sind:

  • gruen_zeit = 5
  • rot_zeit = 9
  • gelb_zeit = 2 (ist immer 2)

  • Verwende für das Schalten der LEDs ein Unterprogramm

    Zusatz:

  • steuere auch die zweite Ampel

    Hinweise

    Länge eines Takts

    TAKT_ende = gruen_zeit + rot_zeit + gelb_zeit;
    

    Start und Ende-Zeiten

    Berechne die Zeiten:
    gruen_start = 0
    gruen_ende = gruen_start + gruen_zeit
    
    gelb_1_start =
    gelb_1_ende =
    
    rot_start =
    rot_ende =
    
    gelb_2_start =
    gelb_2_ende =
    
    

    Lösung

    Alle Steuerzeiten können aus Grünphase (gruen_zeit) und Rotphase (rot_zeit) berechnet werden. Lösung 1 für eine Ampel. Lösung 2 für zwei Ampeln.

  • Eine mögliche Lösung:

    Aufgabe

    Eine ausgeschaltete Ampel blinkt gelb

    gegeben sind:

  • gelb an eine Sekunde
  • gelb aus eine Sekunde

    Zusatz:

  • Füge 'Ampel blinkt' in Lösung 2 der verherigen Aufgabe ein.
  • Der Modus 'Ampel blinkt' wird durch einen Schalter aktiviert.

    Damit die Ampelschaltung funktioniert, muss die Rotphase (rot_zeit) immer größer als Grünphase (gruen_zeit) sein, wenn nicht, dann würden beide Ampeln gleichzeitig 'grün' zeigen.

  • Püfe ob (rot_zeit) kleiner oder gleich (gruen_zeit) ist.
  • Wenn ja, soll die Ampel in den Fehler-Modus gehen.
  • Fehler-Modus ist der Blick-Modus.
  • Die Funktion des Schalters wird blockiert.

    Hinweise

    Zeitplan

    Führe den Zeitplan in einem Unterprogramm aus

    Schaltzeiten

    Führe die Berechnung der Schaltzeiten in einem Unterprogramm aus

    Lösung

    für zwei Ampeln, Überprüfung der Schaltzeiten, einschaltbares Gelb-Blinken und Fehler-Modus ergibt sich folgende mögliche Lösung.