Zack Johnson
/
PokemonSafari
Code to stream phone data to mbed using Adafruit Bluetooh BLE and app.
main.cpp@0:e9ff18ab0247, 2016-05-02 (annotated)
- Committer:
- zjohnson31
- Date:
- Mon May 02 01:32:43 2016 +0000
- Revision:
- 0:e9ff18ab0247
Final submission;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
zjohnson31 | 0:e9ff18ab0247 | 1 | #include "mbed.h" |
zjohnson31 | 0:e9ff18ab0247 | 2 | #include "USBKeyboard.h" |
zjohnson31 | 0:e9ff18ab0247 | 3 | Serial bluemod(p28,p27); |
zjohnson31 | 0:e9ff18ab0247 | 4 | Serial pc(USBTX, USBRX); |
zjohnson31 | 0:e9ff18ab0247 | 5 | DigitalIn pb1(p20); |
zjohnson31 | 0:e9ff18ab0247 | 6 | DigitalIn pb2(p19); |
zjohnson31 | 0:e9ff18ab0247 | 7 | |
zjohnson31 | 0:e9ff18ab0247 | 8 | //C union can convert 4 chars to a float - puts them in same location in memory |
zjohnson31 | 0:e9ff18ab0247 | 9 | //trick to pack the 4 bytes from Bluetooth serial port back into a 32-bit float |
zjohnson31 | 0:e9ff18ab0247 | 10 | union f_or_char { |
zjohnson31 | 0:e9ff18ab0247 | 11 | float f; |
zjohnson31 | 0:e9ff18ab0247 | 12 | char c[4]; |
zjohnson31 | 0:e9ff18ab0247 | 13 | }; |
zjohnson31 | 0:e9ff18ab0247 | 14 | |
zjohnson31 | 0:e9ff18ab0247 | 15 | char balls[] = {'p', 'r', 'b'}; |
zjohnson31 | 0:e9ff18ab0247 | 16 | char throws = 'n'; |
zjohnson31 | 0:e9ff18ab0247 | 17 | |
zjohnson31 | 0:e9ff18ab0247 | 18 | int main() |
zjohnson31 | 0:e9ff18ab0247 | 19 | { |
zjohnson31 | 0:e9ff18ab0247 | 20 | pb1.mode(PullUp); |
zjohnson31 | 0:e9ff18ab0247 | 21 | pb2.mode(PullUp); |
zjohnson31 | 0:e9ff18ab0247 | 22 | pc.baud(9600); |
zjohnson31 | 0:e9ff18ab0247 | 23 | char bchecksum=0; |
zjohnson31 | 0:e9ff18ab0247 | 24 | char temp=0; |
zjohnson31 | 0:e9ff18ab0247 | 25 | char button = 'n'; |
zjohnson31 | 0:e9ff18ab0247 | 26 | union f_or_char x,y,z,w; |
zjohnson31 | 0:e9ff18ab0247 | 27 | pc.printf("!"); |
zjohnson31 | 0:e9ff18ab0247 | 28 | // while (1) { |
zjohnson31 | 0:e9ff18ab0247 | 29 | // pc.printf("h"); |
zjohnson31 | 0:e9ff18ab0247 | 30 | // pc.printf("%c", bluemod.getc()); |
zjohnson31 | 0:e9ff18ab0247 | 31 | // } |
zjohnson31 | 0:e9ff18ab0247 | 32 | int ball = 0; |
zjohnson31 | 0:e9ff18ab0247 | 33 | while(1) { |
zjohnson31 | 0:e9ff18ab0247 | 34 | bchecksum=0; |
zjohnson31 | 0:e9ff18ab0247 | 35 | if (!pb1) { |
zjohnson31 | 0:e9ff18ab0247 | 36 | throws = 't'; |
zjohnson31 | 0:e9ff18ab0247 | 37 | } |
zjohnson31 | 0:e9ff18ab0247 | 38 | if (!pb2) { |
zjohnson31 | 0:e9ff18ab0247 | 39 | ball = (ball+1) %3; |
zjohnson31 | 0:e9ff18ab0247 | 40 | } |
zjohnson31 | 0:e9ff18ab0247 | 41 | if (bluemod.getc()=='!') { |
zjohnson31 | 0:e9ff18ab0247 | 42 | char bmgc = bluemod.getc(); |
zjohnson31 | 0:e9ff18ab0247 | 43 | if (bmgc =='Q') { //Q data packet |
zjohnson31 | 0:e9ff18ab0247 | 44 | for (int i=0; i<4; i++) { |
zjohnson31 | 0:e9ff18ab0247 | 45 | temp = bluemod.getc(); |
zjohnson31 | 0:e9ff18ab0247 | 46 | x.c[i] = temp; |
zjohnson31 | 0:e9ff18ab0247 | 47 | bchecksum = bchecksum + temp; |
zjohnson31 | 0:e9ff18ab0247 | 48 | }// for |
zjohnson31 | 0:e9ff18ab0247 | 49 | for (int i=0; i<4; i++) { |
zjohnson31 | 0:e9ff18ab0247 | 50 | temp = bluemod.getc(); |
zjohnson31 | 0:e9ff18ab0247 | 51 | y.c[i] = temp; |
zjohnson31 | 0:e9ff18ab0247 | 52 | bchecksum = bchecksum + temp; |
zjohnson31 | 0:e9ff18ab0247 | 53 | }// for |
zjohnson31 | 0:e9ff18ab0247 | 54 | for (int i=0; i<4; i++) { |
zjohnson31 | 0:e9ff18ab0247 | 55 | temp = bluemod.getc(); |
zjohnson31 | 0:e9ff18ab0247 | 56 | z.c[i] = temp; |
zjohnson31 | 0:e9ff18ab0247 | 57 | bchecksum = bchecksum + temp; |
zjohnson31 | 0:e9ff18ab0247 | 58 | }// for |
zjohnson31 | 0:e9ff18ab0247 | 59 | for (int i=0; i<4; i++) { |
zjohnson31 | 0:e9ff18ab0247 | 60 | temp = bluemod.getc(); |
zjohnson31 | 0:e9ff18ab0247 | 61 | w.c[i] = temp; |
zjohnson31 | 0:e9ff18ab0247 | 62 | bchecksum = bchecksum + temp; |
zjohnson31 | 0:e9ff18ab0247 | 63 | }//for |
zjohnson31 | 0:e9ff18ab0247 | 64 | if (bluemod.getc()==char(~('!' + 'Q' + bchecksum))) { //checksum OK? |
zjohnson31 | 0:e9ff18ab0247 | 65 | |
zjohnson31 | 0:e9ff18ab0247 | 66 | pc.printf("%0.3f,", x.f); |
zjohnson31 | 0:e9ff18ab0247 | 67 | pc.printf("%0.3f,", y.f); |
zjohnson31 | 0:e9ff18ab0247 | 68 | pc.printf("%c%c,", throws, balls[ball]); |
zjohnson31 | 0:e9ff18ab0247 | 69 | throws = 'n'; |
zjohnson31 | 0:e9ff18ab0247 | 70 | }//if |
zjohnson31 | 0:e9ff18ab0247 | 71 | }// if |
zjohnson31 | 0:e9ff18ab0247 | 72 | }// if |
zjohnson31 | 0:e9ff18ab0247 | 73 | }// while |
zjohnson31 | 0:e9ff18ab0247 | 74 | }// main |