GPIO Erfassung Keypad für Raspberry PI unter einem Bash Script Linux
Guten Tag,
ich stehe vor einem Problem und suche eine Lösung.
Ich möchte ein einfachen Script mit Dialog für einen PI schreiben:
Beispiel
Mein Problem ist es, ich möchte zur dem PI das 4x4 Keypad verwenden. Und die Tasten wie '*' als Enter und '#' als ESC anwenden. (Ich weiß zwar noch nciht wie, aber das ist mein Plan. )
Aus der nachfolgenden Seite habe ich den Script genommen.
https://codingworld.io/project/das-keypad
Und stelte fest, das Funktioniert so nicht.
Der Script für Keypad läuft für sich allein und hat mit Bash erst mal nichts zu tun. Dann habe ich überlegt, man könnte mit hohe Sicherheit auch über Bash das GPIO überwachen lassen, nur wie mache ich das?
Viele Grüße
@OIOOIOOIOIIOOOIIOIIOIOOO
ich stehe vor einem Problem und suche eine Lösung.
Ich möchte ein einfachen Script mit Dialog für einen PI schreiben:
Beispiel
#!/bin/bash
CODE=$(dialog --passwordbox "Ihre Karte bitte" 10 30 3>&1- 1>&2- 2>&3-)
Mein Problem ist es, ich möchte zur dem PI das 4x4 Keypad verwenden. Und die Tasten wie '*' als Enter und '#' als ESC anwenden. (Ich weiß zwar noch nciht wie, aber das ist mein Plan. )
Aus der nachfolgenden Seite habe ich den Script genommen.
https://codingworld.io/project/das-keypad
import RPi.GPIO as gpio
import time
gpio.setmode(gpio.BCM)
matrix = [["1","2","3", "A"],
["4","5","6", "B"],
["7","8","9", "C"],
["*", "0", "#", "D"]]
spalte = [12, 16, 20, 21]
zeile = [18, 23, 24, 25]
for j in range(4):
gpio.setup(spalte[j], gpio.OUT)
gpio.output(spalte[j], 1)
gpio.setup(zeile[j],gpio.IN, pull_up_down=gpio.PUD_UP)
def keypad():
while True:
for j in range(4):
gpio.output(spalte[j], 0)
for i in range(4):
if gpio.input(zeile[i]) == 0:
benutzerEingabe = matrix[i][j]
while gpio.input(zeile[i]) == 0:
pass
return benutzerEingabe
gpio.output(spalte[j], 1)
return False
try:
while True:
print(keypad())
time.sleep(0.2)
except KeyboardInterrupt:
gpio.cleanup()
Und stelte fest, das Funktioniert so nicht.
Der Script für Keypad läuft für sich allein und hat mit Bash erst mal nichts zu tun. Dann habe ich überlegt, man könnte mit hohe Sicherheit auch über Bash das GPIO überwachen lassen, nur wie mache ich das?
Viele Grüße
@OIOOIOOIOIIOOOIIOIIOIOOO
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 546319
Url: https://administrator.de/contentid/546319
Ausgedruckt am: 21.11.2024 um 22:11 Uhr
16 Kommentare
Neuester Kommentar
Hi,
es ist zwar nicht genau klar was du zu tun versuchst aber GPIO kannst du über bash ganz einfach abfragen:
https://raspberrypi.stackexchange.com/questions/15283/how-to-get-the-sta ...
wiringpi bzw das gpio programm ist in rasbian vorinstalliert.
Grüße
es ist zwar nicht genau klar was du zu tun versuchst aber GPIO kannst du über bash ganz einfach abfragen:
https://raspberrypi.stackexchange.com/questions/15283/how-to-get-the-sta ...
wiringpi bzw das gpio programm ist in rasbian vorinstalliert.
Grüße
Wenn du möchtest, dass dein keypad wie eine Tastatur funktioniert, dann wirste einen entsprechenden Treiber benötigen.
Mit gpio kannst du nur einzelne gpio pins abfragen. Das Keypad benutzt aber pro Tastendruck mehr als einen pin, die Info allein hilft dir also nicht weiter. Sofern das von dir gepostete Script "funktioniert" also Tastendrücke erkennt lässt sich erahnen dass gpio 11 gar nicht benutzt wird.
spalte = [12, 16, 20, 21]
zeile = [18, 23, 24, 25]
Mit gpio kannst du nur einzelne gpio pins abfragen. Das Keypad benutzt aber pro Tastendruck mehr als einen pin, die Info allein hilft dir also nicht weiter. Sofern das von dir gepostete Script "funktioniert" also Tastendrücke erkennt lässt sich erahnen dass gpio 11 gar nicht benutzt wird.
spalte = [12, 16, 20, 21]
zeile = [18, 23, 24, 25]
Hm. mir scheint du hast noch sehr wenig erfahrung damit.
Die Erklärung find ich recht gut: https://tutorials-raspberrypi.de/raspberry-pi-keypad-tastatur/
Mit dem Echo Befehl von dir schaltest du einzelne GPIO ein oder aus.
Du setzt also einen Wert, aber du liest ihn nicht.
Hängt auch etwas davon ab wie du es verkabelt / konfiguriert hast. Stichwort pullup / pulldown Widerstand.
Die Erklärung find ich recht gut: https://tutorials-raspberrypi.de/raspberry-pi-keypad-tastatur/
Mit dem Echo Befehl von dir schaltest du einzelne GPIO ein oder aus.
Du setzt also einen Wert, aber du liest ihn nicht.
Hängt auch etwas davon ab wie du es verkabelt / konfiguriert hast. Stichwort pullup / pulldown Widerstand.
Sry, bei linux Treibern muss ich auch aussteigen, ich hätte gedacht vllt gibt es etwas fertiges für das Keypad.
Meine Empfehlung wäre gewesen: Python ist ja verhältnismäßig einfach. Du nutzt das Script was du hast und funktioniert und baust die Anwendung die eigentlich in bash machen wolltest in python um das funktionierende Script herum.
Halte ich aus dem Bauch raus für die einfachste Variante.
Meine Empfehlung wäre gewesen: Python ist ja verhältnismäßig einfach. Du nutzt das Script was du hast und funktioniert und baust die Anwendung die eigentlich in bash machen wolltest in python um das funktionierende Script herum.
Halte ich aus dem Bauch raus für die einfachste Variante.
Hab leider nix zum ausprobieren zur Handaber neugierig wär ich ja schon....
Also die Anleitung geht erstmal von nem älteren Kernel aus der ohne den matrix Treiber erstellt wurde.
Auf Github ist allerdings eine Kerneländerung dokumentiert sodass für mein Verständnis, der komplette makemenu schritt wegfällt.
modeinfo liefert ja auch das richtige Ergebnis.
dieses dtc Kommando? war das erfolgreich?
dtc -W no-unit_address_vs_reg -I dts -O dtb -o 4x4matrix.dtbo /root/4x4matrix.dts
deine 4x4matrix.dtbo liegt im Verzeichnis /boot/overlays/ ? da liegen zumindest alle anderen dieser Dateien.
Also die Anleitung geht erstmal von nem älteren Kernel aus der ohne den matrix Treiber erstellt wurde.
Auf Github ist allerdings eine Kerneländerung dokumentiert sodass für mein Verständnis, der komplette makemenu schritt wegfällt.
modeinfo liefert ja auch das richtige Ergebnis.
dieses dtc Kommando? war das erfolgreich?
dtc -W no-unit_address_vs_reg -I dts -O dtb -o 4x4matrix.dtbo /root/4x4matrix.dts
deine 4x4matrix.dtbo liegt im Verzeichnis /boot/overlays/ ? da liegen zumindest alle anderen dieser Dateien.