Taster-Implementierung
Verfasst: Montag 30. April 2018, 15:47
Hallo, ich habe letztens mein Problem schon im Raspberry Teil gepostet, aber inzwischen neue Kenntnisse erlangt. Zu meinem Problem:
Ich habe in einer endlos while Schlaufe eine Ampel programmiert, welche von grün auf rot schaltet und wieder zurück. Weiterhin möchte ich jetzt einen Taster dazu addieren, welcher, sobald er zu irgendeiner Zeit gedrückt wird, eine zusätzliche blaue LED zum blinken bringt während die Ampel auf rot gestellt ist. Um dauernd zu überpfrüfen ob der Taster gedrückt wurde, wollte ich dies in einem zweiten Thread implementieren. Da ich aber ein Python- bzw Programmieranfänger bin, ist mir wohl ein Fehler unterlaufen. Nun bräuchte ich Hilfe um den Code auszubessern.
Vielen Dank im Voraus!
Ich habe in einer endlos while Schlaufe eine Ampel programmiert, welche von grün auf rot schaltet und wieder zurück. Weiterhin möchte ich jetzt einen Taster dazu addieren, welcher, sobald er zu irgendeiner Zeit gedrückt wird, eine zusätzliche blaue LED zum blinken bringt während die Ampel auf rot gestellt ist. Um dauernd zu überpfrüfen ob der Taster gedrückt wurde, wollte ich dies in einem zweiten Thread implementieren. Da ich aber ein Python- bzw Programmieranfänger bin, ist mir wohl ein Fehler unterlaufen. Nun bräuchte ich Hilfe um den Code auszubessern.
Vielen Dank im Voraus!
Code: Alles auswählen
import RPi.GPIO as GPIO
import time
import _thread
GPIO.setmode(GPIO.BCM)
rot = 0; gelb = 1; gruen = 2; blau = 3; taster = 4
Ampel=[4,18,23,24,25]
GPIO.setup(Ampel[rot], GPIO.OUT, initial = False)
GPIO.setup(Ampel[gelb], GPIO.OUT, initial = False)
GPIO.setup(Ampel[gruen], GPIO.OUT, initial = True)
GPIO.setup(Ampel[blau], GPIO.OUT, initial = False)
GPIO.setup(25, GPIO.IN)
print("Taster drücken für Fussgängerblinklicht, Ctrl+C beendet das Programm")
fussg = False
def taste():
GPIO.setmode(GPIO.BCM)
GPIO.setup(25, GPIO.IN)
while True:
if GPIO.input(25) == 1:
fussg = True
try:
while True:
if fussg == True:
GPIO.output(Ampel[gruen], False)
GPIO.output(Ampel[gelb], True)
time.sleep(1)
GPIO.output(Ampel[gelb], False)
GPIO.output(Ampel[rot], True)
time.sleep(0.6)
for i in range(10):
GPIO.output(Ampel[blau], True); time.sleep(0.05)
GPIO.output(Ampel[blau], False); time.sleep(0.05)
time.sleep(0.6)
GPIO.output(Ampel[rot], False)
GPIO.output(Ampel[gelb], False)
GPIO.output(Ampel[gruen], True)
time.sleep(3)
fussg = False
else:
time.sleep(3)
GPIO.output(Ampel[gruen], False)
GPIO.output(Ampel[gelb], True)
time.sleep(1)
GPIO.output(Ampel[gelb], False)
GPIO.output(Ampel[rot], True)
time.sleep(2)
GPIO.output(Ampel[gelb], True)
time.sleep(0.6)
GPIO.output(Ampel[rot], False)
GPIO.output(Ampel[gelb], False)
GPIO.output(Ampel[gruen], True)
except KeyboardInterrupt:
GPIO.cleanup()
_thread.start_new_thread(taste, ())