UIFlow-Eingabe für 16-Tasten mit Extend I/O: Unterschied zwischen den Versionen

Aus Attraktor Wiki

Wechseln zu: Navigation, Suche
(Das Prinzip des Programms)
Zeile 37: Zeile 37:
  
 
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 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.
 +
 +
Nun werde ich zeigen, wie ich dieses Prinzip mit Blockly umgesetzt habe. Zuerst einmal möchte sagen, dass Blockly keine Blöcke zur Bitmanipulation bereitstellt, deshalb wirkt das Programm an einigen Stellen umständlich. Ich will auch nicht behaupten, dass dieses Programm in irgend einer Weise vorbildlich wäre. Es ist nur mein Versuch eine 4x4-Matrix-Tastatur zur Werteeingabe mit dem M5StckC zu benutzen.
  
 
== Das Hauptprogramm und die Codeumwandlung ==
 
== Das Hauptprogramm und die Codeumwandlung ==

Version vom 14. März 2020, 20:01 Uhr

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.

Nun werde ich zeigen, wie ich dieses Prinzip mit Blockly umgesetzt habe. Zuerst einmal möchte sagen, dass Blockly keine Blöcke zur Bitmanipulation bereitstellt, deshalb wirkt das Programm an einigen Stellen umständlich. Ich will auch nicht behaupten, dass dieses Programm in irgend einer Weise vorbildlich wäre. Es ist nur mein Versuch eine 4x4-Matrix-Tastatur zur Werteeingabe mit dem M5StckC zu benutzen.

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