Hi, da ich an meinem Atmega48 für ein zukünftiges Projekt nicht mehr genug freie Pins für eine Tastermatrix habe, verwende ich dazu einen AD_Wandler. Dort werden die Taster über eine Wiederstandsmatrix eingelesen. Anhand der Spannung kann ich erkennen, welche Taste gedrückt wurde. Das mit dem einlesen der Spannungen klappt auch ohne Probleme. Nun kam mir die Frage, wie kann ich diese Taster entprellen? Im Prinzip doch wie andetre Taster auch. Nach dem drücken muss gewartet werden, bis der Taster wieder losgelassen wird. Also in meinem Fall, bis am AD-Wandler keine Spannung mehr anliegt. Danach muss eine gewisse Zeit vergehen, bis ein erneutes einlesen des Tasters erlaubt wird. Das habe ich nun so verwirklicht: 1. Taste wird gedrückt 2. Aktion ausgeführt 3. Erneutes Tasten einlesen verweigert (In der Software taste = 1) 4. Warten bis Taste losgelassen wurde (AD_Wert == 0) 5. Prellzeit einfügen (Variable t4 wird unter den Bedingungen 3 und 4 in der Hauptschleife hochgezählt) 6. Erreicht t4 den Wert 5 wird das Tasten einlesen wieder freigegeben Nun hab ich aber irgendwie das Problem, dass anscheinend nicht jeder Tastendruck erkannt wird. Manchmal funktioniert es 10mal hintereinander, dann aber einmal nicht. Hab ich was Grundlegendes falsch gemacht? Anbei mal ein Auszug aus dem Code. Gruß
der Peter hatte hier sowas mal in der Codesammlung. Schau mal da nach. Gruß
Ja, ich hab dann einfach meine bewährte Entprellroutine auf 16 Bit (da 12 Tasten) aufgepeppt: Beitrag "Tastenmatrix auslesen über nur 2 Leitungen" Peter
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.