UIFlow-Eingabe für 16-Tasten mit Extend I/O

Aus Attraktor Wiki

Wechseln zu: Navigation, Suche

von Peter (peter@attraktor.org)

Bilder-Prefix: M5-Soft-16T0-...


Diese Seite ist noch im Entstehen.

M5-Soft-16T0-001.png

Dieses Programmungetüm ermöglicht es mit Blockly eine 4x4-Matrix-Tastatur abzufragen. Für die Verbindung zwischen der Tastatur und dem M5StickC dient die Unit Extend I/O.

Die Hardware

M5-Soft-16T0-002.png M5-Soft-16T0-004.png M5-Soft-16T0-005.png

Der Finger bei der Tastatur zeigt auf Pin 1 und der Finger an der Unit auf PIN0. Der Pin 1 der Tastatur wird mit PIN0, Pin 2 mit PIN1 u.s.w. der Unit verbunden.

So sieht mein Versuchsaufbau aus:

M5-Soft-16T0-007.png

Die Zahlen neben der Tastatur geben die PIN Nummern der Unit an mit denen die Reihen und Spalten verbunden sind.

Das Prinzip des Programms

Das Prinzip einer Matrixtastatur und deren Abfrage ist sehr anschaulich in der animierten Grafik von Kai Burghardt / CC BY-SA dargestellt:

FunctionalCircuitDiagramOfKeyboardNumPadScanningProcedure-small

Es wird ein Signal an eine Reihe gelegt und dann nachgesehen an welcher Spalte es wieder herauskommt. Wenn kein Signal herauskommt ist keine Taste gedrückt. Wenn ein Signal herauskommt kann es eindeutig durch die Reihen- und die Spaltennummer einer Taste zugeordnet werden.

Bei einer 4x4-Matrix-Tastatur sind 4 Reihen und 4 Spalten vorhanden. Ich habe die 4 Reihen auf PIN0 - PIN3 und die 4 Spalten auf PIN4 - PIN7 gelegt.

M5-UIF-16T0-010.png

Das Bild aus dem Datenblatt des PCA9554PW zeigt die Beschaltung der PIN's. Q1 legt den Ausgang auf HIGH, Q2 auf LOW. Als Eingang sind Q1 und Q2 gesperrt, so dass der PIN über den 100kOhm Widerstand auf HIGH liegt. Einen Tastendruck können wir also nur mit einem LOW-Signal erkennen. Um eine Reihe zu scannen muss diese auf LOW gelegt werden. Dann wird die Spalte mit der gedrückten Taste auch LOW.

Das Hauptprogramm und die Codeumwandlung

Init_Port

Hole_Taste

Hole_Wert

Ganze Zahlen werden ohne Nachkommastzellen angezeigt. Erst bei Eingabe des Kommas (*) werden auch Nachkommastellen angezeigt. Die Anzahl der Nachkommastellen muss leider fest vorgegeben werden.

Zeige_Display