Здравствуйте, нужна помощь в доработке скетча матричной клавиатуры.
Я уже сделал МИДИ контроллер на клавиатуре (с дисплеем) для управления DAW, где каждая клавиша МК отправляет свое миди сообщение.
Очень нужен контроллер для смены пресетов на Цифровом Пианино, для этого мне нужно вводить трехзначные цифры и в “кейсах” отправлять требуемые PC команды.
Пример скетча (обрезан для простоты).
#include <MIDI.h>
MIDI_CREATE_DEFAULT_INSTANCE();
#include <Keypad.h>
const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'},
{'*','0','#'}
};
byte rowPins[ROWS] = {5, 4, 3, 2}; //connect to the row pinouts of the kpd
byte colPins[COLS] = {8, 7, 6}; //connect to the column pinouts of the kpd
Keypad kpd = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup()
{
Serial.begin(31250);
MIDI.begin (MIDI_CHANNEL_OMNI);
}
void loop()
{
char key = kpd.getKey();
if (key) // Check for a valid key.
{
switch (key)
{
case '1':
MIDI.sendControlChange(20, 127, 1);
break;
case '2':
MIDI.sendControlChange(21, 127, 1);
break;
case '3':
MIDI.sendControlChange(22, 127, 1);
break;
}
}
}
Нужно что бы после ввода третьего числа, сразу (без подтверждения) срабатывал кейс введенного числа.
Так как количество пресетов ограничено, было бы идеально при вводе числа >256 делать сброс.
P.S. Я уже сделал контроллер на джойстике, но он оказался жутко неудобным (хотя и симпатичным), на МК было бы идеально.
Заранее благодарен.