
Bluetooth Enabled Keyboard/Synthesizer for mbed
Dependencies: mbed 4DGL-uLCD-SE SDFileSystem mbed-rtos
main.cpp@1:830a669cacbe, 2016-04-15 (annotated)
- Committer:
- Jake867
- Date:
- Fri Apr 15 21:17:15 2016 +0000
- Revision:
- 1:830a669cacbe
- Parent:
- 0:48311ffdfa96
- Child:
- 2:f06ba516b1ad
Test Commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jmpin | 0:48311ffdfa96 | 1 | #include "mbed.h" |
jmpin | 0:48311ffdfa96 | 2 | Serial Blue(p28,p27); |
jmpin | 0:48311ffdfa96 | 3 | Serial PC(USBTX,USBRX); |
jmpin | 0:48311ffdfa96 | 4 | DigitalOut myled(LED1); |
jmpin | 0:48311ffdfa96 | 5 | DigitalOut myled4(LED4); |
Jake867 | 1:830a669cacbe | 6 | //Test |
jmpin | 0:48311ffdfa96 | 7 | //global variables for main and interrupt routine |
jmpin | 0:48311ffdfa96 | 8 | volatile bool readyFlag = true; |
jmpin | 0:48311ffdfa96 | 9 | volatile int bnum = 0; |
jmpin | 0:48311ffdfa96 | 10 | volatile int bhit ; |
jmpin | 0:48311ffdfa96 | 11 | volatile char keyPress; |
jmpin | 0:48311ffdfa96 | 12 | //state used to remember previous characters read in a button message |
jmpin | 0:48311ffdfa96 | 13 | enum statetype {start = 0, got_exclm, got_B, got_num, got_hit}; |
jmpin | 0:48311ffdfa96 | 14 | statetype state = start; |
jmpin | 0:48311ffdfa96 | 15 | //Interrupt routine to parse message with one new character per serial RX interrupt |
jmpin | 0:48311ffdfa96 | 16 | void parse_message() |
jmpin | 0:48311ffdfa96 | 17 | { |
jmpin | 0:48311ffdfa96 | 18 | keyPress = Blue.getc(); |
jmpin | 0:48311ffdfa96 | 19 | PC.putc(keyPress); |
jmpin | 0:48311ffdfa96 | 20 | readyFlag = true; |
jmpin | 0:48311ffdfa96 | 21 | PC.printf("\n\r Value of readyFlag is: %i",readyFlag); |
jmpin | 0:48311ffdfa96 | 22 | |
jmpin | 0:48311ffdfa96 | 23 | //PC.printf("Value of keyPress is: %c\n\r",keyPress); |
jmpin | 0:48311ffdfa96 | 24 | } |
jmpin | 0:48311ffdfa96 | 25 | |
jmpin | 0:48311ffdfa96 | 26 | int main() |
jmpin | 0:48311ffdfa96 | 27 | { |
jmpin | 0:48311ffdfa96 | 28 | //attach interrupt function for each new Bluetooth serial character |
jmpin | 0:48311ffdfa96 | 29 | Blue.attach(&parse_message,Serial::RxIrq); |
jmpin | 0:48311ffdfa96 | 30 | while(1) { |
jmpin | 0:48311ffdfa96 | 31 | //check for a new button message ready |
jmpin | 0:48311ffdfa96 | 32 | if((keyPress=='Z') && (readyFlag))// button Z pressed |
jmpin | 0:48311ffdfa96 | 33 | { |
jmpin | 0:48311ffdfa96 | 34 | PC.printf("Got an Z"); |
jmpin | 0:48311ffdfa96 | 35 | readyFlag = false; |
jmpin | 0:48311ffdfa96 | 36 | // Play note that corresponds to Z |
jmpin | 0:48311ffdfa96 | 37 | } |
jmpin | 0:48311ffdfa96 | 38 | else if((keyPress =='X') && (readyFlag)) // button X pressed |
jmpin | 0:48311ffdfa96 | 39 | { |
jmpin | 0:48311ffdfa96 | 40 | PC.printf("Got an X"); |
jmpin | 0:48311ffdfa96 | 41 | // Play note that corresponds to X |
jmpin | 0:48311ffdfa96 | 42 | } |
jmpin | 0:48311ffdfa96 | 43 | else if((keyPress =='C' && (readyFlag)){} // button C pressed |
jmpin | 0:48311ffdfa96 | 44 | // Play note that corresponds to C |
jmpin | 0:48311ffdfa96 | 45 | else if((keyPress =='V') && (readyFlag)){} // button V pressed |
jmpin | 0:48311ffdfa96 | 46 | // Play note that corresponds to V |
jmpin | 0:48311ffdfa96 | 47 | else if((keyPress =='B') && (readyFlag)){} // button B pressed |
jmpin | 0:48311ffdfa96 | 48 | // Play note that corresponds to B |
jmpin | 0:48311ffdfa96 | 49 | else if((keyPress =='N') && (readyFlag)){} // button N pressed |
jmpin | 0:48311ffdfa96 | 50 | // Play note that corresponds to N |
jmpin | 0:48311ffdfa96 | 51 | else if((keyPress =='M') && (readyFlag)){} // button M pressed |
jmpin | 0:48311ffdfa96 | 52 | // Play note that corresponds to M |
jmpin | 0:48311ffdfa96 | 53 | else if((keyPress =='O') && (readyFlag)){} // button O pressed |
jmpin | 0:48311ffdfa96 | 54 | // Lower an octave |
jmpin | 0:48311ffdfa96 | 55 | else if((keyPress =='L') && (readyFlag)){} // button L pressed |
jmpin | 0:48311ffdfa96 | 56 | // Raise an octave |
jmpin | 0:48311ffdfa96 | 57 | else if((keyPress =='Q') && (readyFlag)){} // button Q pressed |
jmpin | 0:48311ffdfa96 | 58 | // Raise Attack Value |
jmpin | 0:48311ffdfa96 | 59 | else if((keyPress =='A') && (readyFlag)){} // button A pressed |
jmpin | 0:48311ffdfa96 | 60 | // Lower Attack Value |
jmpin | 0:48311ffdfa96 | 61 | else if((keyPress =='W') && (readyFlag)){} // button W pressed |
jmpin | 0:48311ffdfa96 | 62 | // Raise Delay Value |
jmpin | 0:48311ffdfa96 | 63 | else if((keyPress =='S') && (readyFlag)){} // button S pressed |
jmpin | 0:48311ffdfa96 | 64 | // Lower Delay Value |
jmpin | 0:48311ffdfa96 | 65 | else if((keyPress =='E') && (readyFlag)){} // button E pressed |
jmpin | 0:48311ffdfa96 | 66 | // Raise Sustain Value |
jmpin | 0:48311ffdfa96 | 67 | else if((keyPress =='D') && (readyFlag)){} // button D pressed |
jmpin | 0:48311ffdfa96 | 68 | // Lower Sustain Value |
jmpin | 0:48311ffdfa96 | 69 | else if((keyPress =='R') && (readyFlag)){} // button R pressed |
jmpin | 0:48311ffdfa96 | 70 | // Raise Release Value |
jmpin | 0:48311ffdfa96 | 71 | else if((keyPress =='F') && (readyFlag)){} // button F pressed |
jmpin | 0:48311ffdfa96 | 72 | // Lower Release Value |
jmpin | 0:48311ffdfa96 | 73 | } |
jmpin | 0:48311ffdfa96 | 74 | //do other tasks in main - interrupts will process button message characters |
jmpin | 0:48311ffdfa96 | 75 | myled = 1; |
jmpin | 0:48311ffdfa96 | 76 | wait(0.1); |
jmpin | 0:48311ffdfa96 | 77 | myled = 0; |
jmpin | 0:48311ffdfa96 | 78 | wait(0.1); |
jmpin | 0:48311ffdfa96 | 79 | |
jmpin | 0:48311ffdfa96 | 80 | } |