Code to stream phone data to mbed using Adafruit Bluetooh BLE and app.

Dependencies:   mbed

Committer:
zjohnson31
Date:
Mon May 02 01:32:43 2016 +0000
Revision:
0:e9ff18ab0247
Final submission;

Who changed what in which revision?

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