dürfte ich hier vielleicht kurz um eine professionelle Hilfestellung bitten ...
Ich bin Hobbymusiker und habe mir vor 4 Jahren ein Gehäuse für einen Computermonitor gebaut, der mir auf der Bühne meine Liedtexte anzeigt. Mit einem Fußtaster kann ich vor- und zurückblättern und angetrieben wird das von einem Raspberry Pi 2.
So sieht das Teil aus:
Es erweist mir auch regelmäßig gute Dienste, aber es gibt zwei Kleinigkeiten, die mich immer wieder daran stören.
1. Beim betätigen des Fußtasters wird immer eine Seite pro Tastendruck geblättert.
Hier würde ich mir wünschen, wenn man auf dem Taster bleibt, dass ein schnelles Vorblättern möglich ist.
2. Ich würde den Pi gerne irgendwie herunterfahren können.
D.h. wenn ich z.B. beide Taster für min. 3 Sek. gedrückt halte, soll automatisch heruntergefahren werden.
Ich habe mir vor 4 Jahren durch tagelange Recherche und rumprobieren folgendes Skript zusammengetragen.
Allerdings bin ich nach wie vor absoluter Python-Anfänger und habe eigentlich gar keine große Ahnung was da passiert.
Ehrlich gesagt wundere ich mich inzwischen, wie ich das vor 4 Jahren so geschafft habe, das zum laufen zu bringen.
Nun ja, jetzt stehen ab dem kommenden Wochenende wieder einige Auftritte meiner Band an und ich habe mal wieder darüber nachgedacht, wie toll das wäre, wenn diese beiden Kleinigkeiten endlich behoben werden.
Ich denke mir, für einen Profi kann das eigentlich gar kein großes Ding sein. Aber ich bin damit ziemlich überfordert.
Meine Stärke liegt da glaub ich eher im Bau der Kiste drumrum...
Hier nun der Code ... vielleicht ist ja jemand in der Lage und gewillt mir den anzupassen, damit meine Wünsche in Erfüllung gehen ...
Code: Alles auswählen
#!/usr/bin/env python
import RPi.GPIO as GPIO
import time
import subprocess
# SoC als Pinreferenz waehlen
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
# Pins als Input und Pull-Down Widerstand aktivieren
GPIO.setup(23, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
GPIO.setup(24, GPIO.IN, pull_up_down = GPIO.PUD_DOWN)
# Interrupts
def Up(channel):
if GPIO.input(24):
# Verzögeren und nochmal abfragen
time.sleep(0.1)
if GPIO.input(24):
#Page down ausführen
subprocess.call(["xdotool", "key", "Next"])
def Down(channel):
if GPIO.input(23):
# Verzögeren und nochmal abfragen
time.sleep(0.1)
if GPIO.input(23):
#Page up ausführen
subprocess.call(["xdotool", "key", "Prior"])
# Interrupt Events hinzufuegen. Auf steigende Flanke reagieren und Bouncetime setzen
GPIO.add_event_detect(24, GPIO.RISING, callback = Up, bouncetime = 300)
GPIO.add_event_detect(23, GPIO.RISING, callback = Down, bouncetime = 300)
while True:
time.sleep(1)
PS: Bitte nicht Kreuzigen! Ich bin echt blutiger Anfänger.
PPS: Freier Konzert-Eintritt ist natürlich drin. Allerdings spielen wir bislang nur sehr regionale Gigs in Bayern/Oberfranken.
Und man sollte Hard Rock mögen...