Ideen - Werkstatt - Projekte - Basteln - Hausbau

Bau eines MP3-Players mit Grafik-LCD

Tasten am Gehäuse

Allgemeines

Unter dem Display ist Platz für 16 Tasten vorgesehen (0-9 mit alpha-numerischer Doppelbelegung, Vor, Zurück, Select/Menu/Play, Cancel/Pause, Power).

Die Tasten 0-9 sind wie vom Handy bekannt mehrfach mit Buchstaben belegt, so dass damit auf komfortable Weise Interpreten oder Titel ausgewählt werden können.

Folgendes Beispiel soll verdeutlichen, wie auf diese Weise "Elton John" angewählt wird:
  • Ein Druck auf '2' beschränkt die Liste der Interpreten auf Namen, die mit d,e oder f anfangen (siehe Bild). Die Cursor springt zum ersten Eintrag der verbleibenden Liste ('Dave Brubeck').
  • Ein Druck auf '4' (j,k,l) schränkt die Liste weiter ein, auf Namen deren zweiter Buchstabe j,k oder l ist. Der Cursor steht bei 'Dj Bobo'.
  • Ein Druck auf '7' (s,t,u) schränkt die Auswahl weiter ein und der Cursor springt auf 'Elton John'. Voila.
Diese 10 Tasten hatte ich zunächst in einer Reihe angeordnet. Es zeigte sich aber, dass dies einer flüssigen Bedienung entgegenwirkt, da das 'blinde' Auffinden eines Buchstabens bzw. einer Taste, also die Bedienung ohne Tastensuche, erschwert wird. Inzwischen habe ich daraus zwei Zeilen mit je 5 Tasten gemacht, damit lässt sich mit etwas Übung auch ein Titel eingeben wenn die Tasten nicht beschriftet sind.

Aufallend ist auch, dass es keine spezielle Play-Taste gibt. Sie ist ebenfalls mehrfach belegt und dient zunächst zum Anzeigen des Menüs und zur weiteren Auswahl darin.
Inzwischen hat sich jedoch gezeigt, dass eine getrennte Play- und Select-Taste den Bedienungskomfort erhöhen würden: So kann z.B. entschieden werden ob eine Disc oder Playlist komplett abgespielt werden soll (Play-Taste) oder ob eine eine Titelauswahl erscheinen soll (Select-Taste). Ich kann mein System mit mehrfach belegter Play-Taste also nicht weiterempfehlen.

Anschluss der Tasten

Fr den Anschluss der Tasten an den Player habe ich eine alte PS/2 Tastatur recycelt. Oftmals verschwinden Tastaturen auf dem Müll, nur weil eine Taste nicht mehr richtig funktioniert, genau das richtige also für dieses Bastelprojekt. Diese Tastaturen enthalten eine kleine Platine mit vielen Kontakten für die Tasten. Diese Kontakte sind in zwei Gruppen aufgeteilt und wenn ein Kontakt der Gruppe 1 mit einem Kontakt der Gruppe 2 verbunden wird, so interpretiert die Platine dies als einen Tastendruck. Z.B. könnten mit 2x 10 Kontakten bis zu 100 Tasten angeschlossen werden (10x10 Möglichkeiten). Welche Kombination welcher Taste entspricht kann man leicht durch ausprobieren herausfinden.
Tip: Wenn sonst keine Tastatur an den Rechner angeschlossen ist, ist es sinnvoll, die Kontaktkombinationen für die Pfeiltasten (hoch/runter), die Return-Taste und die Ziffern zu finden und entsprechend zu benutzen. Auf diese Weise kann auf Wunsch ein anderes System/Runlevel gebootet werden. Denkbar ist z.B. Runlevel 3 mit einem abgespeckten Kernel und minimal-System für den Mp3Player zu verwenden und Runlevel 5 mit "allem drum und dran" für die Administration. Nachteil dieser Tastenbelegung: Man braucht mehr Kabel um die Taster anzuschließen.
Platine aus PS/2 Tastatur Das Bild rechts zeigt die Platine aus einer alten Tastatur. Das bunte Flachbandkabel ist die Verbindung zu einer zweiten Platine, auf der sich die Drucktaster befinden (z.B. Conrad Best.-Nr. 700460).
Da das verwendete Mainboard nicht nur die übliche PS/2 Tastaturbuchse auf der Rückseite hat, sondern auch eine interne Pfostenleiste, kann man sich so die Rückführung des Kabels in das Innere des Players sparen. Die Pinbelegung der Pfostenleiste ist im Handbuch des Mainboards beschrieben. Man muss lediglich den PS/2 Stecker der ehemaligen Tastatur durch eine 2x2polige Buchsenleiste ersetzen (gibts in jedem Elektronikladen).
Der rückseitige PS/2 Anschluss kann dann allerdings nicht mehr benutzt werden!

Abfrage der Tasten

Die Abfrage der Tasten per Software kann einfacher nicht sein. Ein einfaches cin ist völlig ausreichend; wenn auch Funktionstasten abgefragt werden sollen, muss zuvor allerdings ein entsprechender Aufruf von tcsetattr erfolgen, wie z.B. in dieser C++ Datei.