Sound mit GPIOs abspielen
Ich hatte ein Script für einen Eingang gepostet, aber immer wieder wurden mehrere Eingaenge verlangt.
Dieses Script überwacht 5 GPIOs. Es ist aber nicht auf diese fünf limitiert, sondern kann fast beliebig erweitert werden.
Die GPIOs sind in einem Array abgelegt, so dass sie nach Lust und Laune ausgetauscht werden können. Das Script übernimmt die Anzahl der Eingänge vom Array.
Die Namen der Files sind ebenfalls in einem Array zu finden. Für jeden Eingang sollte es auch einen Eintrag in diesem Array geben.
Fix eincodiert sind der Player, in diesem Fall der omxplayer, und der Pfad zu den Files. Zumindest diesen Pfad müssen Sie vermutlich anpassen.
Das Script geht davon aus, dass sich am Eingang ein Pullup-Widerstand gegen 3.3V, und ein Taster oder Schalter gegen Masse befindet. Falls Sie eine Schaltung mit Pulldown haben, können Sie den Pegel in der if-Bedingung ändern.
Das Script detektiert Wechsel der GPIOs vom inaktiven in den aktiven Zustand. Nur bei diesem Uebergang wird das File abgespielt. Wenn Sie das File so lange spielen wollen wie der Eingang anliegt, dann löschen Sie das entsprechende if aus dem Programm.
Das Script
#!/bin/bash # List of the GPIOs pins=(17 18 22 23 24) # List of the files to play files=(Duck.wav Owl.wav Horse.wav Rooster.wav Crickets.wav) # Initialize the GPIOs and read the initial state for i in ${!pins[*]} do if [ ! -e /sys/class/gpio/gpio${pins[$i]} ] then echo ${pins[$i]} > /sys/class/gpio/export fi echo in > /sys/class/gpio/gpio${pins[$i]}/direction states[$i]=$(cat /sys/class/gpio/gpio${pins[$i]}/value) done # Watch the GPIOs while true do for i in ${!pins[*]} do state=$(cat /sys/class/gpio/gpio${pins[$i]}/value) if [ "$state" -ne "${states[$i]}" ] then states[$i]=$state # An active switch will pull the input down if [ "$state" -eq "0" ] then # Feel free to use another player or to # change the path to your sound files omxplayer /usr/share/scratch/Media/Sounds/Animal/${files[$i]} fi fi done # Allow the CPU to cool down sleep 0.2 done
Download
Mit diesem Link Script für Sound per GPIO können Sie das File auf Ihre Maschine herunterladen.
Starten
Stellen Sie sicher, dass das File ausführbar ist:
chmod 755 play
Starten Sie es mit sudo, weil der Zugriff auf die GPIOs erhöhte Rechte braucht:
sudo ./play
Drücken Sie die Tasten und erfreuen Sie sich am Sound :-)