Keypad Eingabe auf LCD Display

Hallo zusammen,
bei meinem aktuellen Projekt möchte ich eine Eingabe einer 4x3 Tastatur über ein LCD Display (I2C) ausgeben und in einer Variable abspeichern. Dabei sollen Zahlen zwischen 1 und 9999 möglich sein. Nach Möglichkeit sollte die Eingabe live auf dem Display zu sehen sein und nicht erst am Ende nach dem Bestätigen.
Die eingegbenen Zahl möchte ich als Variable speichern.

Hat von euch jemand einen ähnlichen Sketch programiert und könnte mir Tipps geben?

Wie kann ich denn beispielsweiße ein Programm auf die nächste Eingabe warten lassen?

Gruß Frank

Hast Du Dir schon mal die Matrix Keypad library angesehen?

Hi

Habe den Link nur kurz angeklickt und 1x im Sturzflug 'gesichtet'.

Du kannst eine Variable VOR der ersten Eingabe nullen, also auf Null setzen.
Wenn nur Ziffern möglich sind und dezimal gezählt werden soll, multiplizierst Du diese Variable bei jeder Eingabe mit 10, zählst die Eingabe dazu (und ziehst ggf. einen Offset wieder ab).
Das machst Du bei JEDER weiteren Ziffer.
Wenn keine Ziffer, sondern Dein 'Eingabe fertig'-Knopf gedrückt wurde, arbeitest Du mit der fertigen Zahl in dieser Variable.

Da Du bei jedem Tastendruck einige Zeilen Code auszuführen hast, kannst Du auch zwischen drin das Zeichen an das LCD schicken - Das sollte natürlich beim Nullen der Variable auch auf die passende Position gesetzt worden sein.

Der oben genannte Offset, Der ggf. abgezogen werden muß, ergibt sich dadurch, daß unsere Null '0' den ASCII-Wert 0x30 oder 48 dezimal hat.
Wenn Du das Zeichen 48 oder 0x30 an das LCD sendest, kommt Da eine Null an.
Für unsere Berechnung müssen wir aber bei der Eingabe der Null unseren Variablen-Wert behalten - ist ja nur eine Null gewesen.
Somit müssen wir, nachdem wir die eingegebene Variable 0x30 dazu gezählt haben, den Offset 0x30 abziehen, um den Wert der Eingabe dazu gerechnet zu haben.
Die '9' ist übrigens die 0x39 - passt also von der Null bis zur Neun.
Prüfen musst Du dabei nur, ob eine Ziffer übergeben wurde - wenn nicht musst Du entscheiden, was gemacht wird - z.B. die Zahl übernehmen.

Du gibst z.B. die Ziffern 1-2-0-3 ein.
Variable - Ziffer - ASCII-Wert - Variablen-Berechnung
0 - 1 - 0x31 - 010+0x31-0x30 -> 1
1 - 2 - 0x32 - 1
10+0x32-0x30 -> 12
12 - 0 0x30 - 1210+0x30-0x30 -> 120
120 - 3 - 0x33 - 120
10+0x33-0x30 -> 1203

Möglich, daß die Lib so was integriert hat - ist ja auch kein Hexenwerk.

MfG