Zum Inhalt springen

Code

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()