
Bluetooth Enabled Keyboard/Synthesizer for mbed
Dependencies: mbed 4DGL-uLCD-SE SDFileSystem mbed-rtos
main.cpp
- Committer:
- jmpin
- Date:
- 2016-04-15
- Revision:
- 0:48311ffdfa96
- Child:
- 1:830a669cacbe
File content as of revision 0:48311ffdfa96:
#include "mbed.h" Serial Blue(p28,p27); Serial PC(USBTX,USBRX); DigitalOut myled(LED1); DigitalOut myled4(LED4); //global variables for main and interrupt routine volatile bool readyFlag = true; volatile int bnum = 0; volatile int bhit ; volatile char keyPress; //state used to remember previous characters read in a button message enum statetype {start = 0, got_exclm, got_B, got_num, got_hit}; statetype state = start; //Interrupt routine to parse message with one new character per serial RX interrupt void parse_message() { keyPress = Blue.getc(); PC.putc(keyPress); readyFlag = true; PC.printf("\n\r Value of readyFlag is: %i",readyFlag); //PC.printf("Value of keyPress is: %c\n\r",keyPress); } int main() { //attach interrupt function for each new Bluetooth serial character Blue.attach(&parse_message,Serial::RxIrq); while(1) { //check for a new button message ready if((keyPress=='Z') && (readyFlag))// button Z pressed { PC.printf("Got an Z"); readyFlag = false; // Play note that corresponds to Z } else if((keyPress =='X') && (readyFlag)) // button X pressed { PC.printf("Got an X"); // Play note that corresponds to X } else if((keyPress =='C' && (readyFlag)){} // button C pressed // Play note that corresponds to C else if((keyPress =='V') && (readyFlag)){} // button V pressed // Play note that corresponds to V else if((keyPress =='B') && (readyFlag)){} // button B pressed // Play note that corresponds to B else if((keyPress =='N') && (readyFlag)){} // button N pressed // Play note that corresponds to N else if((keyPress =='M') && (readyFlag)){} // button M pressed // Play note that corresponds to M else if((keyPress =='O') && (readyFlag)){} // button O pressed // Lower an octave else if((keyPress =='L') && (readyFlag)){} // button L pressed // Raise an octave else if((keyPress =='Q') && (readyFlag)){} // button Q pressed // Raise Attack Value else if((keyPress =='A') && (readyFlag)){} // button A pressed // Lower Attack Value else if((keyPress =='W') && (readyFlag)){} // button W pressed // Raise Delay Value else if((keyPress =='S') && (readyFlag)){} // button S pressed // Lower Delay Value else if((keyPress =='E') && (readyFlag)){} // button E pressed // Raise Sustain Value else if((keyPress =='D') && (readyFlag)){} // button D pressed // Lower Sustain Value else if((keyPress =='R') && (readyFlag)){} // button R pressed // Raise Release Value else if((keyPress =='F') && (readyFlag)){} // button F pressed // Lower Release Value } //do other tasks in main - interrupts will process button message characters myled = 1; wait(0.1); myled = 0; wait(0.1); }