Hallo liebe Raspi-Gemeinde!
Ich habe ein Problem an meinem Projekt mit der Python-Programmierung.
Folgendes Setup:
Mein Raspi steuert über die GPIO Pins einen Gleichstrommotor an. Dieser wird über eine Zeitkomponente mit der time-Funktion "time.sleep()" angesteuert. Der Motor treibt einen Schlitten auf einer Schiene an und soll abschalten, wenn dieser das Ende der Schiene erreicht hat.
Kurz: Wenn Taster-Input, dann Prozedur beenden.
Mein Programmcode sieht folgendermaßen aus:
for i in range(anzahl_int):
if GPIO.input(input_switch_1) or GPIO.input(input_switch_2): # Wenn Taster 1 oder 2 geschlossen
GPIO.output(output_motor_1, False)
GPIO.output(output_motor_2, False)
GPIO.output(output_DSLR_1, False)
GPIO.output(output_DSLR_2, False)
sys.exit()
else:
# Prozedur Zeitraffer von 1 --> 2
GPIO.output(output_DSLR_1, True)
time.sleep(0.5)
GPIO.output(output_DSLR_2, True)
time.sleep(0.5)
GPIO.output(output_DSLR_2, False)
GPIO.output(output_DSLR_1, False)
print 'Bild Nr.: ' + str(i+1)
time.sleep(1)
GPIO.output(output_motor_1, True)
time.sleep(motor_time)
GPIO.output(output_motor_1, False)
time.sleep(zeit_int)
Alles anzeigen
"output_DSLR_1" und "output_DSLR_2" sind nur Impulsgeber für das Auslösen von Bilder an einer Kamera.
Die "motor_time" in "time.sleep(motor_time)" ist eine integer Zahl und stellt die Sekunden der Fahrt dar, wo der Motor den Schlitten bewegt. Dieser wird im Code weiter vorne automatisch berechnet. Als Beispiel kann man hier die "motor_time" mit = 20 Sekunden gleich setzen.
"zeit_int" ist eine durch Benutzereingabe gegebene Zeitkomponente. Hier als Beispiel = 10 Sekunden.
Ich hab schon etliches mit while-Schleifen etc. probiert, jedoch stoppt mein Schlitten nie währrend der Fahrt, wenn ich die Taster manuell betätige. Ich vermute, dass der Pi den Status währrend der time.sleep-Funktion nicht abfragen kann.
Kann mir jemand helfen, wie ich den Status der beiden Taster während der Prozedur abfragen kann und bei einem positiven Input den Motor zum stoppen bringen kann!?
Auf Hilfe hofft
LTSmash