Ich habe ein Stück Code, der genau das tut, was ich brauche, abgesehen von einer Sache, einem Timeout.Timeout While Schleife Wenn kein Eingang
Im Grunde wird dieser Code einen Eintrag alle 0,5 Sekunden für 3 Sekunden protokollieren und dann "Fertig" drucken und dann neu starten. Der Sound, den ich zu protokollieren versuche, ist konstant für etwa 3,1s, also ist das perfekt. Jedes Mal, wenn der Ton vorhanden ist, wird "Fertig" ausgedruckt.
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BOARD)
pin = 7 #Defining pin 7 as Input pin
GPIO.setup(pin, GPIO.IN)
list = ["Start"]
while l:
if GPIO.input(pin) == GPIO.LOW: #This is the input
if len(list) <= 6:
list.insert(0, "Entry") #Insert into list at first position
sleep(0.5) #If there is a constant sound, this makes sure a new item is interted only every 0,5s.
print ("Not Done")
print (len(list))
elif len(list) > 6:
list = ["Start"]
print ("Done")
So, jetzt möchte ich den Code, wenn neu starten, sagen, dass es einen Ton erkennt und meldet es, aber dann passiert nichts für 1 oder 2 Sekunden.
Also wenn die Liste vielleicht 3 oder 4 Einheiten lang wird, aber dann passiert nichts für eine Sekunde oder zwei, es muss wieder eine Einheit lang werden.
Ich hoffe, das macht Sinn. Und ich hoffe, du kannst mir helfen.
Vielen Dank!
Dank @Chad Miller. - Es scheint nur zu funktionieren, um "Not Done" zu drucken - ich kann nicht scheinen, es zu drucken "Fertig". Als ich den Code zum ersten Mal ausführte, sagte er mir, dass "Schwelle" nicht definiert war. Also musste ich "logging_threshold" auf "threshold" setzen, damit es funktioniert. Hast du irgendwelche Vorschläge? Gibt es ein Modul, das ich nicht importiere? – LukeVenter
@LukeVenter, es ist nur, dass deine Logik falsch ist. Geh von Hand durch. Führe es nicht aus. Stellen Sie sicher, dass Sie mit Stift und Papier verstehen, was vor sich geht. Zeichnen Sie eine Box mit Variablennamen. Verwenden Sie eine Münze oder einen Würfel, um zu entscheiden, was GPIO.input (Pin) zurückgibt. Schreiben Sie die Geschichte, stellen Sie sicher, dass es tut, was Sie erwarten. –