Test program for BaseMachineUIController Library
Dependencies: AverageAnalogIn BaseMachineUIController ExioBufferdController MCP23S17 PinDetect RotaryEncoder Sequence SequencerDisplay mbed-rtos mbed st7567LCD AT24C1024
main.cpp@5:7f49c9ca7c04, 2016-11-09 (annotated)
- Committer:
- ryood
- Date:
- Wed Nov 09 10:29:34 2016 +0000
- Revision:
- 5:7f49c9ca7c04
- Parent:
- 4:f79bf2806617
- Child:
- 6:e104230b642c
Test ExioPortB only in main.cpp
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ryood | 0:f3abbd84d67f | 1 | /* |
ryood | 0:f3abbd84d67f | 2 | * main.cpp |
ryood | 0:f3abbd84d67f | 3 | * BaseMachineUIController Test |
ryood | 0:f3abbd84d67f | 4 | * |
ryood | 0:f3abbd84d67f | 5 | * mbed Rev 121 / mbed-rtos Rev 117 |
ryood | 0:f3abbd84d67f | 6 | * |
ryood | 0:f3abbd84d67f | 7 | * 2016.11.06 Created |
ryood | 0:f3abbd84d67f | 8 | * |
ryood | 0:f3abbd84d67f | 9 | */ |
ryood | 0:f3abbd84d67f | 10 | |
ryood | 0:f3abbd84d67f | 11 | #include "mbed.h" |
ryood | 0:f3abbd84d67f | 12 | #include "rtos.h" |
ryood | 0:f3abbd84d67f | 13 | |
ryood | 5:7f49c9ca7c04 | 14 | #define UART_TRACE (0) |
ryood | 0:f3abbd84d67f | 15 | #include "BaseMachineUIController.h" |
ryood | 4:f79bf2806617 | 16 | #include "ExioInBuffer.h" |
ryood | 4:f79bf2806617 | 17 | #include "ExioBufferedDebounceIn.h" |
ryood | 3:97e89dad2a44 | 18 | #include "Sequence.h" |
ryood | 0:f3abbd84d67f | 19 | |
ryood | 2:354ca389e975 | 20 | const int samplingRate = 1; |
ryood | 2:354ca389e975 | 21 | |
ryood | 0:f3abbd84d67f | 22 | BaseMachineUIController UIController; |
ryood | 0:f3abbd84d67f | 23 | |
ryood | 4:f79bf2806617 | 24 | SPI Spi(PC_12, PC_11, PC_10); // SPI3: mosi, miso, sclk |
ryood | 4:f79bf2806617 | 25 | // MExioMcp23s17(int hardwareaddress, SPI& spi, PinName nCs, PinName nReset); |
ryood | 4:f79bf2806617 | 26 | ExioMcp23s17 Exio(0x00, Spi, PD_2, PA_13); |
ryood | 4:f79bf2806617 | 27 | |
ryood | 0:f3abbd84d67f | 28 | uint8_t step = 0; |
ryood | 0:f3abbd84d67f | 29 | int isStepChanged = false; |
ryood | 0:f3abbd84d67f | 30 | bool isRunning = false; |
ryood | 0:f3abbd84d67f | 31 | |
ryood | 2:354ca389e975 | 32 | int bpm = 125; |
ryood | 2:354ca389e975 | 33 | uint32_t tick = 0; |
ryood | 2:354ca389e975 | 34 | int noteLen; |
ryood | 2:354ca389e975 | 35 | |
ryood | 2:354ca389e975 | 36 | void setNoteLen() |
ryood | 2:354ca389e975 | 37 | { |
ryood | 2:354ca389e975 | 38 | noteLen = 15000 / ((long)bpm * samplingRate); |
ryood | 2:354ca389e975 | 39 | } |
ryood | 2:354ca389e975 | 40 | |
ryood | 0:f3abbd84d67f | 41 | void stepUp(void const* args) |
ryood | 0:f3abbd84d67f | 42 | { |
ryood | 2:354ca389e975 | 43 | tick++; |
ryood | 2:354ca389e975 | 44 | if (tick == noteLen) { |
ryood | 2:354ca389e975 | 45 | tick = 0; |
ryood | 2:354ca389e975 | 46 | if (isRunning) { |
ryood | 2:354ca389e975 | 47 | step++; |
ryood | 2:354ca389e975 | 48 | if (step == 16) |
ryood | 2:354ca389e975 | 49 | { |
ryood | 2:354ca389e975 | 50 | step = 0; |
ryood | 2:354ca389e975 | 51 | } |
ryood | 2:354ca389e975 | 52 | UIController.setPlayingStep(step); |
ryood | 0:f3abbd84d67f | 53 | } |
ryood | 0:f3abbd84d67f | 54 | } |
ryood | 0:f3abbd84d67f | 55 | } |
ryood | 0:f3abbd84d67f | 56 | |
ryood | 0:f3abbd84d67f | 57 | int main() |
ryood | 0:f3abbd84d67f | 58 | { |
ryood | 0:f3abbd84d67f | 59 | #if (UART_TRACE) |
ryood | 0:f3abbd84d67f | 60 | printf("*** BaseMachineUIController Test***\r\n"); |
ryood | 0:f3abbd84d67f | 61 | #endif |
ryood | 0:f3abbd84d67f | 62 | |
ryood | 0:f3abbd84d67f | 63 | UIController.init(); |
ryood | 0:f3abbd84d67f | 64 | |
ryood | 4:f79bf2806617 | 65 | // Reset MCP23S17 (初期化時にreset()が必要) |
ryood | 4:f79bf2806617 | 66 | Exio.reset(); |
ryood | 4:f79bf2806617 | 67 | |
ryood | 5:7f49c9ca7c04 | 68 | //ExioInBuffer exioInBufferA(&Exio, ExioPortA); |
ryood | 4:f79bf2806617 | 69 | ExioInBuffer exioInBufferB(&Exio, ExioPortB); |
ryood | 4:f79bf2806617 | 70 | |
ryood | 4:f79bf2806617 | 71 | ExioBufferedDebounceIn inB[] = { |
ryood | 4:f79bf2806617 | 72 | ExioBufferedDebounceIn(&exioInBufferB, 0), |
ryood | 4:f79bf2806617 | 73 | ExioBufferedDebounceIn(&exioInBufferB, 1), |
ryood | 4:f79bf2806617 | 74 | ExioBufferedDebounceIn(&exioInBufferB, 2), |
ryood | 4:f79bf2806617 | 75 | ExioBufferedDebounceIn(&exioInBufferB, 3), |
ryood | 4:f79bf2806617 | 76 | ExioBufferedDebounceIn(&exioInBufferB, 4), |
ryood | 4:f79bf2806617 | 77 | ExioBufferedDebounceIn(&exioInBufferB, 5), |
ryood | 4:f79bf2806617 | 78 | ExioBufferedDebounceIn(&exioInBufferB, 6), |
ryood | 4:f79bf2806617 | 79 | ExioBufferedDebounceIn(&exioInBufferB, 7) |
ryood | 4:f79bf2806617 | 80 | }; |
ryood | 4:f79bf2806617 | 81 | |
ryood | 5:7f49c9ca7c04 | 82 | //exioInBufferA.run(10); |
ryood | 4:f79bf2806617 | 83 | exioInBufferB.run(10); |
ryood | 4:f79bf2806617 | 84 | for (int i = 0; i < 8; i++) { |
ryood | 4:f79bf2806617 | 85 | inB[i].set_debounce_us(10000); |
ryood | 4:f79bf2806617 | 86 | } |
ryood | 4:f79bf2806617 | 87 | |
ryood | 0:f3abbd84d67f | 88 | RtosTimer stepTimer(stepUp, osTimerPeriodic, (void *)0); |
ryood | 2:354ca389e975 | 89 | stepTimer.start(samplingRate); |
ryood | 2:354ca389e975 | 90 | setNoteLen(); |
ryood | 0:f3abbd84d67f | 91 | |
ryood | 0:f3abbd84d67f | 92 | while (true) |
ryood | 0:f3abbd84d67f | 93 | { |
ryood | 0:f3abbd84d67f | 94 | UIController.update(); |
ryood | 0:f3abbd84d67f | 95 | |
ryood | 1:46e088b12083 | 96 | isRunning = UIController.getIsRunning(); |
ryood | 2:354ca389e975 | 97 | bpm = UIController.getBpm(); |
ryood | 2:354ca389e975 | 98 | setNoteLen(); |
ryood | 1:46e088b12083 | 99 | |
ryood | 3:97e89dad2a44 | 100 | Sequence sequences[SEQUENCE_N]; |
ryood | 3:97e89dad2a44 | 101 | UIController.getSequences(&sequences); |
ryood | 3:97e89dad2a44 | 102 | |
ryood | 0:f3abbd84d67f | 103 | OscillatorParam osc; |
ryood | 0:f3abbd84d67f | 104 | UIController.getOscillatorParam(&osc); |
ryood | 0:f3abbd84d67f | 105 | |
ryood | 0:f3abbd84d67f | 106 | FilterParam flt; |
ryood | 0:f3abbd84d67f | 107 | UIController.getFilterParam(&flt); |
ryood | 0:f3abbd84d67f | 108 | |
ryood | 0:f3abbd84d67f | 109 | EnvelopeParam env; |
ryood | 0:f3abbd84d67f | 110 | UIController.getEnvelopeParam(&env); |
ryood | 0:f3abbd84d67f | 111 | |
ryood | 1:46e088b12083 | 112 | int accentLevel = UIController.getAccentLevel(); |
ryood | 0:f3abbd84d67f | 113 | |
ryood | 5:7f49c9ca7c04 | 114 | //uint8_t va = exioInBufferA.readPort(); |
ryood | 4:f79bf2806617 | 115 | |
ryood | 0:f3abbd84d67f | 116 | #if (UART_TRACE) |
ryood | 0:f3abbd84d67f | 117 | printf("%d %d ", osc.waveShape, osc.pulseWidth); |
ryood | 0:f3abbd84d67f | 118 | printf("%d %d ", flt.cutoff, flt.resonance); |
ryood | 0:f3abbd84d67f | 119 | printf("%d %d %d %d %d ", env.level, env.length, env.duration, env.decay, env.sustain); |
ryood | 1:46e088b12083 | 120 | printf("%d %d\r\n", bpm, accentLevel); |
ryood | 3:97e89dad2a44 | 121 | for (int i = 0; i < SEQUENCE_N; i++) { |
ryood | 3:97e89dad2a44 | 122 | printf("%d %d %d %d %d %u\r\n", |
ryood | 3:97e89dad2a44 | 123 | i, |
ryood | 3:97e89dad2a44 | 124 | sequences[i].isNoteOn(), |
ryood | 3:97e89dad2a44 | 125 | sequences[i].getPitch(), |
ryood | 3:97e89dad2a44 | 126 | sequences[i].isTie(), |
ryood | 3:97e89dad2a44 | 127 | sequences[i].isAccent(), |
ryood | 3:97e89dad2a44 | 128 | (sequences[i].getFrequency10()) >> 16 |
ryood | 3:97e89dad2a44 | 129 | ); |
ryood | 3:97e89dad2a44 | 130 | } |
ryood | 5:7f49c9ca7c04 | 131 | #endif |
ryood | 5:7f49c9ca7c04 | 132 | //printf("Exio PortA: %d\r\n", va); |
ryood | 4:f79bf2806617 | 133 | for (int i = 0; i < 8; i++) { |
ryood | 4:f79bf2806617 | 134 | int vb = inB[i].read(); |
ryood | 4:f79bf2806617 | 135 | printf("%d ", vb); |
ryood | 4:f79bf2806617 | 136 | } |
ryood | 4:f79bf2806617 | 137 | printf("\r\n"); |
ryood | 0:f3abbd84d67f | 138 | } |
ryood | 0:f3abbd84d67f | 139 | } |