Go Down

Topic: Probleme beim Einlesen eines Keypads (Read 964 times) previous topic - next topic

michael_x

#5
Jan 05, 2013, 10:37 pm Last Edit: Jan 05, 2013, 10:54 pm by michael_x Reason: 1
Und wenn du dich an diese Anleitung hältst ?
http://www.instructables.com/id/Using-the-sparkfun-12-Button-keypad-with-the-ardu/

Edit:Bezüglich der Pin-Nummern schein es in diesem Instructable Verwirrung zu geben: Die Pullup-Widerstände sollten jedenfalls an den 4 Column-Pins sein, denke ich.
Evtl. hilft auch ein zweiter Blick in die Library. Tip: Columns und Rows werden unterschiedlich behandelt.

Tobias93

Hey,

Zuerst hatte ich an jeden der sieben Pins des Keypads einen 10k Ohm Widerstand angeschlossen und mit Masse verbunden. Das Problem war das gleiche: Auch wenn keine Tasten gedrückt werden werden im Serial Monitor alle Zeichen in zufälliger Form eingelesen. Drücke ich alle Tasten gleichzeitig wird nichts mehr eingelesen. Jetzt habe ich folgendes gemacht. Die Widerstände sind weiterhin mit den Pins verbunden, nur ich habe deren Enden nicht mit Masse verbunden. Jetzt wird einmalig bei Programmstart das "Raute" Zeichen eingelesen. Ich habe eingestellt das das Array nachdem 4 Zeichen in ihm gespeichert wurden gelöscht wird und der Einlesevorgang von Vorne beginnt. Daher weiß ich das die Raute nur einmalig eingelesen wird.  Danach funktioniert das Einlesen Perfekt. Woran kann das jetzt liegen? Ich habe jetzt folgenden Gedanken: Direkt nach Programmstart soll der Arrayinhalt einmal gelöscht werden. So könnte man den Fehler ausmerzen, zwar ohne die Ursache genau zu finden aber es würde funktionieren. Was meint ihr? Ich habe schon etwas rumprobiert aber ich Hänge momentan da das ich den Arrayinhalt nicht löschen kann sondern nur mit Nullen Fülle. Kann mir jemand von euch sagen wie man ein Array des Datentyps Char "löscht"?


Gruß,

Tobi
Nobody is perfect but - impossible is nothing

uwefed

Quote
Kann mir jemand von euch sagen wie man ein Array des Datentyps Char "löscht"?

indem man in jedes Element einen "Null-wert" schreibt.
Grüße Uwe

michael_x

Es reicht sogar, in das erste eine 0 zu schreiben ;)

Code: [Select]
char myArray[100] = "Hallo"; // 5 byte definiert, eine 0, Rest undefinert

*myArray = 0;
// myArray[0] == 0 , Rest undefiniert

Tobias93

hey,

danke für die Info. Bin im Thema Array noch nicht sehr vertraut. Eine Frage würde das dann ungefähr so gehen:

So legt man ein Array an ?
Quote
char DASISTEINARRAY[5] = 90000;     // Array kann 5 Bits speichern ( [5] ) und bekommt die Zahl 90000 eingespeichert



So kann ich es "löschen" indem ich es mit Nullen beschreibe?
Quote
DASISTEINARRAY[5]  = 00000;

oder
Quote
DASISTEINARRAY[0] = 0;


Ist das so richtig? Weil den Gedanken den ich halt mit dem Null schreiben habe ist, bekomm ich dann nicht auf meinem Display die Nullen angezeigt ? Weil er mir ja auf meinem Display den Array Inhalt darstellt.

Gruß,
Tobi
Nobody is perfect but - impossible is nothing

Go Up