Wenn du mal wieder ein Problem hast beim Umsetzen einer Idee mit dem Arduino, dann frage doch auch mal ChatGPT. Die KI schreibt dir gute Vorlagen. Ich habe mich damals auch mit den Tastenmatrix Zeug geärgert und das Netz nach Vorlagen durchsucht. Es kann doch so einfach sein Behalte das mal im Hinterkopf wenn du wieder vor neuen Herausforderungen stehst. Aber lasse dir nicht gleich eine GO Alternative schreiben
Zitat von Frage
Kannst du mir ein Programm für den Raspberry Pico schreiben, welches eine Tastenmatrix abfragt und dann einen passenden Midi Befehl über USB sendet?
Antwort:
Ja, ich kann Ihnen dabei helfen, ein Programm für den Raspberry Pico zu schreiben, das eine Tastenmatrix abfragt und dann einen passenden MIDI-Befehl über USB sendet.
Hier ist ein Beispielcode, der eine 4x4-Tastenmatrix abfragt und einen MIDI-Note-On-Befehl sendet, wenn eine Taste gedrückt wird:
import machine
import utime
import usb_midi
# Konfiguration der Tastenmatrix
ROWS = [machine.Pin(0), machine.Pin(1), machine.Pin(2), machine.Pin(3)]
COLS = [machine.Pin(4), machine.Pin(5), machine.Pin(6), machine.Pin(7)]
# Definition der Tasten
keys = [
[0, 1, 2, 3],
[4, 5, 6, 7],
[8, 9, 10, 11],
[12, 13, 14, 15]
]
# Initialisierung der Pins
for row in ROWS:
row.init(mode=machine.Pin.OUT, value=1)
for col in COLS:
col.init(mode=machine.Pin.IN, pull=machine.Pin.PULL_DOWN)
# Schleife zum Abfragen der Tastenmatrix
while True:
for row_num, row_pin in enumerate(ROWS):
row_pin.value(0)
for col_num, col_pin in enumerate(COLS):
if col_pin.value() == 1:
# Tastendruck erkannt
note = keys[row_num][col_num]
# MIDI-Note-On-Befehl senden
usb_midi.send(note_on=(0x90, note, 127))
# Warten bis Taste losgelassen wird
while col_pin.value() == 1:
utime.sleep(0.01)
row_pin.value(1)
Alles anzeigen
Dieser Code verwendet die usb_midi
-Bibliothek, um MIDI-Befehle über USB zu senden. Sie müssen sicherstellen, dass Sie diese Bibliothek auf Ihrem Raspberry Pico installiert haben, bevor Sie den Code ausführen.
Beachten Sie auch, dass der obige Code nur einen MIDI-Note-On-Befehl sendet. Wenn Sie andere MIDI-Befehle senden möchten, müssen Sie den Code entsprechend anpassen.