Arduino keyboard code editar
Arduino keyboard code editar
uint8_t keyToMidiMap[32];
boolean keyPressed[32];
digitalWrite(latch, LOW);
//Pulls the chips latch low
digitalWrite(latch, HIGH);
//Pulls the latch high displaying the
data
void setup() {
keyToMidiMap[0] = 48;
keyToMidiMap[1] = 41;
keyToMidiMap[2] = 42;
keyToMidiMap[3] = 43;
keyToMidiMap[4] = 44;
keyToMidiMap[5] = 45;
keyToMidiMap[6] = 46;
keyToMidiMap[7] = 47;
keyToMidiMap[8] = 56;
keyToMidiMap[1 + 8] = 49;
keyToMidiMap[2 + 8] = 50;
keyToMidiMap[3 + 8] = 51;
keyToMidiMap[4 + 8] = 52;
keyToMidiMap[5 + 8] = 53;
keyToMidiMap[6 + 8] = 54;
keyToMidiMap[7 + 8] = 55;
keyToMidiMap[16] = 64;
keyToMidiMap[24] = 72;
pinMode(data, OUTPUT);
pinMode(clock, OUTPUT);
pinMode(latch, OUTPUT);
pinMode(row1, INPUT);
pinMode(row2, INPUT);
pinMode(row3, INPUT);
pinMode(row4, INPUT);
Serial.begin(31250);
delay(1000);
void loop() {
scanColumn(bits[col]);
int groupValue1 =
digitalRead(row1);
int groupValue2 =
digitalRead(row2);
int groupValue3 =
digitalRead(row3);
int groupValue4 =
digitalRead(row4);
// process if any
combination of keys pressed
if (groupValue1 != 0 ||
groupValue2 != 0 || groupValue3 != 0
||
groupValue4 != 0) {
if (groupValue1 !=
0 && !keyPressed[col]) {
keyPressed[col] = true;
noteOn(0x91,
keyToMidiMap[col], noteVelocity);
if (groupValue2 !=
0 && !keyPressed[col + 8]) {
keyPressed[col + 8] = true;
noteOn(0x91,
keyToMidiMap[col + 8], noteVelocity);
if (groupValue3 !=
0 && !keyPressed[col + 16]) {
noteOn(0x91,
keyToMidiMap[col + 16], noteVelocity);
if (groupValue4 !=
0 && !keyPressed[col + 24]) {
noteOn(0x91,
keyToMidiMap[col + 24], noteVelocity);
}
// process if any
combination of keys released
if (groupValue1 == 0 &&
keyPressed[col]) {
keyPressed[col] =
false;
noteOn(0x91,
keyToMidiMap[col], 0);
if (groupValue2 == 0 &&
keyPressed[col + 8]) {
keyPressed[col +
8] = false;
noteOn(0x91,
keyToMidiMap[col + 8], 0);
if (groupValue3 == 0 &&
keyPressed[col + 16]) {
keyPressed[col +
16] = false;
noteOn(0x91,
keyToMidiMap[col + 16], 0);
if (groupValue4 == 0 &&
keyPressed[col + 24]) {
keyPressed[col +
24] = false;
noteOn(0x91,
keyToMidiMap[col + 24], 0);
}
}
Serial.write(cmd);
Serial.write(pitch);
Serial.write(velocity);