Zum Hauptinhalt springen

Die Tasten auslesen

Was dieses Beispiel zeigt​

Alle 16 Pads werden alle 50 ms ausgelesen und als 4x4-Karte in der Shell ausgegeben: X für ein gedrücktes Pad, . für ein losgelassenes. Die LEDs bleiben aus.

Der Beispielcode​

Dies ist Examples/ReadButtons.py aus dem festgelegten Modul, unverändert. Speichern Sie es auf Ihrem Board und führen Sie es aus.

# FILE: ReadButtons.py
# AUTHOR: Josip Šimun Kuči @ Soldered
# BRIEF: Example showing how to read all 16 buttons on the Inputronic GRID.
# Reads all 16 button states every 50 ms and prints a 4x4 grid map.
# Pressed buttons show 'X'; released buttons show '.'.
# WORKS WITH: Inputronic GRID: www.soldered.com
# LAST UPDATED: 2026-05-12

from machine import I2C, Pin
from InputronicGrid import InputronicGrid
import time

# If you aren't using the Qwiic connector, manually enter your I2C pins:
# i2c = I2C(0, scl=Pin(22), sda=Pin(21))
# grid = InputronicGrid(i2c=i2c)

grid = InputronicGrid()

print("Inputronic GRID ready.\n")
grid.clearLEDs()

while True:
print("+---------+")
for row in range(4):
print("| ", end="")
for col in range(4):
print("X " if grid.readPad(row, col) else ". ", end="")
print("|")
print("+---------+\n")

time.sleep_ms(50)

🔗Vollständiges Beispiel öffnen

Examples/ReadButtons.py im Commit 36d3def

→

Erwartetes Ergebnis, wenn nichts gedrückt ist:

ShellMicroPython
Inputronic GRID ready.

+---------+
| . . . . |
| . . . . |
| . . . . |
| . . . . |
+---------+

Nach jeweils 50 ms folgt eine neue Karte. Solange Sie ein Pad gedrückt halten, steht ein X anstelle des .: Die oberste Zeile der Karte ist Zeile 0 und das erste Zeichen in einer Zeile ist Spalte 0.

Verwendete Funktionen​

InputronicGrid(i2c=None, address=INPUTRONIC_GRID_DEFAULT_ADDR)returns InputronicGrid

Erzeugt das Driver-Objekt und prüft, ob das Board antwortet. Wenn i2c auf None bleibt, erzeugt es I2C(0, scl=Pin(22), sda=Pin(21)) an den Ports, die das Modul erkennt (ESP32, ESP8266 und ein Soldered-Board), und löst bei einem nicht erkannten Port eine Ausnahme aus.

ReturnsDas Driver-Objekt. Löst eine Ausnahme mit 'Inputronic GRID not found. Check wiring.' aus, wenn das Board nicht antwortet.

Parameter

TypNameBeschreibung
I2Ci2cEin fertiges machine.I2C-Objekt. Optional.
intaddressI2C-Adresse des Boards. Optional, standardmäßig 0x30.
grid.clearLEDs()returns None

Schaltet alle 16 LEDs aus. Entspricht setAllLEDs(0, 0, 0).

ReturnsNichts.

grid.readPad(row, col)returns bool

Fragt das Board, ob ein Pad gerade gedrückt ist, anhand seiner Position im Raster. Jeder Aufruf sendet dem Board eine kurze I2C-Anfrage und liest seine Antwort von einem Byte.

ReturnsTrue, solange das Pad gedrückt ist. False, wenn es nicht gedrückt ist oder wenn der I2C-Austausch fehlschlägt.

Parameter

TypNameBeschreibung
introwZeile, 0 bis 3, von oben nach unten.
intcolSpalte, 0 bis 3, von links nach rechts.

Alles zusammengesetzt​

Das Beispiel erzeugt das Objekt, gibt seine Bereitschaftszeile aus und schaltet die LEDs aus. Jeder Schleifendurchlauf ruft readPad() einmal für jede Zeile und Spalte auf und gibt das Ergebnis als eine Zeile pro Reihe aus.

Um alle 16 Pads mit einer einzigen Anfrage und Antwort statt mit sechzehn auszulesen, hat das Modul außerdem readAllPads(). Die Funktion gibt eine 16-Bit-Zahl zurück, in der für jedes gedrückte Pad das Bit row * 4 + col gesetzt ist. Kein Beispiel verwendet sie bei diesem Commit.