Donnerstag, 18. Juni 2015

T9 Tastatur für den Arduino bauen

In diesem Post erkläre ich, wie man eine Tastatur für den Arduino mit normalen Buttons auf einem Breadboard baut. Dadurch kann man dann Texte für alle möglichen Anwendungen eingeben, ohne einen PC zu benötigen.

Die Funktionsweise der Tastatur

Da man normalerweise Texte oder Eingaben nur braucht, wenn man sie weiterverarbeitet, war es mein Ziel so wenige Pins wie möglich zu verwenden. Deshalb verwende ich die analog Eingänge des Arduino, da diese nicht so universell einsetzbar sind, wie die digital Pins. Deshalb besitzt die Tastatur 6 Buttons für die Buchstabenauswahl. Ich verwende dasselbe Prinzip, wie die T9 Tastaturen aber nur mit 6 Buttons(die Tastaturen an alten Handys). Wenn man also auf den ersten Button drückt erhält man erst ein A, dann ein B, ein C und ein D. Durch diese Aufteilung kann ich alle Buchstaben mit nur 6 Buttons eintippen. Um das Eingetippte zu sehen, verwende ich ein LCD Display. Zusätzlich benötigt die Tastatur zwei Potentiometer. Das Eine, um das Display zu leeren, und das Andere, um einzelne Zeichen zu löschen.

Die Verkabelung 

Wie gesagt, verwende ich für die Buttons die analogen Eingänge. Das bedeutet die Beine des Buttons werden an den Ground und an den analogen Eingang angeschlossen. Wenn ihr genau wissen wollt, wie man Buttons ansteuert, solltet ihr euch meinen Artikel dazu durchlesen. Zusätzlich schließe ich die beiden Potentiometer an zwei digital Pins an. Auch dazu habe ich bereits einen ausführlichen Artikel geschreiben. Kurzform: Ground, Data, 5V. Das LCD Display muss auch an die digital Pins angeschlossen werden, ausführlicher Artikel dazu. Insgesamt sind die Buttons an den analogen Eingängen 0 bis 6, die Potentiometer an Pin 6 und 7 und das LCD Display an Pin 0 bis 5. Wichtig ist: Natürlich könnt ihr das Programm anpassen. Ihr könnt jedoch nicht die digital Pins 0 und 1 verwenden und gleichzeitig eine serielle Verbindung "unterhalten", da diese Pin 0 und 1 verwendet und sich dann mit eurem Programm stört. Ihr müsst euch also für eine Möglichkeit entscheiden: serielle Verbindung oder Pin 0 und 1 fürs Programm.

Der Sketch

Im Sketch wird laufen überprüft, ob ein Button gedrückt ist, wenn ja werden im Array pressed die Zeichen des Buttons gespeichert (z.B. 0 = A, 1 = B, 2 = C, 3 = D). Dann wird überprüft, ob das letzte Zeichen vom selben Button ist, also man das zweite oder dritte Zeichen eines Buttons will. Ist dem so und, wenn die vergangene Zeit unter 2 Sekunden ist, wird das zweite, dritte oder vierte Zeichen auf dem Display aktualisiert, indem man den Cursor mit lcd.setCursor auf exakt die gleiche Position setzt und dann das Zeichen schreibt. Wenn das Zeichen von einem anderen Button war, wird einfach das Zeichen auf dem nächsten Displayfeld ausgegeben. Abschließend wird noch überprüft, ob eines der Potentiometers aufgedreht wurde. Wenn das erste auf an gestellt ist, wird das aktuelle Zeichen durch eine Leerzeichen ersetzt und die Variable erase auf 1 gesetzt. Dadurch wird beim nächsten Zeichen nicht die Position vorgestzt, wodurch man das Leerzeichen durch einen Buchstaben ersetzt, und insgesamt die Buchstaben austauscht. Falls das zweite Potentiometer auf an ist, wird die Funktion lcd.clear() aufgerufen, wodurch alle Zeichen auf dem Display gelöscht werden. Der gesamte Sketch sieht dann so aus:


Das ist eine gute Möglichkeit, um mit einem autonomen Arduino zu kommunizieren. Durch den EEPROM könnte man einen Text auch speichern und ein anderes Mal wieder aufrufen. Man kann sich mit dem Arduino also einen "kleinen PC" bauen.

Keine Kommentare:

Kommentar veröffentlichen