Ampelprojekt – Phase 1: Testaufbau

Testaufbau am Steckbrett

Um sich dem Ampelsystem anzunähern wird zunächst eine Testschaltung aufgebaut. Dabei werden einzelne LEDs mit Pins des Raspberry verbunden und jeweils mit einem Schutzwiderstand von 100 Ohm abgesichert.

Abbildung 3: Schaltplan des Testaufbaus

Programmierung

Zunächst zeigt Programm 01, ob grundlegende Konzepte funktionieren: Läuft der Raspberry Pi? Funktioniert der Anschuss der Pins an das Steckbrett? Sind die Teile alle ganz?

import RPi.GPIO as GPIO
import time

print("prgO1.py")

# KONFIGURATION / SETUP
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
# Eine rote LED wird am physikalischen Pin 16 angeschlossen.
GPIO.setup(16, GPIO.OUT, initial=GPIO.LOW)

# LICHT AN / AUS
GPIO.output(16, GPIO.HIGH)    # "Rot an!"
time.sleep(0.5)               # 0,5 Sek. warten
GPIO.output(16, GPIO.LOW)     # "Rot aus!"

Am schnellsten erstellt man das Programm auf dem Raspberry Pi selbst mit der Python IDLE oder einem vorinstallierten Editor.

Programm 02 führt eine einfache For-Schleife ein, und zeigt damit, dass der elektronische Output fortlaufend wiederholbar ist. Das ist insofern wichtig, als die spätere Ampel selbstständig laufen soll und nicht nur dann, wenn die Maus auf der OS-Oberfläche des Raspberry Pi das Programm startet.

Video 2: Programm 02
import RPi.GPIO as GPIO
import time

print("prgO2.py")

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(16, GPIO.OUT, initial=GPIO.LOW)

for n in range(5):
    print("Durchgang: "+str(n+1))

    GPIO.output(16, GPIO.HIGH)
    print("rot an")
    time.sleep(1)
    GPIO.output(16, GPIO.LOW)
    print("rot aus")
    time.sleep(1)

Programm 03 zeigt, wie LEDs im Wechsel an- und ausgeschaltet werden können. Die Ampel folgt dann später dem typischen Phasenmodell, erfordert also über den reinen Wechsel hinaus noch die Logik der Signalabfolge.

Video 03: Programm 03
import RPi.GPIO as GPIO
import time

print("prgO3.py")
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT, initial=GPIO.LOW) #gelb
GPIO.setup(13, GPIO.OUT, initial=GPIO.LOW) #rot

for n in range(5):
    print("Durchgang: "+str(n+1))
    GPIO.output(11, GPIO.HIGH)
    GPIO.output(13, GPIO.LOW)
    print('gelb')
    time.sleep(1)
    GPIO.output(11, GPIO.LOW)
    GPIO.output(13, GPIO.HIGH)
    print('rot')
    time.sleep(1)
    
# alles aus
GPIO.output(11, GPIO.LOW)
GPIO.output(13, GPIO.LOW)

Phasen einer Ampel

Ampeln für den Straßenverkehr mit drei Signalleuchten schalten in Phasen nach immer derselben Logik.

Abbildung 4: Traffic lights 4 states; public domain, eingebettet von Wikimedia Commons.

Programm 04 setzt die Phasenschaltung der Verkehrsampel in einem imperativen Python-Skript um.

Video 4: Programm 04
import RPi.GPIO as GPIO, time

print("prgO4.py")
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(8, GPIO.OUT, initial=GPIO.LOW)
GPIO.setup(10, GPIO.OUT, initial=GPIO.LOW)
GPIO.setup(12, GPIO.OUT, initial=GPIO.LOW)
GPIO.output(8, GPIO.HIGH)
GPIO.output(10, GPIO.LOW)
GPIO.output(12, GPIO.LOW)
time.sleep(1)
GPIO.output(10, GPIO.HIGH)
time.sleep(1)
GPIO.output(8, GPIO.LOW)
GPIO.output(10, GPIO.LOW)
GPIO.output(12, GPIO.HIGH)
time.sleep(10)
GPIO.output(12, GPIO.LOW)

Weiter: Modell >>

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.