Pfeil Tasten via GPIO emulieren

  • Hallo, Mein Name ist Florian


    Leider habe ich keinen Plan bisher vom Rasp und Linux


    Ich habe einen Rasp Pi 2 B+ mit einem 2 A Netzteil

    Installiert habe ich ein komplett frisches Image Raspbian Stretch with Desktop von der raspberrypi.org

    Aktiviert ist SSH und VNC im Autostart wie auch soffice/libreOffice um eine Presentation zu starten aus dem Downloadordner

    soweit funktioniert alles super.

    Da ich den Bildschirm mit dem Rasp in eine Wand einlassen will, möchte ich in der Wand 2 Taster integrieren, um die Presentation ein Bild vor oder zurück zu schalten.

    Also 1 Taster für Pfeil links, ein Taster für Pfeil rechts.

    Hardwaremäßig eine PIN mit einem Widerstand und einem Taster zu belegen ist für mich kein Problem, Programmieren leider schon.


    Ich hoffe ihr könnt mir helfen


    Gruß Florian

  • Eigentlich sollte in Impress ein Shortcut für das Weiterschalten vorhanden, oder definierbar sein.


    Dann sendest Du bei Auslösen des Tasters den Textsring für den Shortcut an das zuständige Input Device.


    Servus !

    Wer nichts weiß, muss alles glauben.

  • Hallo,


    ich habe einen Radiowecker mit Internetradio mit dem Raspi in Arbeit und die Tastenentprellung und Flankenauswertung so gelöst.

    Funktioniert sehr gut, dort wo jetzt 'print ("Funktion Taste X)' steht muss eben das hin was dann vom Programm getan werden soll wenn die Taste gedrückt wird.

    Dateien

    • Tasten.py

      (5,55 kB, 9 Mal heruntergeladen, zuletzt: )
  • Hallo,


    Thotaa : bis du irgendwie Rautenfetischist oder warum nutzt du die so exzessive, inkl. Zaunbau, in deinem Code?

    Die gängigen Module für die GPIOs könnten Taster mit Bordmitteln entprellen (Stichwort: bounce time). Wenn du die neuere / schöner / bessere gpiozero verwenden würdst, köntest du auch über die held-Time gehen. Spart dir den umständlichen Weg über Threads und das schlechte Verwenden von `global`.


    Außerdem wird in dem Code so rein gar keine Lösung für die Kernfrage des TE gezeigt - wie löst man einen (emulierten) Tastendruck über einen GPIO aus? Nur ein `print()`über einen GPIO auslösen ist ja einfach.


    @Deadinstink: ich würde es denke ich einfacher machen und einfach ein 10er USB Tastatur einschließen.


    Gruß, noisefloor

  • Hallo noisefloor,


    - zu Rautenfetischist: im Netz gibt es genügend sogenannte "Soziale Netzwerke" die sind wohl dazu gemacht andere mit irgendwelchen unschönen Namen zu betiteln, geh doch dahin.


    - zu nutzt du die so exzessive, inkl. Zaunbau, in deinem Code?: Ich programmiere seit Mitte der 80er Jahre des letzten Jahrhunderts in allen möglichen Sprachen (Roboter, SPS, Basic, ja für meinen damaligen Commodore hab ich sogar ein paar Sachen direkt in Maschinencode geschrieben und jetzt unter anderem Python) und ich kommentiere meine Programme möglichst so dass ich sie auch noch nach Jahren (oder Jahrzehnten) noch verstehe und in Pyhton ist das Kennzeichen für einen Kommentar nun mal die Raute (ist Dir das entgangen). Für eine klare inhaltliche Trennung bleib ich einfach kurz auf der Rautentaste, gibt dann halt den Zaun.

    Der Teil oben ist ja nur ein Auszug aus einem über 800 Zeilen langen Programm, den Rest hab ich zur besseren Verständlichkeit gelöscht, deshalb blieb vielleicht etwas mehr an Routen übrig als bei mir üblich, aber ich verzeih Dir falls es Dich gestört hat.


    - zu könntest du auch über die held-Time: hab in Netz nichts brauchbares dazu gefunden.


    Das ganze war ja nur gedacht dem Florian eine Denkstütze zu geben wie man an sowas rangehen kann, es gibt bestimmt 1000 andere Lösungen, welche für ihn aber die beste ist überlasse ich ihm. So wie Du mir überlassen solltest wie viele Rauten (Kommentare) in meinen Programmen stehen.


    In Erwartung keiner Antwort

    Thotaa

  • Hallo Florian,


    das 'global' ist nicht böse, nur einige "Programmierer" kommen damit schlecht zurecht weil sie zu sehr in ihren Funktionen denken.


    Woher kommt das, eine Funktion sollte einige Eingangswerte und möglichst nur einen Ausgabewert haben. Ansonsten von außen nicht beeinflusst werden. So in etwa sagen es die Grundregeln der Programmierung. Fügt man nun ein 'global' in die Funktion, dann ist es halt vorbei mit der Unabhängigkeit von außen. Aber es ist weder böse noch unerlaubt noch entstehen dadurch Fehlfunktionen. Gut ist es allerdings wenn man die 'global's direkt am Anfang der Funktion schreibt, damit sofort klar ist es gibt sie hier.


    Viele Grüße

    Thotaa

  • Hallo,


    Thotaa : sinnvolle Kommentare zur Dokumentation des Code sind wichtig, da sind wir in der Tat voll beieinander. Was "sinnvoll" ist... nun, das sieht vielleicht jeder anders. Sinnvoller als exzessiv kommentieren wäre z.B. sinnvolle, aussagekräftige Variablennamen statt kryptische Abkürzung. Ansonsten einfach auch mal die PEP8 lesen.


    Zur hold-time: das ist doch in der Doku des genannten Python-Moduls erklärt https://gpiozero.readthedocs.i…ble/api_input.html#button


    Gruß, noisefloor

  • Ok, dann ist es halt dieser Thread, an dem ich mein Coming-Out habe: Ich bin auch Rautenfetischist und ich liebe es! :thumbup:


    Für eine klare inhaltliche Trennung bleib ich einfach kurz auf der Rautentaste

    Ja genau, sehe ich auch so, da gibt's kaum etwas besseres um die Übersichtlichkeit zu behalten. ;)  noisefloor  :baeh2:


    Naja und sonst... :conf: Scheiß Wetter heute.

    "Alles, was wir sind, ist Sand im Wind, Hoschi."