Problem beim auslesen einer 4x3 Matrixtastatur

OP #1117537
Hi,

ich hoffe einer von euch kann mir bei meinem Problem beim
Auslesen der Matrix helfen. Ich habe eine Routine von
Peter Dannegger für eine 4x4 gefunden, diese leicht geändert.
Funktionierte gleich, ich bekam auch einen keycode zwischen 1-12,
leider nicht den Richtigen ( z.B. eine 12 für eine gedrückte 1 ).

Schnell die Werte für col und row in den Abfragen geändert, so das z.B
für eine "9" ein 2(col) + 7(row) zurückgegeben wird, also
1
return col + row;

Einige Tasten funktioneren stabil, andere nicht, eine gedrückte 12 gibt
eine 12 zurück, eine 9 beim erstmaligen Drücken eine 14, dann eine 9.

Benutze ich Peters  " return col - row ", habe ich immer einen falschen
( na klar ), aber immer den gleiche Wert bei drücken der gleichen Taste.

return col + row -> Keinen stabilen Rückgabewert bei gleicher
                    Taste, machmal o.k.
return col - row -> Immer falsch, aber immer gleich falsch ;-)

Ich habe verschiedene Datentypen ausprobiert, brachte nichts, aber
eine simple addition sollte doch mit einem unsigned char möglich sein.

Hoffe ich konnte meine Problem deutlich machen,

best regards,

MaxMeise
Angehängte Dateien:
Die Zuordnung des Scancode zu dem gewünschten Keycode macht man am 
besten über eine Tabelle:
1
u8 KEY_TAB[12] = { 1, 5, 12, 255, 17, 32, '5', '8' }; // wie man will
2

3
u8 get_key_code( u8 scan_code )
4
{
5
  return KEY_TAB[scan_code];
6
}


Peter
Max Meise wrote:

>
1
return col + row;

Es hat schon seinen Grund, warum ich die Differenz genommen habe.

Das Testen von Reihe und Spalte erfolgt ja nacheinander und das Drücken 
völlig zufällig.
Daher kann es sein, daß nur eines erkannt wurde und das wird durch die 
Differenz abgefangen, weil ja davor steht:
1
row = col;


Peter

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.