für mehrere Taster unterschiedliche Sound-Files

  • Hallo , ich habe eine Frage zu einem Projekt: Es ist ein Familienspiel, dass während eines Kindergartenfestes statt finden soll. Die Eltern mit Kindern sollen durch den Kindergarten gehen und verschiedene Aufgaben lösen. Unter anderem sollen sie Geräusche erkennen. Das habe ich alles vorbereitet. Sie bekommen einen (von mir gefertigten) Kasten mit 5 Buttons drauf. Außerdem hat der Kasten zwei Lautsprecher. Alles an einen Rasperry Pi angeschlossen.

    Wenn man auf einen der Buttons drückt (Kurzhubtaster) soll ein Ton abgespielt werden (Nippelboard - TV-Totoal).
    Ich habe ein Python Programm geschrieben zum testen erst mal für drei Taster. Angeschlossen an GPIO Pin 3, 5 und 7 also GPIO 2,3 und 4. Richtig?

    Hier mal der Python - Code

    Wenn ich das Programm starte, und Taster GPIO Pin 3 drücke, dann kommt der Sound "clap" und es zeigt mir an: "Knopf gedrueckt"; und zeigt mir an, dass eine Audio-Datei ausgegeben wurde.
    Bei Taster GPIO Pin 5 oder 7 passiert gar nix. Was mache ich verkehrt?

    Kann mir und auch dem Kindergarten bei der Lösungsfindung helfen? Das wäre echt toll.

    Vielen Dank


    Kai

  • Super, Dankeschön.
    Vermutlich noch so ne dumme Frage, aber ich lerne ja grade.

    Wenn ich keinen Zero habe, wie schreibe ich das dann in Python?

    Python
    from gpiozero import Button

    ist das dann das...

    Code
    import RPi.GPIO as GPIO

    oder wie schreibe ich das dann?

    Kai

  • Vielen Dank,

    manchmal so einfach. Ich steig noch nicht ganz in dem Code durch, aber es funktioniert. Das ist schon mal gut.

    Herzlichen Dank

    Nur noch eine Frage: Wie schaffe ich es, dass dieses Programm nach dem Systemstart automatisch gestartet wird. Ich lese ständig was von 3 unterschiedlichen Methoden. Was nehme ich dafür? Wie muss ich das machen?

    Kai

    Einmal editiert, zuletzt von Kai_Benjamin (7. Mai 2017 um 15:15)

  • Such dir eine aus:
    FAQ => Nützliche Links / Linksammlung => Autostart

    Um aber auch auf deine Frage aus Beitrag#1 zu antworten:

    Versuch es mal so:
    [code=php]
    #!/usr/bin/python3
    import time
    import subprocess
    from RPi import GPIO

    GPIO.cleanup()
    GPIO.setmode(GPIO.BOARD)
    GPIO.setup(3, GPIO.IN)
    GPIO.setup(5, GPIO.IN)
    GPIO.setup(7, GPIO.IN)

    while True:
    if GPIO.input(3):
    print("Knopf 4 gedrueckt")
    time.sleep(0.3)
    subprocess.Popen(["aplay", "/usr/share/sounds/alsa/clap.wav"], stdin=subprocess.PIPE)
    elif GPIO.input(5):
    print("Knopf 3 gedrueckt")
    subprocess.Popen(["aplay", "/usr/share/sounds/alsa/WilhelmScream.wav"], stdin=subprocess.PIPE)
    elif GPIO.input(7):
    print("Knopf 2 gedrueckt")
    subprocess.Popen(["aplay", "/usr/share/sounds/alsa/laugh.wav"], stdin=subprocess.PIPE)
    time.sleep(0.3)
    [/php]

    Desweiteren ist bei einem GPIO der als Eingang geschaltet ist wichtig das sich dessen Zustand willkürlich ändern kann... Abhilfe schafft man mithilfe Pull Up/Down => GPIO mit Pullup- oder Pulldown-Widerstand beschalten?

    Desweiteren ist es unnötig 'subprocess' zum abspielen zu verwenden, das geht auch mit 'pygame.mixer' wie es in dem Beispiel von bootsmann gezeigt wird.
    Last but not least wäre es ggf besser das Konstrukt auf Interrupt umzustellen FAQ => Nützliche Links / Linksammlung => Interrupt => #9

  • Soll ich ein neues Thema aufmachen oder kann ich die Frage hier noch stellen?

    Es klappt alles so wie ich will. Aber ich komme mit dem Autostart nicht zu recht. Es geht keiner der drei Varianten.

    Kann mir jemand einen Tipp geben?

    Die Datei Taster.py liegt unter pi auf dem Desktop und zusätzlich nochmal unter /home/pi/

    Und wenn ich wie hier beschrieben vorgehe, startet nix.
    Automatisches Starten von Scripte / Programme ( Autostart )

    Hilfe. Was soll ich nun tun?
    Gibt es noch eine andere Möglichkeit?


    Kai

  • Klar, gerne, und vielen Dank.

    Ich habe eine Datei erstellt, Namens [font="Menlo"]x11vnc.desktop [/font](hab ich einfach übernommen) mit folgenden Code:

    Code
    [Desktop Entry]
    Name=X11 VNC
    Comment=
    Exec=x11vnc -forever -rfbport 5900 -rfbauth ~/.vnc/x11vnc.pass -o ~/.vnc/x11vnc.log -display :0
    Terminal=false
    Type=Application
    @/usr/bin/python /home/pi/taster.py


    Mit der rot markierten Änderung.

    Anschließend hab ich dann im Terminal (Mac mit ssh-Verbindung zum Raspberry Pi)eingegeben:

    Code
    pi@raspberrypi:~ $chmod +x x11vnc.desktop

    Danach bin ich wieder in die Datei mit dem Befehl

    Code
    sudo nano x11vnc.desktop


    und habe folgende Zeile ganz unten eingefügt.

    Code
    @/usr/bin/python /home/pi/taster.py

    Unter /home/pi/taster.py ist das Programm abgespeichert.
    Ich kann es starten und es funktioniert. Hier nochmal der Inhalt:


    Vielen Dank

    Kai

  • Unterscheide bitte das in dem Beitrag: Automatisches Starten von Scripte / Programme ( Autostart )
    .. mehrere Möglichkeiten erklärt werden.

    Du darfst nicht einfach den Inhalt der Datei x11vnc.desktop mit einer anderen Möglichkeit vermischen. Die Syntax dieser *.desktop Datei muss eingehalten werden.
    Exec= ist der auszuführende Befehl.
    @ Zeilen haben in der Datei nichts zu suchen.

    x11vnc.desktop gehört nur zu Punkt 2 und 3.
    Die Zeilen mit @ am Anfang aber nur zu Punkt 4. Unterschiedliche Möglichkeiten, unterschiedliche Dateien.

  • Achso, dann habe ich deine Beschreibung wohl falsch verstanden, zu schnell gelesen. Ich bin davon ausgegangen, dass ich die Zeile einfügen muss. Na klar, ich habe "zu Punkt 4" überlesen.

    Wo muss ich den dann die Adresse des Programms oder das Program eintragen? Oder bleibt das so bestehen? Aber woher weis der Autostart, welches Programm?

    Code
    [Desktop Entry]
    Name=X11 VNC
    Comment=
    Exec=x11vnc -forever -rfbport 5900 -rfbauth ~/.vnc/x11vnc.pass -o ~/.vnc/x11vnc.log -display :0
    Terminal=false
    Type=Application

    Tut mir echt leid, wenn ich mich so anstelle.

    Kai

    Einmal editiert, zuletzt von Kai_Benjamin (7. Mai 2017 um 18:51)

  • Danke schön.

    Habe ich gemacht.

    Danach reboot.

    Leider wurde das Taster.py nicht gestartet, zumindest funktioniert es nicht,

    Wo muss ich die erstellte Datei abspeichern? Oder woran könnte es noch liegen, dass es nicht geht?


    Kai

    Einmal editiert, zuletzt von Kai_Benjamin (7. Mai 2017 um 19:10)

  • Habe ich gemacht. Leider Startet es immer noch nicht.

    Hier der geänderte Code:

    Code
    [Desktop Entry]
    Name=Taster Script
    Comment=
    Exec=/usr/bin/python /home/pi/taster.py
    Terminal=true
    Type=Application

    Die Datei x11vnc.desktop befindet sich unter /home/pi/x11vnc.desktop


    Kai

  • Ja ne, da liegt sie aber falsch.
    Bitte ließ noch mal die Anleitung Automatisches Starten von Scripte / Programme ( Autostart )

    Zitat
    • ...
    • Über die globale LXDE Autostart funktion ( /etc/xdg/autostart/ )
    • Über das LXDE-Profil des jeweiligen Benutzers ( ~/.config/autostart/ ), funktioniert aber nur wenn sich der Benutzer automatisch Anmeldet und LXDE bei Systemstart automatisch gestartet wird..
    • ...


    Zu Punkt 2) und 3):

    Eine Datei erstellen: x11vnc.desktop
    Achtung: Die Dateiendung muss .desktop lauten!
    mit folgendem Inhalt:

    Code
    [Desktop Entry]
    Name=X11 VNC
    Comment=
    Exec=x11vnc -forever -rfbport 5900 -rfbauth ~/.vnc/x11vnc.pass -o ~/.vnc/x11vnc.log -display :0
    Terminal=false
    Type=Application

    Anschliesend ist es ebenfalls wichtig die x11vnc.desktop Datei ausführbar zu machen!

    Code
    chmod +x x11vnc.desktop

    Ihr könnt bei " Exec= " natürlich auch ein Script oder andere Programme einfügen usw. Eine genauere Beschreibung der .desktop Dateien findet ihr hier: http://wiki.ubuntuusers.de/Men%C3%BC

    Die Datei muss also im Verzeichnis /etc/xdg/autostart/ liegen.

    Oder im Benutzerverzeichnis ~/.config/autostart/

  • Es geht.

    Sorry für die Dummheit. Aber wie bereits geschrieben, stehe ich noch am Anfang. Auf jeden Fall habe ich heute ne Menge dazugelernt.

    Es läuft alles so wie es soll.

    Was soll ich sagen, ...

    D A N K E

    Herzlichen Dank. Ich glaub es nicht.

    Supertoll


    :danke_ATDE:

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!