Bluetooth Enabled Keyboard/Synthesizer for mbed

Dependencies:   mbed 4DGL-uLCD-SE SDFileSystem mbed-rtos

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?

UserRevisionLine numberNew 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 }