BlueTooth HC-05 module running on a ST-Nucleo-F303K8
Dependents: Nucleo_interf_bluetooth
Work version with the "BT Bot Control" app for Android. Running on a NuCleo-F303K8 and a HC-05 bluetooth module.
HC05.cpp@0:e0c6e95761d2, 2016-02-04 (annotated)
- Committer:
- Kio_Liex
- Date:
- Thu Feb 04 20:18:06 2016 +0000
- Revision:
- 0:e0c6e95761d2
BlueTooth HC-05 module running on a ST-Nucleo-F303K8
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Kio_Liex | 0:e0c6e95761d2 | 1 | #include "mbed.h" |
Kio_Liex | 0:e0c6e95761d2 | 2 | #include "HC05.h" |
Kio_Liex | 0:e0c6e95761d2 | 3 | |
Kio_Liex | 0:e0c6e95761d2 | 4 | HC05::HC05(PinName tx, PinName rx): myBT(tx, rx) |
Kio_Liex | 0:e0c6e95761d2 | 5 | { |
Kio_Liex | 0:e0c6e95761d2 | 6 | myBT.baud(9600); |
Kio_Liex | 0:e0c6e95761d2 | 7 | |
Kio_Liex | 0:e0c6e95761d2 | 8 | index = 0; |
Kio_Liex | 0:e0c6e95761d2 | 9 | |
Kio_Liex | 0:e0c6e95761d2 | 10 | started = false; |
Kio_Liex | 0:e0c6e95761d2 | 11 | ended = false; |
Kio_Liex | 0:e0c6e95761d2 | 12 | } |
Kio_Liex | 0:e0c6e95761d2 | 13 | |
Kio_Liex | 0:e0c6e95761d2 | 14 | void HC05::getValue(int16_t* x, int16_t* y, int16_t* c) |
Kio_Liex | 0:e0c6e95761d2 | 15 | { |
Kio_Liex | 0:e0c6e95761d2 | 16 | if(!myBT.readable()) |
Kio_Liex | 0:e0c6e95761d2 | 17 | { |
Kio_Liex | 0:e0c6e95761d2 | 18 | *x = 0; |
Kio_Liex | 0:e0c6e95761d2 | 19 | *y = 0; |
Kio_Liex | 0:e0c6e95761d2 | 20 | *c = 0; |
Kio_Liex | 0:e0c6e95761d2 | 21 | } |
Kio_Liex | 0:e0c6e95761d2 | 22 | while(myBT.readable()) |
Kio_Liex | 0:e0c6e95761d2 | 23 | { |
Kio_Liex | 0:e0c6e95761d2 | 24 | btChar = myBT.getc(); |
Kio_Liex | 0:e0c6e95761d2 | 25 | |
Kio_Liex | 0:e0c6e95761d2 | 26 | if(btChar == SOP) |
Kio_Liex | 0:e0c6e95761d2 | 27 | { |
Kio_Liex | 0:e0c6e95761d2 | 28 | index = 0; |
Kio_Liex | 0:e0c6e95761d2 | 29 | btData[index] = '\0'; |
Kio_Liex | 0:e0c6e95761d2 | 30 | started = true; |
Kio_Liex | 0:e0c6e95761d2 | 31 | ended = false; |
Kio_Liex | 0:e0c6e95761d2 | 32 | } |
Kio_Liex | 0:e0c6e95761d2 | 33 | else if(btChar == EOP) |
Kio_Liex | 0:e0c6e95761d2 | 34 | { |
Kio_Liex | 0:e0c6e95761d2 | 35 | ended = true; |
Kio_Liex | 0:e0c6e95761d2 | 36 | break; |
Kio_Liex | 0:e0c6e95761d2 | 37 | } |
Kio_Liex | 0:e0c6e95761d2 | 38 | else |
Kio_Liex | 0:e0c6e95761d2 | 39 | { |
Kio_Liex | 0:e0c6e95761d2 | 40 | if(index < 19) |
Kio_Liex | 0:e0c6e95761d2 | 41 | { |
Kio_Liex | 0:e0c6e95761d2 | 42 | btData[index] = btChar; |
Kio_Liex | 0:e0c6e95761d2 | 43 | index++; |
Kio_Liex | 0:e0c6e95761d2 | 44 | btData[index] = '\0'; |
Kio_Liex | 0:e0c6e95761d2 | 45 | } |
Kio_Liex | 0:e0c6e95761d2 | 46 | } |
Kio_Liex | 0:e0c6e95761d2 | 47 | } |
Kio_Liex | 0:e0c6e95761d2 | 48 | |
Kio_Liex | 0:e0c6e95761d2 | 49 | if(started && ended) |
Kio_Liex | 0:e0c6e95761d2 | 50 | { |
Kio_Liex | 0:e0c6e95761d2 | 51 | char *name = strtok(btData, "="); |
Kio_Liex | 0:e0c6e95761d2 | 52 | |
Kio_Liex | 0:e0c6e95761d2 | 53 | while(name) |
Kio_Liex | 0:e0c6e95761d2 | 54 | { |
Kio_Liex | 0:e0c6e95761d2 | 55 | char *valToken = strtok(NULL, ","); |
Kio_Liex | 0:e0c6e95761d2 | 56 | if(valToken) |
Kio_Liex | 0:e0c6e95761d2 | 57 | { |
Kio_Liex | 0:e0c6e95761d2 | 58 | int val = atoi(valToken); |
Kio_Liex | 0:e0c6e95761d2 | 59 | |
Kio_Liex | 0:e0c6e95761d2 | 60 | if(strcmp(name, "X") == 0) |
Kio_Liex | 0:e0c6e95761d2 | 61 | { |
Kio_Liex | 0:e0c6e95761d2 | 62 | *x = val; |
Kio_Liex | 0:e0c6e95761d2 | 63 | } |
Kio_Liex | 0:e0c6e95761d2 | 64 | else if(strcmp(name, "Y") == 0) |
Kio_Liex | 0:e0c6e95761d2 | 65 | { |
Kio_Liex | 0:e0c6e95761d2 | 66 | *y = val; |
Kio_Liex | 0:e0c6e95761d2 | 67 | } |
Kio_Liex | 0:e0c6e95761d2 | 68 | else if(strcmp(name, "C") == 0) |
Kio_Liex | 0:e0c6e95761d2 | 69 | { |
Kio_Liex | 0:e0c6e95761d2 | 70 | *c = val; |
Kio_Liex | 0:e0c6e95761d2 | 71 | } |
Kio_Liex | 0:e0c6e95761d2 | 72 | } |
Kio_Liex | 0:e0c6e95761d2 | 73 | name = strtok(NULL, "="); |
Kio_Liex | 0:e0c6e95761d2 | 74 | } |
Kio_Liex | 0:e0c6e95761d2 | 75 | |
Kio_Liex | 0:e0c6e95761d2 | 76 | // Reset for the next packet |
Kio_Liex | 0:e0c6e95761d2 | 77 | started = false; |
Kio_Liex | 0:e0c6e95761d2 | 78 | ended = false; |
Kio_Liex | 0:e0c6e95761d2 | 79 | index = 0; |
Kio_Liex | 0:e0c6e95761d2 | 80 | btData[index] = '\0'; |
Kio_Liex | 0:e0c6e95761d2 | 81 | } |
Kio_Liex | 0:e0c6e95761d2 | 82 | } |