Hallo zusammen!
Da ich neu hier bin kurz zu mir: Ich komme eigentlich eher aus der DIY-Stompbox Ecke und habe bisher noch nicht so wahnsinnig viel Erfahrungen mit Arduino gesammelt. Für ein paar Midi- und USB Controller hat es bisher gereicht. Überwiegend recht einfache Dinger mit ein paar Schaltern, LEDs und Potis, hier und da jetzt auch schon mal was mit digitalen Potis und zuletzt einen 24-Step CV-Sequencer für meinen Moog.
Ich versuche gerade für mein zukünftiges Modularsystem einen Trigger Sequencer zu bauen und möchte dafür eine Button-Matrix alá Monome usw. verwenden. Dafür habe ich mich für die NeoTrellis Boards von Adafruit entschieden. Mein aktueller Arduino ist ein Nano, USB soll das Teil bisher nicht bekommen.
Mein Problem ist nun, dass ich mit den Beispielen aus der NeoTrellis Library relativ wenig anfangen kann. Ich habe es bisher geschafft die vier Boards für einen 4x16 Sequencer einzurichten, einzelne LEDs an und aus zu schalten und die leere Sequenz zum Laufen zu bringen. Die Farben der einzelnen Buttons bekomme ich auch geändert, aber da hört mein Verständnis der Library leider auch schon auf. Ich würde als nächsten Schritt gerne die "Noten" in den Sequencer eingeben können, scheitere aber daran, die Tasteneingaben der NeoTrellis auszulesen.
Wenn ich es richtig verstehe, werden die keyEvents des NeoTrellis über einen Callback zu Beginn des Sketches ausgelesen. Hierzu die betreffende Codezeile aus dem NeoTrellis Beispiel "basic".
//define a callback for key presses
TrellisCallback blink(keyEvent evt){
if(evt.bit.EDGE == SEESAW_KEYPAD_EDGE_RISING)
trellis.setPixelColor(evt.bit.NUM, 0xFF8700); //on rising
else if(evt.bit.EDGE == SEESAW_KEYPAD_EDGE_FALLING)
trellis.setPixelColor(evt.bit.NUM, 0x080808); //off falling
trellis.show();
return 0;
}
Callbacks sind gerade noch vollkommenes Neuland für mich. Warum steht dieses Callback in den Beispielen noch vor dem void setup()? Warum funktioniert die if-Funktion ohne geschweifte Klammern?
Ich würde gerne verstehen was in diesem Callback genau passiert. Wenn ich z.B. mit Serial.print(keyEvent) versuche mir anzeigen lassen was da passiert, bekomme ich nur Fehlermeldungen.
Vielleicht hat ja jemand bereits Erfahrungen mit diesen Boards und kann mich zumindest in die richtige Richtung schubsen ![]()
//edit
Das habe ich gerade vergessen: Ich habe natürlich schon ein paar Tage zu dem Thema recherchiert, die meiste Dokumentation zu den NeoTrellis ist für CircuitPython, womit ich aktuell nichts anfangen kann. Ansonsten ergeben viele Suchen nur Ergebnisse für die alten monochromen Trellis Boards, die mit einer weitestgehend anderen Library arbeiten. Daher nun meine Frage hier im Forum...