Hallo,
in Anlehnung an meinen gestrigen Thread habe ich mich heute mal daran gemacht meine Scripte zum Auf- und Zusperren einer Tür umzuschreiben.
Zuerst habe ich alles so weit mir möglich in Funktionen gepackt. Hat problemlos geklappt.
Danach bin ich umgezogen von Rpi.GPIO nach gpiozero. Zunächst nur mit einem Script, weil ich bei einem Punkt dann doch ein wenig Unterstützung brauche.
Ich möchte zunächst die Funktion des Scripts erklären:
zu.py: wird das Script gestartet dreht sich ein Motor so lange bis ein Stopkontakt berührt wird und hält dann an.
So jedenfalls in der Theorie. Der Motor dreht auf Anhieb. sogar gleich in die richtige Richtung. Leider klappt das mit dem Stopkontakt unter gpiozero aber nicht und ich weiß nicht warum. Ich habe den Stopkontakt als Button genommen, das müsste ja eigentlich richtig sein, oder gibt es da etwas anderes dafür?
Das alte Script funktioniert, es liegt also keine hardwareseitige Fehlfunktion vor.
Hier die beiden Scripte zum Vergleichen, das ältere, funktionierende zuerst:
#!/usr/bin/python3
# Schloss abschliessen
from RPi import GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(3,GPIO.OUT)
GPIO.setup(2,GPIO.OUT)
GPIO.setup(17,GPIO.IN) #Pin für Stopkontakt "zu"
def sperrriegel_zu():
while True:
if GPIO.input(17):
GPIO.output(3,True)
GPIO.output(2,False)
else:
GPIO.output(3,False)
GPIO.output(2,False)
print("abgesperrt")
break
try:
sperrriegel_zu()
finally:
GPIO.cleanup()
exit()
Display More
und hier das neue mit gpiozero:
#!/usr/bin/env python3
from gpiozero import Button
from gpiozero import Motor
stopper_zu = Button(17)
motor = Motor(3, 2)
def sperrriegel_zu():
while True:
if stopper_zu:
motor.forward()
else:
motor.stop()
print("abgesperrt")
break
try:
sperrriegel_zu()
finally:
exit()
Display More
Weiter habe ich dann geplant mal auszuprobieren die Scripte zu.py und auf.py in eines zu zusammenzufassen, wie hyle mir gestern vorgeschlagen hat. Aber ich ahne, dass ich auch da Hilfe benötigen werde. Schaun wir mal. Eins nach dem anderen.