Hallo Liebe Microcontroller Freunde, Ich ha´be mich gefragt ob es möglich ist über eine 4x3 Matrixtastatur (angeschlossen wie in der Bascom Hilfe) möglich ist einen Text einzugeben und diesen am LCD anzeigen zu lassen und sogar im Atmega8 eeprom zu speichern. Also wenn ich 1 x die 1 drücke, Ausgabe = A 2 x 1 = B 3 x1 = C 4 x 1 = 1 Wie eben bei einer Handytastatur wenn eine SMS geschrieben wird. Dann soll dieser "Buchstabe oder Zahl" im display stehen bleiben und der cursor soll dann eine stelle weiter rücken. Falls ich mich vertippt habe, sollte mit * die vorherige stelle gelöscht werden und erneut eingegeben werden können. Wenn dann # gedrückt wird, soll die Eingabe beendet werden und der Vollständige Text im EEprom abgespeichert werden. Ich bin noch nicht so fit im programmieren, und würde mich über eure Hilfe freuen dies zu realisieren. Das momentane Programm ist in Bascom geschrieben. Vielen dank schon mal
Tekasiko schrieb: > Ich ha´be mich gefragt ob es möglich ist über eine 4x3 Matrixtastatur > (angeschlossen wie in der Bascom Hilfe) möglich ist einen Text > einzugeben und diesen am LCD anzeigen zu lassen und sogar im Atmega8 > eeprom zu speichern. Warum soll das nicht möglich sein? Du kannst alle Schritte beschreiben und hast eine klare Vorstellung davon, wie das alles funktionieren soll. Jetzt musst du es nur noch etwas detaillieren und es programmieren. > Ich bin noch nicht so fit im programmieren, und würde mich über eure > Hilfe freuen dies zu realisieren. Letztendes ist der Kern des Programms einen Buchstaben an einen String anzuhängen und diesen eventuell noch mal zu verändern bzw. zu löschen. Dazu noch eine Timeout Steuerung damit man auch mehrmals hintereinander denselben Buchstaben eingeben kann. Vorschlag: vergiss erst mal die Buchstaben und werte die Tastendrücke als Ziffern und sieh zu, dass du den String aus den Einzeltastendrücken aufbauen kannst. Wenn du das hast, kannst du dich um die Erweiterung kümmern, wie man mehrfache Tastendrücke innerhalb eines bestimmten Zeitraumes als Buchstaben wertet. Vom Einfachen zum Schwierigeren vorgehen.
Tekasiko schrieb: > Wie eben bei einer Handytastatur wenn eine SMS geschrieben wird. Ja, das geht. Dein Problem ist aber, Du mußt irgendwann mal aufhören, immer nur nach passenden Legosteinchen zu suchen und die dann aneinander pappen. Du mußt einfach mal anfangen, selber zu programmieren. Sobald Programme umfangreicher werden, findet man keine passenden Legosteinchen mehr, die ja mal jemand zuvor programmiert haben muß. Nimm Dir Papier und Bleistift und zeichen den Ablaufplan auf, wie Deiner Meinung nach so ein Programm funktionieren könnte. Dann teste es auf dem Papier durch und wenn das klappt, kannst Du anfangen, den Plan in Deine konkrete Programmiersprache umzusetzen. Peter
Hallo Karl Heinz, ich bin inzwischen so weit das ich einen Zahlencode bis zu 25 Stellen schreiben und auch speichern kann, das funktioniert auch sehr gut. Also den String aufbauen bekomm ich demnach hin, Was ich mir vorgestellt habe ist: Eine variable immer hochzählen lassen erster tastendruck = A = Variable ist 1 Beim zweiten Variable überprüfen dann wenn variable 1 = Taste B = Variable 2 usw. Dann ab dem 4. mal drücken wird die variable wieder 0 Das zu programmiern bekomme ich hin. Sieht dann leider so aus bei mir: Versuche ein C zu schreiben: Im Lcd steht dann ABC und leider nicht nur C da die anderen Zeichen nicht überschrieben werden sondern einfach weiter gemacht wird. Dann geht mir noch ab das nach einer gewissen Zeit (zb. 2 s)in der nichts gedrückt wurde die stelle um eins weiter rückt und wie gesagt die löschfunktion der vorhergehenden stelle
Kai Burghart schrieb: > ABC und leider nicht nur C da die anderen Zeichen nicht überschrieben > werden sondern einfach weiter gemacht wird. Dann hast Du was falsch gemacht. Der MC kann nicht hellsehen, ob der 2.Druck nun der nächste Buchstabe oder die nächste Stelle sein soll. Ein Programm braucht immer eine Regel, wie es was unterscheiden kann. Beim Handy erfolgt das z.B. über die Druckdauer. Peter
Hallo Peter, vielen dank für deine Meinung, ich bin wirklich auch dankbar für kritik. Da hast du einerseits schon recht, aber andererseits programmiere ich erst seit ca. 3-4 monaten und das hobbymässig also nicht wirklich viele Stunden. Aus allen legoteilchen die ich inzwischen gesammelt habe, habe ich einen "für mich" wirklich ansehbaren Quellcode gebastelt, denn ich nicht einfach nur zusammengebaut habe, sonder wirklich selber programmiert habe. Wenn ich ein Problem habe versuche ich es erst immer selber zu lösen, wenn ich dann hier im forum nachfrage und ich hilfreiche Antworten bekomme, dann arbeite ich mich immer soweit rein das ich ganz genau verstehe was und warum das so ist. Das heist alles was ich bisher Programmiert habe, verstehe ich bins ins kleinste detail, aber das es ist wirklich sehr umfangreich und ich kann wirklich nicht alles in 3-4 monaten lernen, aber alles was ich bisher gelernt habe, habe ich diesem Forum zu verdanken. Ich kupfere wirklich nicht alles ab, versuche eigentlich nur zu verstehen wie etwas funktioniert und baue es mir dann selber auf.
Mit Crossposts wirst Du Dir nirgendwo Freunde machen. http://bascom-forum.de/showthread.php?3539-Handytastatur-bzw.-Matrixtastatur-Texteingabe
Hallo MWS, warum nicht? Ich will jetzt wirklich nicht blöd rüberkommen oder habe irgendetwas blödes mit absicht gemacht. Was ist daran schlimm wenn ich es in einem anderen Forum auch einstelle? Dachte eben das Das ja speziel ein Bascom Forum ist und das hier ein Allgemeines Forum. Mir ist wirklich nicht bewusst das ich gerade was falsches gemacht habe. Aber bitte kläre mich auf
Kai Burghart schrieb: > Aber bitte kläre mich auf Es ist grundsätzlich nicht gerne gesehen, wenn gleichzeitig identische Posts in verschiedenen Foren gemacht werden. Du beschäftigst quasi parallel eine Gruppe von Leuten mit Deinem Problem, ohne daß die im Regelfall voneinander wissen. Das ist unfair gegenüber den potentiellen Helfern. Das System eines Forums beruht auf gemeinsamen Interesse und Hilfsbereitschaft, letzteres nutzt Du mit Crossposts aus. Mir geht's so, daß ich nicht das beliebige Helferlein sein möchte und wenn ich ein Crosspost entdecke Anderen den Vortritt lasse und mich ab sofort zurückhalte.
MWS schrieb: > Kai Burghart schrieb: >> Aber bitte kläre mich auf > > Es ist grundsätzlich nicht gerne gesehen, wenn gleichzeitig identische > Posts in verschiedenen Foren gemacht werden. > > Du beschäftigst quasi parallel eine Gruppe von Leuten mit Deinem > Problem, ohne daß die im Regelfall voneinander wissen. Das ist unfair > gegenüber den potentiellen Helfern. Es ist nicht nur unfair. Es ist in vielen Fällen auch oft kontraproduktiv. Denn meistens gibt es mehrere Möglichkeiten wie man ein Problem lösen kann. Und da die eine Gruppe nichts von der anderen Gruppe weiß, ist es gar nicht so ungewöhnlich, wenn in verschiedenen Foren auch verschiedene Lösungsstrategien vorgeschlagen und durchexerziert werden. Die Verwirrung beim Lernenden ist damit aber vorprogrammiert, weil sich die Aussagen für ihn scheinbar widersprechen.
aaalso ... zunächst mal wie hast Du denn die Tastenabfrage gemacht ... einfach in der Mainloop ein if pinx.y = 0 then oder etwas feinsinniger evtl. in einem Timer? Timer ist übrigens das Stichwort. Du kannst hin gehen und einfach in einem Timer den Wert Deiner Tastatur zwischenspeichern, beim nächsten Timer interrupt prüfst Du, ob der gespeciherte Wert gleich dem aktuellen ist, ist er das so zählst Du eine Variable hoch. Ab einem bestimmten Wert der Variable kannst Du die Taste als gedrückt ansehen, da hast Du gleich Deine Entprellung, bei Überlauf der Variable ist die Taste dauerhaft gedrückt, also ein langer Tastendruck. Zur Abfrage ob die gleiche taste mehrmals gedrückt wurde machst Du das ähnlich. Tastenwert zwischenspeichern, bei nächstem Tastendruck vergleichen ob identisch, wenn ja, dann Buchstabe 1 hoch zählen, wenn nicht, dann nächster Buchstabe ... Hilfreich in dem Zusammenhang in Bascom sind die Overlayvariablen, einfach nen String anlegen, n Bytearray overlay und dann den Pointer hoch laufen lassen
Erstmal an alle, es tut mir leid wenn ich durch das Chrossposten jemanden verärgert habe, das wollte ich nicht. So wie ihr mir das beschrieben habt, leuchtet das natürlich ein und ich wollte hier niemanden unfair behandeln oder verärgern. Ich bitte daher um Entschuldigung bei allen, und werde dies auch nicht mehr so machen. Vielen dank auch für die Hinweise. @ Weinbauer Die Tastenabfrage ist momentan mit der Bascom Routine GeTKBD realisiert. Eingabe = Getkbd() If Eingabe <> 16 Then Select Case Eingabe Case 0 Code = Code + "3" Case 1 Code = Code + "2" Case 2 Code = Code + "1" usw. Das hört sich alles sehr kompliziert an, ich werde es mal so testen und versuchen wie du es mir erklärt hast. Da ich momentan noch nicht wirklich alles verstehe. Aber ich werd da schon dahinter kommen :-)
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.