Link

Lektion 12 - Verkehrsampel

Hardware

In dieser Lektion wollen wir eine Verkehrsampel simulieren. Dafür benötigst Du drei LEDs (1x rot, 1x gelb, 1x grün) und drei Widerstände mit 220 Ohm.

Die Verkehrsampel soll die Farben wechseln und dazwischen jeweils Pausen einhalten. In Deutschland folgt eine Ampel dabei folgenden vier Phasen.

Für diese Lektion wählen wir die Länge der Pausen zwischen den Wechseln der einzelnen Phasen mit 2 Sekunden und 5 Sekunden. Die Phasen 1 und 3 sollen 5 Sekunden dauern. Die Phasen 2 und 4 sollen 2 Sekunden dauern.

Anschlüsse

Die drei LEDs und die Widerstände schließt Du, wie in dem Bild dargestellt, mit Krokodilklemmen an die drei Anschlüsse 1, 2 und 3 an. Zwischen den Kontakt am Micro:Bit und der LED muss jeweils einer der Widerstände zwischengeschaltet werden.

Anleitung

Erstelle mit den Blöcken pausiere aus dem Grundlagen-Block und dem Block schreibe digitalen Wert aus dem Pins-Block die vier Phasen einer Ampelschaltung.

Blocks

So könnte Dein Programm aussehen.

Ergebnis (Simulation)

Javascript-Code

    
basic.forever(function () {
    pins.digitalWritePin(DigitalPin.P0, 1)
    basic.pause(5000)
    pins.digitalWritePin(DigitalPin.P1, 1)
    basic.pause(2000)
    pins.digitalWritePin(DigitalPin.P0, 0)
    pins.digitalWritePin(DigitalPin.P1, 0)
    pins.digitalWritePin(DigitalPin.P2, 1)
    basic.pause(5000)
    pins.digitalWritePin(DigitalPin.P2, 0)
    pins.digitalWritePin(DigitalPin.P1, 1)
    basic.pause(2000)
    pins.digitalWritePin(DigitalPin.P1, 0)
})

Erweiterte Variante

Möchtest Du Deine Verkehrsampel noch besser machen? Dann füge einen Countdown hinzu, der anzeigt wie lange die Grün- und Rot-Phasen jeweils noch dauern.

Anleitung

Erstelle zunächst zwei Funktionen:

  1. Erstelle die Funktion countdown und führe zunächst eine Variable counter ein, die Du auf den Wert 5 setzt. Füge nun eine Schleife mit 5 Schleifendurchläufen hinzu. In jedem Schleifendurchlauf (jeder Iteration) soll zunächst der aktuelle Wert der Variablen counter auf dem LED-Matix-Display des Micro:Bit angezeigt und dann eine Pasue von 1 Sekunde eingehalten werden. Anschließend wird die Variable um den Wert 1 verringert (_dekrementiert).

  2. Erstelle die Funktion stop, in der Du einen schrägen Strich auf dem LED-Matrix-Display anzeigst und dann eine Pause von 2 Sekunden einhälst.

Ersetze nun die Pausen Deines bisherigen Programms durch Aufrufe der beiden Funktionen.

Blocks

So könnte die erweiterte Variante Deines Programms aussehen.

Ergebnis (Simulation)

Javascript-Code

    
let counter = 0
function countdown() {
    counter = 5
    for (let i = 0; i < 5; i++) {
        basic.showNumber(counter)
        basic.pause(1000)
        counter += -1
    }
}
function stop() {
    basic.showLeds(`
        . . . . #
        . . . # .
        . . # . .
        . # . . .
        # . . . .
        `)
    basic.pause(2000)
}
basic.forever(function () {
    pins.digitalWritePin(DigitalPin.P0, 1)
    countdown()
    pins.digitalWritePin(DigitalPin.P1, 1)
    stop()
    pins.digitalWritePin(DigitalPin.P0, 0)
    pins.digitalWritePin(DigitalPin.P1, 0)
    pins.digitalWritePin(DigitalPin.P2, 1)
    countdown()
    pins.digitalWritePin(DigitalPin.P2, 0)
    pins.digitalWritePin(DigitalPin.P1, 1)
    stop()
    pins.digitalWritePin(DigitalPin.P1, 0)
})

Makecode Projekt

Lektion 11 (Verkehrsampel) als Makecode-Projekt

Ampel