import RPi.GPIO as GPIO
import time
GPIO-Pin-Zuweisungen für die Ampeln
Ampel 1 und 2 (gleicher Kanal)
AMPEL_1_ROT = 17
AMPEL_1_GELB = 27
AMPEL_1_GRUEN = 22
Ampel 3 und 4 (gleicher Kanal)
AMPEL_3_ROT = 23
AMPEL_3_GELB = 24
AMPEL_3_GRUEN = 25
Dauer der einzelnen Phasen in Sekunden
PHASE_ROT = 10
PHASE_GRUEN = 10
PHASE_GELB = 3
def setup():
GPIO.setmode(GPIO.BCM)
GPIO.setup(AMPEL_1_ROT, GPIO.OUT)
GPIO.setup(AMPEL_1_GELB, GPIO.OUT)
GPIO.setup(AMPEL_1_GRUEN, GPIO.OUT)
GPIO.setup(AMPEL_3_ROT, GPIO.OUT)
GPIO.setup(AMPEL_3_GELB, GPIO.OUT)
GPIO.setup(AMPEL_3_GRUEN, GPIO.OUT)
def ampel_ansteuern(rot, gelb, gruen, status_rot, status_gelb, status_gruen):
GPIO.output(rot, status_rot)
GPIO.output(gelb, status_gelb)
GPIO.output(gruen, status_gruen)
def kreuzung_steuerung():
while True:
# Phase 1: Ampel 1+2 grün, Ampel 3+4 rot
ampel_ansteuern(AMPEL_1_ROT, AMPEL_1_GELB, AMPEL_1_GRUEN, GPIO.LOW, GPIO.LOW, GPIO.HIGH)
ampel_ansteuern(AMPEL_3_ROT, AMPEL_3_GELB, AMPEL_3_GRUEN, GPIO.HIGH, GPIO.LOW, GPIO.LOW)
time.sleep(PHASE_GRUEN)
# Phase 2: Ampel 1+2 gelb ampel_ansteuern(AMPEL_1_ROT, AMPEL_1_GELB, AMPEL_1_GRUEN, GPIO.LOW, GPIO.HIGH, GPIO.LOW) time.sleep(PHASE_GELB) # Phase 3: Ampel 1+2 rot, Ampel 3+4 grün ampel_ansteuern(AMPEL_1_ROT, AMPEL_1_GELB, AMPEL_1_GRUEN, GPIO.HIGH, GPIO.LOW, GPIO.LOW) ampel_ansteuern(AMPEL_3_ROT, AMPEL_3_GELB, AMPEL_3_GRUEN, GPIO.LOW, GPIO.LOW, GPIO.HIGH) time.sleep(PHASE_GRUEN) # Phase 4: Ampel 3+4 gelb ampel_ansteuern(AMPEL_3_ROT, AMPEL_3_GELB, AMPEL_3_GRUEN, GPIO.LOW, GPIO.HIGH, GPIO.LOW) time.sleep(PHASE_GELB)
def cleanup():
GPIO.cleanup()
if name == „main„:
try:
setup()
kreuzung_steuerung()
except KeyboardInterrupt:
cleanup()