dooz
Lt. Junior Grade
- Registriert
- Feb. 2007
- Beiträge
- 391
Hallo zusammen,
schon mal sorry falls ich manche Begriffe eventuell nicht ganz korrekt benutze, bin nicht sonderlich erfahren in Programmierung.
Ich möchte ein recht simples Programm mit einem Raspberry Pi und Python basteln.
Es sind 3 Buttons am Pi angeschlossen, wenn ein Button gedrückt wird, soll ein Video abgespielt werden.
Ich habe dazu eine Methode, welche per Durck auf den Button aufgerufen wird um ein entsprechendes Video abzuspielen.
Dazu nutze ich "when_pressed" und möchte der Methode einen Parameter übergeben um ein bestimmtes Video aufzurufen. Jeder Button soll ein anderes Video abspielen können.
Hier mal auszugsweise der Code:
Jetzt habe ich allerdings ein Problem mit dem "btn1.when_pressed = video_start(1)". Die Methode wird sofort nach Programmstart aufgerufen und es wird nicht auf die Eingabe über den Butting gewartet. Soweit ich das gesehen habe ist dieses Verhalten wohl auch normal.
Ich weiß allerdings nicht, wie ich sonst über "when_pressed" einen Parameter übergeben soll. Ich könnte es vermutlich über if-abfragen umsetzen, allerdings wollte ich den Code versuchen so schlank wie möglich zu bekommen und ich bin mir sicher, dass es eine ganz leichte und elegante Lösung für mein kleines Problemchen gibt.
---------------
edit
---------------
Video 0 wird abgespielt
/usr/lib/python3/dist-packages/gpiozero/mixins.py:250: CallbackSetToNone: The callback was set to None. This may have been unintentional e.g. btn.when_pressed = pressed() instead of btn.when_pressed = pressed
warnings.warn(CallbackSetToNone(callback_warning))
------
Das ist die Ausgabe die ich beim Programmstart erhalte. Es wird also der Parameter an die Methode übergeben, allerdings ausgeführt, ohne den Button zu betätigen.
Wenn ich keinen Übergabeparameter angebe, dann wird folgendes ausgegeben wenn ich den Button drücke:
"btn1.when_pressed = video_start"
schon mal sorry falls ich manche Begriffe eventuell nicht ganz korrekt benutze, bin nicht sonderlich erfahren in Programmierung.
Ich möchte ein recht simples Programm mit einem Raspberry Pi und Python basteln.
Es sind 3 Buttons am Pi angeschlossen, wenn ein Button gedrückt wird, soll ein Video abgespielt werden.
Ich habe dazu eine Methode, welche per Durck auf den Button aufgerufen wird um ein entsprechendes Video abzuspielen.
Dazu nutze ich "when_pressed" und möchte der Methode einen Parameter übergeben um ein bestimmtes Video aufzurufen. Jeder Button soll ein anderes Video abspielen können.
Hier mal auszugsweise der Code:
Python:
def get_video(vidnum):
videopath = "/home/pi/Videos/"
video = {}
video[0] = "Video_1.mp4"
video[1] = "Video_2.mp4"
video[2] = "Video_3.mp4"
return videopath + video[vidnum]
def video_start(vidnum):
#player = OMXPlayer(Path(get_video(vidnum)))
#player.load
#sleep(player.duration()+ 0.3)
print ('Video '+str(vidnum)+' wird abgespielt')
btn1.when_pressed = video_start(0)
btn2.when_pressed = video_start(1)
btn3.when_pressed = video_start(2)
Jetzt habe ich allerdings ein Problem mit dem "btn1.when_pressed = video_start(1)". Die Methode wird sofort nach Programmstart aufgerufen und es wird nicht auf die Eingabe über den Butting gewartet. Soweit ich das gesehen habe ist dieses Verhalten wohl auch normal.
Ich weiß allerdings nicht, wie ich sonst über "when_pressed" einen Parameter übergeben soll. Ich könnte es vermutlich über if-abfragen umsetzen, allerdings wollte ich den Code versuchen so schlank wie möglich zu bekommen und ich bin mir sicher, dass es eine ganz leichte und elegante Lösung für mein kleines Problemchen gibt.
---------------
edit
---------------
Video 0 wird abgespielt
/usr/lib/python3/dist-packages/gpiozero/mixins.py:250: CallbackSetToNone: The callback was set to None. This may have been unintentional e.g. btn.when_pressed = pressed() instead of btn.when_pressed = pressed
warnings.warn(CallbackSetToNone(callback_warning))
------
Das ist die Ausgabe die ich beim Programmstart erhalte. Es wird also der Parameter an die Methode übergeben, allerdings ausgeführt, ohne den Button zu betätigen.
Wenn ich keinen Übergabeparameter angebe, dann wird folgendes ausgegeben wenn ich den Button drücke:
"btn1.when_pressed = video_start"
>> Video <gpiozero.Button object on pin GPIO2, pull_up=True, is_active=True> wird abgespielt
Zuletzt bearbeitet: