Ich habe gerade meine erste Raspberry Pi und 2-Kanal-Relais abgeholt. Ich versuche zu lernen, wie man in Python programmiert, also dachte ich, dass ein Pi zum Spielen ein guter Ausgangspunkt wäre. Ich habe eine Frage bezüglich des Timings meiner Relais über die GPIO-Pins.Raspberry Pi: Python versuchen/Ausnahme Schleife
Erstens benutze ich Raspbian Pixel und bearbeite meine Skripte über Gedit. Bitte siehe unten für das Skript, das ich bisher habe:
# !/usr/bin/python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
# init list with pin numbers
pinList = [14]
# loop through pins and set mode and state to 'high'
for i in pinList:
GPIO.setup(i, GPIO.OUT)
GPIO.output(i, GPIO.HIGH)
# time to sleep between operations in the main loop
SleepTimeL = 60 #1 minute
# main loop
try:
GPIO.output(14, GPIO.LOW)
print "open"
time.sleep(SleepTimeL);
GPIO.cleanup()
#Reset GPIO settings
GPIO.cleanup()
# end program cleanly
except KeyboardInterrupt:
print "done"
Nun, das funktioniert ziemlich gut, es öffnet sich das Relais 14 angebracht kein Problem zu fixieren. Es durchläuft wie gewünscht 60 Sekunden und beendet dann das Programm. Sobald das Programm beendet ist, werden die GPIO-Einstellungen zurückgesetzt und das Relais schließt sich, aber das ist das Ende des Programms und dort beginnt mein Problem.
Ich möchte, dass dieses Skript das Relais für 60 Sekunden öffnet und dann für 180 Sekunden schließt. Sobald es 180 Sekunden erreicht, muss es die "try" -Anweisung erneut ausführen und das Relais für weitere 60 Sekunden öffnen und so weiter. Kurz gesagt, ich möchte eine Endlosschleife, die nur durch Abbrechen des Skripts unterbrochen werden kann. Ich bin mir nicht sicher, wie ich Python sagen soll, dass er das Relay für 180 Sekunden schließen soll und dann die try-Anweisung erneut ausführen soll, oder wie man es zu einer Endlosschleife macht.
Ich würde wirklich etwas Input von der Gemeinschaft schätzen. Jede Rückmeldung oder Unterstützung wird sehr geschätzt. Danke allen.
Bitte bearbeiten Sie Ihren Beitrag, um Ihre Einrückung zu korrigieren. –
Verwenden Sie einfach eine 'while True:' Schleife – reptilicus
Hallo Robᵩ, ich habe es wie gewünscht bearbeitet. – Safjoe