Programme auf dem Raspberry PI mit einem Taster (oder Schalter) starten
Warnung: Dieser Post dokumentiert, wie der Aufbau bei mir funktioniert hat. Wenn Sie Ihren Raspberry beim Nachbau dieser Anleitung ruinieren, lehne ich jede Verantwortung ab.
Der folgende Code wurde unter Raspbian entwickelt und getestet.
Die Hardware
Die Schaltung hat folgenden Aufbau:
Der Widerstand ist absolut unkritisch. Er sorgt bloss dafür dass der Eingang auch bei offenem Schalter ein definiertes Potential hat.
Das Script
Um einen Taster einzulesen ist auch ein Shell-Script noch schnell genug. Zudem war es einfach zu schreiben und zu testen:
#!/bin/bash # Das Pin als Eingang definieren echo "4" > /sys/class/gpio/export echo "in" > /sys/class/gpio/gpio4/direction # Den Zustand des Eingangs lesen previous=$(cat /sys/class/gpio/gpio4/value) # Endlose Schleife while true do # Den Zustand des Eingangs lesen pin=$(cat /sys/class/gpio/gpio4/value) # Wenn der Eingang von 0 auf 1 gewechselt hat if [ $pin -gt $previous ] then # Das Programm starten echo "Hier das Programm starten" else # Eine halbe Sekunde schlafen, damit der Prozessor nicht heissläuft sleep 0.5 fi # Der aktuelle Wert wird der alte Wert für den nächsten Durchlauf previous=$pin done
Wenn der Schalter stark prellt und das Programm nur kurz läuft, wird es unter Umständen mehrfach gestartet. Dem hilft ein sleep nach dem Programmstart ab.
Das Script herunterladenDas Script muss natürlich ausführbar sein. Das machen Sie mit dem Befehl chmod 755 trigger auf der Kommandozeile oder mit Ihrem Lieblings-Filemanager.
Das Script muss mit root-Rechten laufen. Auf der Kommandozeile kann es so gestartet werden:
sudo ./trigger
Autostart
Der Autostart erfolgt über /etc/rc.local.
In dieses File vor dem exit 0 folgende Zeile einsetzen:
/home/pi/trigger &
Mehrere Eingänge?
Immer wieder kam der Wunsch nach mehreren Eingaengen auf. Das habe ich in einem weiteren Post realisiert: Sound-Files mit GPIOs abspielen