Keypad Eingabe auf LCD Display

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
Fussel132
User
Beiträge: 15
Registriert: Mittwoch 13. März 2019, 13:55

Mittwoch 12. Juni 2019, 12:18

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
Sirius3
User
Beiträge: 10364
Registriert: Sonntag 21. Oktober 2012, 17:20

Mittwoch 12. Juni 2019, 13:13

Indem Du Dir die Position merkst und erhöhst.

Was hast Du denn bisher programmiert? Zeig doch den Code.
Benutzeravatar
__blackjack__
User
Beiträge: 4048
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Mittwoch 12. Juni 2019, 13:19

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.
“Programmieren ist ein Hobby, bei dem es einen riesigen Baumarkt mit quasi jedem Bauteil und Werkzeug und fast immer kostenlos gibt. Ob man deswegen in der Lage ist einen Kölner Dom zu bauen ist eine andere Frage. Arbeit steckt auf jeden Fall drin ;).” — Greebo, forum.ubuntuusers.de
Fussel132
User
Beiträge: 15
Registriert: Mittwoch 13. März 2019, 13:55

Mittwoch 12. Juni 2019, 13:36

Also ich habe dazu folgenden Code:

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)
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.
Benutzeravatar
__blackjack__
User
Beiträge: 4048
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Mittwoch 12. Juni 2019, 13:46

@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.
“Programmieren ist ein Hobby, bei dem es einen riesigen Baumarkt mit quasi jedem Bauteil und Werkzeug und fast immer kostenlos gibt. Ob man deswegen in der Lage ist einen Kölner Dom zu bauen ist eine andere Frage. Arbeit steckt auf jeden Fall drin ;).” — Greebo, forum.ubuntuusers.de
Benutzeravatar
__blackjack__
User
Beiträge: 4048
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Mittwoch 12. Juni 2019, 14:06

@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:

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()
“Programmieren ist ein Hobby, bei dem es einen riesigen Baumarkt mit quasi jedem Bauteil und Werkzeug und fast immer kostenlos gibt. Ob man deswegen in der Lage ist einen Kölner Dom zu bauen ist eine andere Frage. Arbeit steckt auf jeden Fall drin ;).” — Greebo, forum.ubuntuusers.de
Fussel132
User
Beiträge: 15
Registriert: Mittwoch 13. März 2019, 13:55

Mittwoch 12. Juni 2019, 15:30

Super, das funktioniert. Danke
Antworten