Hallo Leute,
ich beschäftige mich in meinem Urlaub etwas mehr mit meinem Raspberry Pi und dessen GPIO Schnittstelle. Ich möchte dabei ein Lasermaze von dieser Seite nachbauen -> https://www.raspberrypi.org/learning/laser-tripwire/worksheet/
Dabei werde ich aber keine besonderen Light Sensors, die einen Wert ausgeben, sondern einfache Photozellen, die den Stromkreis schließen oder öffnen. Nachdem ich mir nun den "sehr" einfachen Code angeschaut habe interessiert mich eine Frage auf die ich auf der schnelle keine Antwort finden konnte.
In dem Beispiel wird ein Buzzer angeschlossen, der akustisch ein Signal ausgiebt. Ich möchte bei meinem Lasermaze aber gerne die Laser bei Unterbrechung des Kontakts kurz und schnell aufblicken lassen. Dazu müsste Python aber die allgemeine Programmroutine verlassen, da das aufblicken ja wieder den Light Sensor triggert. Es müsste also die main Funktion verlassen werden, in sehr simplen anderen Maschinensprachen geht das mit Goto's, welche aber Python nicht bietet. Frage mich ob es eine andere einfache und simple Lösung gibt...
Vielen Dank
Ahhh vielleicht hab ich die Lösung schon gefunden, helfen könnte ein Event Handler
GPIO.add_event_detect(channel, GPIO.RISING, callback=my_callback, bouncetime=200)
Über die Callback Funktion kann dann das Blinken realisieren und die Bouncetime sorgt dafür, dass die Callback Funktion nicht immer erneut aufgerufen wird. Könnte eine Lösung sein!
ich beschäftige mich in meinem Urlaub etwas mehr mit meinem Raspberry Pi und dessen GPIO Schnittstelle. Ich möchte dabei ein Lasermaze von dieser Seite nachbauen -> https://www.raspberrypi.org/learning/laser-tripwire/worksheet/
Dabei werde ich aber keine besonderen Light Sensors, die einen Wert ausgeben, sondern einfache Photozellen, die den Stromkreis schließen oder öffnen. Nachdem ich mir nun den "sehr" einfachen Code angeschaut habe interessiert mich eine Frage auf die ich auf der schnelle keine Antwort finden konnte.
In dem Beispiel wird ein Buzzer angeschlossen, der akustisch ein Signal ausgiebt. Ich möchte bei meinem Lasermaze aber gerne die Laser bei Unterbrechung des Kontakts kurz und schnell aufblicken lassen. Dazu müsste Python aber die allgemeine Programmroutine verlassen, da das aufblicken ja wieder den Light Sensor triggert. Es müsste also die main Funktion verlassen werden, in sehr simplen anderen Maschinensprachen geht das mit Goto's, welche aber Python nicht bietet. Frage mich ob es eine andere einfache und simple Lösung gibt...
Code:
from gpiozero import LightSensor, Buzzer
ldr = LightSensor(4) # alter if using a different pin
buzzer = Buzzer(17) # alter if using a different pin
while True:
if ldr.value < 0.5: # adjust this to make the circuit more or less sensitive
buzzer.on()
else:
buzzer.off()
Vielen Dank
Ergänzung ()
Ahhh vielleicht hab ich die Lösung schon gefunden, helfen könnte ein Event Handler
GPIO.add_event_detect(channel, GPIO.RISING, callback=my_callback, bouncetime=200)
Über die Callback Funktion kann dann das Blinken realisieren und die Bouncetime sorgt dafür, dass die Callback Funktion nicht immer erneut aufgerufen wird. Könnte eine Lösung sein!