diff --git a/dev/digital/Firmware_TEST/src/FIRMWARE.cpp b/dev/digital/Firmware_TEST/src/FIRMWARE.cpp index 628c314..9015260 100644 --- a/dev/digital/Firmware_TEST/src/FIRMWARE.cpp +++ b/dev/digital/Firmware_TEST/src/FIRMWARE.cpp @@ -216,7 +216,7 @@ void CV::setVoltage(uint8_t cvIndex, Key k) { if(cvIndex >= _nCV) return; if(isNotKey(k)) setVoltage(cvIndex, 0); - setVoltage(cvIndex, _keyToVoltage[_getKeyToVoltageIndex(k)]); + else setVoltage(cvIndex, _keyToVoltage[_getKeyToVoltageIndex(k)]); } void CV::clearAll() diff --git a/dev/digital/Firmware_TEST/src/main.cpp b/dev/digital/Firmware_TEST/src/main.cpp index 56eeda4..5a77097 100644 --- a/dev/digital/Firmware_TEST/src/main.cpp +++ b/dev/digital/Firmware_TEST/src/main.cpp @@ -1,3 +1,6 @@ +/* +* Example Code Two +*/ #include "FIRMWARE_DEF.h" #include "FIRMWARE.h" @@ -33,10 +36,20 @@ void loop() if(n > 0) { Serial.printf("\n\rCurrent queue length: %i", n); + if(n == 1) + { + cv.setVoltage(0, keyboard.getQueue(0)); + cv.setVoltage(1, NOT_A_KEY); + } + else if(n >= 2) + { + cv.setVoltage(0, keyboard.getQueue(0)); + cv.setVoltage(1, keyboard.getQueue(1)); + } + for(int i = 0; (i < N_CV_GATES) && (i < n); i++) { Key k = keyboard.getQueue(i); - cv.setVoltage(i, k); if(isNotKey(k)) Serial.printf("\n\rQueue position %i: NOT A KEY", i); else Serial.printf("\n\rQueue position %i: R%iC%i", i, k.row, k.col); } diff --git a/dev/digital/Firmware_TEST/src/main.cpp.1 b/dev/digital/Firmware_TEST/src/main.cpp.1 new file mode 100644 index 0000000..bf02675 --- /dev/null +++ b/dev/digital/Firmware_TEST/src/main.cpp.1 @@ -0,0 +1,50 @@ +/* +* Example Code One +*/ +#include "FIRMWARE_DEF.h" +#include "FIRMWARE.h" + +static byte pins_keyboard_row[N_KEYBOARD_ROW] = {PIN_K_R0, PIN_K_R1, PIN_K_R2, PIN_K_R3}; +static byte pins_keyboard_col[N_KEYBOARD_COL] = {PIN_K_C0, PIN_K_C1, PIN_K_C2}; + +Keyboard keyboard(N_KEYBOARD_ROW, N_KEYBOARD_COL, pins_keyboard_row, pins_keyboard_col); + +Adafruit_MCP4728 MCP4728; +MCP4728_channel_t cvMap[N_CV_GATES] = {MCP4728_CHANNEL_A, MCP4728_CHANNEL_B}; +uint16_t keyToVoltage[N_KEYBOARD_ROW*N_KEYBOARD_COL] = { + 1*83, 5*83, 9*83, + 2*83, 6*83, 10*83, + 3*83, 7*83, 11*83, + 4*83, 8*83, 12*83 +}; + +CV cv(&MCP4728, &Wire, N_CV_GATES, cvMap, keyToVoltage, N_KEYBOARD_ROW, N_KEYBOARD_COL); + +void setup() +{ + Serial.begin(BAUDRATE); + keyboard.begin(); + cv.begin(PIN_SDA, PIN_SCL); +} + +void loop() +{ + keyboard.update(); + + int n = keyboard.getQueueLength(); + + if(n > 0) + { + Serial.printf("\n\rCurrent queue length: %i", n); + for(int i = 0; (i < N_CV_GATES) && (i < n); i++) + { + Key k = keyboard.getQueue(i); + cv.setVoltage(i, k); + if(isNotKey(k)) Serial.printf("\n\rQueue position %i: NOT A KEY", i); + else Serial.printf("\n\rQueue position %i: R%iC%i", i, k.row, k.col); + } + } + else cv.clearAll(); + + delay(50); +} \ No newline at end of file