FRDM KL25Z bluetooth controller
Dependencies: ZumoRobotUtilities mbed-rtos mbed
Fork of ZumoRobotBluetoothControlled by
main.cpp@2:53d1b48743a3, 2014-11-02 (annotated)
- Committer:
- catalincraciun7
- Date:
- Sun Nov 02 11:35:22 2014 +0000
- Revision:
- 2:53d1b48743a3
- Parent:
- 1:bac719753a33
- Child:
- 3:83ac04b7ee07
Bluetooth connection done!
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
catalincraciun7 | 1:bac719753a33 | 1 | // Craciun Catalin |
catalincraciun7 | 0:827b012f1913 | 2 | // main.h |
catalincraciun7 | 0:827b012f1913 | 3 | // © 2014 Catalin Craciun |
catalincraciun7 | 0:827b012f1913 | 4 | |
catalincraciun7 | 0:827b012f1913 | 5 | #include "mbed.h" |
catalincraciun7 | 0:827b012f1913 | 6 | #include "ZumoRobotManager.h" |
catalincraciun7 | 0:827b012f1913 | 7 | |
catalincraciun7 | 2:53d1b48743a3 | 8 | using namespace std; |
catalincraciun7 | 2:53d1b48743a3 | 9 | |
catalincraciun7 | 0:827b012f1913 | 10 | #define RGBLED_ON 0 |
catalincraciun7 | 0:827b012f1913 | 11 | #define RGBLED_OFF 1 |
catalincraciun7 | 0:827b012f1913 | 12 | |
catalincraciun7 | 0:827b012f1913 | 13 | DigitalOut LEDRED(LED_RED); |
catalincraciun7 | 0:827b012f1913 | 14 | DigitalOut LEDBLUE(LED_BLUE); |
catalincraciun7 | 0:827b012f1913 | 15 | DigitalOut LEDGREEN(LED_GREEN); |
catalincraciun7 | 0:827b012f1913 | 16 | |
catalincraciun7 | 2:53d1b48743a3 | 17 | ZumoRobotManager *zumoRobotManager; |
catalincraciun7 | 2:53d1b48743a3 | 18 | |
catalincraciun7 | 2:53d1b48743a3 | 19 | Timer inputTimer; |
catalincraciun7 | 2:53d1b48743a3 | 20 | Serial bluetooth(PTC4, PTC3); |
catalincraciun7 | 2:53d1b48743a3 | 21 | |
catalincraciun7 | 2:53d1b48743a3 | 22 | char bluetoothInput[10]; |
catalincraciun7 | 2:53d1b48743a3 | 23 | float velocity; |
catalincraciun7 | 1:bac719753a33 | 24 | |
catalincraciun7 | 0:827b012f1913 | 25 | void update() { |
catalincraciun7 | 2:53d1b48743a3 | 26 | // Updating loop |
catalincraciun7 | 2:53d1b48743a3 | 27 | while (true) { |
catalincraciun7 | 2:53d1b48743a3 | 28 | if (inputTimer.read_ms() >= 10 && bluetooth.readable()) { |
catalincraciun7 | 2:53d1b48743a3 | 29 | inputTimer.reset(); |
catalincraciun7 | 2:53d1b48743a3 | 30 | bluetooth.gets(bluetoothInput, 8); |
catalincraciun7 | 2:53d1b48743a3 | 31 | if ((bluetoothInput[0] == '+' || bluetoothInput[0] == '-') && |
catalincraciun7 | 2:53d1b48743a3 | 32 | (bluetoothInput[1] == '+' || bluetoothInput[1] == '-') && |
catalincraciun7 | 2:53d1b48743a3 | 33 | bluetoothInput[2] >= '0' && bluetoothInput[2] <='9' && |
catalincraciun7 | 2:53d1b48743a3 | 34 | bluetoothInput[3] >= '0' && bluetoothInput[3] <='9') { |
catalincraciun7 | 2:53d1b48743a3 | 35 | /// Got a "velocity descriptor" string |
catalincraciun7 | 2:53d1b48743a3 | 36 | velocity = ((bluetoothInput[2] - '0') * 10.0f + (bluetoothInput[3] - '0') * 1.0f) * 0.01f; |
catalincraciun7 | 2:53d1b48743a3 | 37 | if (bluetoothInput[0] == '-') |
catalincraciun7 | 2:53d1b48743a3 | 38 | velocity = -velocity; |
catalincraciun7 | 2:53d1b48743a3 | 39 | zumoRobotManager -> setVelocityX(velocity); |
catalincraciun7 | 2:53d1b48743a3 | 40 | |
catalincraciun7 | 2:53d1b48743a3 | 41 | velocity = ((bluetoothInput[4] - '0') * 10.0f + (bluetoothInput[5] - '0') * 1.0f) * 0.01f; |
catalincraciun7 | 2:53d1b48743a3 | 42 | if (bluetoothInput[1] == '-') |
catalincraciun7 | 2:53d1b48743a3 | 43 | velocity = -velocity; |
catalincraciun7 | 2:53d1b48743a3 | 44 | zumoRobotManager -> setVelocityY(velocity); |
catalincraciun7 | 2:53d1b48743a3 | 45 | } else if (bluetoothInput[0] == 'c') { |
catalincraciun7 | 2:53d1b48743a3 | 46 | /// Got a "colour descriptor" string |
catalincraciun7 | 2:53d1b48743a3 | 47 | char colour = bluetoothInput[1]; |
catalincraciun7 | 2:53d1b48743a3 | 48 | |
catalincraciun7 | 2:53d1b48743a3 | 49 | if (colour == 'r') { |
catalincraciun7 | 2:53d1b48743a3 | 50 | LEDRED = RGBLED_ON; LEDBLUE = RGBLED_OFF; LEDGREEN = RGBLED_OFF; |
catalincraciun7 | 2:53d1b48743a3 | 51 | } else if (colour == 'g') { |
catalincraciun7 | 2:53d1b48743a3 | 52 | LEDRED = RGBLED_OFF; LEDBLUE = RGBLED_OFF; LEDGREEN = RGBLED_ON; |
catalincraciun7 | 2:53d1b48743a3 | 53 | } else if (colour == 'b') { |
catalincraciun7 | 2:53d1b48743a3 | 54 | LEDRED = RGBLED_OFF; LEDBLUE = RGBLED_ON; LEDGREEN = RGBLED_OFF; |
catalincraciun7 | 2:53d1b48743a3 | 55 | } |
catalincraciun7 | 2:53d1b48743a3 | 56 | } |
catalincraciun7 | 2:53d1b48743a3 | 57 | } |
catalincraciun7 | 2:53d1b48743a3 | 58 | } |
catalincraciun7 | 2:53d1b48743a3 | 59 | } |
catalincraciun7 | 2:53d1b48743a3 | 60 | |
catalincraciun7 | 2:53d1b48743a3 | 61 | void init() { |
catalincraciun7 | 2:53d1b48743a3 | 62 | |
catalincraciun7 | 2:53d1b48743a3 | 63 | // Initialising the controller |
catalincraciun7 | 0:827b012f1913 | 64 | |
catalincraciun7 | 2:53d1b48743a3 | 65 | zumoRobotManager = new ZumoRobotManager(); |
catalincraciun7 | 0:827b012f1913 | 66 | |
catalincraciun7 | 2:53d1b48743a3 | 67 | LEDBLUE = RGBLED_OFF; |
catalincraciun7 | 2:53d1b48743a3 | 68 | LEDRED = RGBLED_OFF; |
catalincraciun7 | 2:53d1b48743a3 | 69 | LEDGREEN = RGBLED_ON; |
catalincraciun7 | 2:53d1b48743a3 | 70 | |
catalincraciun7 | 2:53d1b48743a3 | 71 | bluetooth.baud(9600); |
catalincraciun7 | 2:53d1b48743a3 | 72 | |
catalincraciun7 | 2:53d1b48743a3 | 73 | inputTimer.start(); |
catalincraciun7 | 0:827b012f1913 | 74 | } |
catalincraciun7 | 0:827b012f1913 | 75 | |
catalincraciun7 | 0:827b012f1913 | 76 | int main() { |
catalincraciun7 | 0:827b012f1913 | 77 | |
catalincraciun7 | 0:827b012f1913 | 78 | // Updating loop |
catalincraciun7 | 1:bac719753a33 | 79 | |
catalincraciun7 | 2:53d1b48743a3 | 80 | init(); |
catalincraciun7 | 2:53d1b48743a3 | 81 | update(); |
catalincraciun7 | 0:827b012f1913 | 82 | } |