Hi Leute, ich habe mir neulich ein Raspi Keypad (3x4) zugelegt und es so programmiert, dass die gedrückte Taste auf einem Segment des LCD Displays angezeigt wird. Jetzt steht z.B. in der ersten Zeile an erster Stelle die 4 und drücke ich jetzt die fünf steht diese aber auch in der ersten und die vier verschwindet. Wie kann man das in Python so programmieren das nachdem die erste Zahl erkannt und an erster Stelle steht die nächste gedrückte Taste dann an zweiter?
Sorry für eventuelle simple Gedächtnislücken meinerseits und danke für eine Antwort,
Fussel 132
Keypad Eingabe auf LCD Display
- __blackjack__
- User
- Beiträge: 13100
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Je nach dem was man später mit den Werten machen möchte, könnte es auch sinnvoll sein die Werte in einer Liste zu sammeln oder vielleicht auch in eine Zahl zu wandeln die jeweils um eine neue Ziffer erweitert wird.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Also ich habe dazu folgenden Code:
Mit kp.getKey() werden Impulse durch die Reihen geschickt und wenn die bei den Spalten aufgefangen werden, ist das eine Nummer. Durch lcd.lcd_display_string werden Texte/Zahlen (hier in Zeile 1) auf das Display übertragen.
Code: Alles auswählen
from keypad import keypad
import lcddriver
lcd = lcd driver.lcd()
lcd.lcd_clear()
kp = keypad(columnCount = 3)
digit = None
while digit == None:
digit = kp.getKey()
print digit
digitlcd = str(digit)
lcd.lcd_display_string(digitlcd, 1)
- __blackjack__
- User
- Beiträge: 13100
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Fussel132: Vorweg: Du solltest kein Python 2 mehr benutzen: https://pythonclock.org/
Du müsstest das halt in eine Schleife stecken und wie schon gesagt, die Eingaben merken. Du könntest die Ziffern auch auch einer Zeichenkette sammeln.
Du müsstest das halt in eine Schleife stecken und wie schon gesagt, die Eingaben merken. Du könntest die Ziffern auch auch einer Zeichenkette sammeln.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
- __blackjack__
- User
- Beiträge: 13100
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Fussel132: Das ist übrigens nicht der Code den Du laufen lassen hast, weil der einen Syntaxfehler enthält.
Eingerückt wird mit vier Leerzeichen pro Enbene.
Nicht allgemein bekannte Abkürzungen sollte man nicht als Namen verwenden. Wenn man `keypad` meint, sollte man nicht `kp` schreiben. Wobei da die verwendeten Module auch echt blöd bei den Namen sind, denn die benennen offenbar Klassen in Kleinbuchstaben und den Klassennamen völlig dummsinnigerweise in den Methoden noch mal wiederholen.
Ungetestet:
Eingerückt wird mit vier Leerzeichen pro Enbene.
Nicht allgemein bekannte Abkürzungen sollte man nicht als Namen verwenden. Wenn man `keypad` meint, sollte man nicht `kp` schreiben. Wobei da die verwendeten Module auch echt blöd bei den Namen sind, denn die benennen offenbar Klassen in Kleinbuchstaben und den Klassennamen völlig dummsinnigerweise in den Methoden noch mal wiederholen.
Ungetestet:
Code: Alles auswählen
#!/usr/bin/env python3
from keypad import keypad as Keypad
from lcddriver import lcd as LCD
def main():
lcd = LCD()
lcd.lcd_clear()
keypad = Keypad(columnCount=3)
digits = ''
while True:
while True:
digit = keypad.getKey()
if digit is not None:
break
digits += str(digit)
lcd.lcd_display_string(digits, 1)
if __name__ == '__main__':
main()
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman