This program pairs with an Android app to control the Magician robot via bluetooth. No correction is done to ensure that the motors are equal speeds.
Dependencies: Motordriver mbed
main.cpp@0:ed7c764766cb, 2014-10-19 (annotated)
- Committer:
- Garr12100
- Date:
- Sun Oct 19 03:00:53 2014 +0000
- Revision:
- 0:ed7c764766cb
MagicianBluetoothRemote;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Garr12100 | 0:ed7c764766cb | 1 | #include "mbed.h" |
Garr12100 | 0:ed7c764766cb | 2 | #include "motordriver.h" |
Garr12100 | 0:ed7c764766cb | 3 | |
Garr12100 | 0:ed7c764766cb | 4 | Serial pc(USBTX, USBRX); |
Garr12100 | 0:ed7c764766cb | 5 | Serial device(p9, p10); //Connect JY-MCU bluetooth module to 9,10 |
Garr12100 | 0:ed7c764766cb | 6 | |
Garr12100 | 0:ed7c764766cb | 7 | Motor right(p21, p22, p23, 1); // pwm, fwd, rev, has brake feature |
Garr12100 | 0:ed7c764766cb | 8 | Motor left(p26, p25, p24, 1); |
Garr12100 | 0:ed7c764766cb | 9 | float speed; |
Garr12100 | 0:ed7c764766cb | 10 | |
Garr12100 | 0:ed7c764766cb | 11 | int main() |
Garr12100 | 0:ed7c764766cb | 12 | { |
Garr12100 | 0:ed7c764766cb | 13 | unsigned char Instr;//What button was sent? 1 = forward, 2 = backward |
Garr12100 | 0:ed7c764766cb | 14 | unsigned char sentSpeed; //What is the slider set to? |
Garr12100 | 0:ed7c764766cb | 15 | device.baud(57600); |
Garr12100 | 0:ed7c764766cb | 16 | while(1) { |
Garr12100 | 0:ed7c764766cb | 17 | |
Garr12100 | 0:ed7c764766cb | 18 | |
Garr12100 | 0:ed7c764766cb | 19 | if(device.readable()) { |
Garr12100 | 0:ed7c764766cb | 20 | Instr = device.getc(); |
Garr12100 | 0:ed7c764766cb | 21 | pc.printf("Instruction: %i\n\r", Instr); |
Garr12100 | 0:ed7c764766cb | 22 | wait(.05);//Wait for the next bluetooth value to be recieved. |
Garr12100 | 0:ed7c764766cb | 23 | if(device.readable()){ |
Garr12100 | 0:ed7c764766cb | 24 | sentSpeed = device.getc(); |
Garr12100 | 0:ed7c764766cb | 25 | switch (Instr){ |
Garr12100 | 0:ed7c764766cb | 26 | case 0://Stop |
Garr12100 | 0:ed7c764766cb | 27 | left.speed(0); |
Garr12100 | 0:ed7c764766cb | 28 | right.speed(0); |
Garr12100 | 0:ed7c764766cb | 29 | break; |
Garr12100 | 0:ed7c764766cb | 30 | case 1://Forward |
Garr12100 | 0:ed7c764766cb | 31 | pc.printf("Speed: %i\n\r", sentSpeed); |
Garr12100 | 0:ed7c764766cb | 32 | speed = float(sentSpeed) / 100; |
Garr12100 | 0:ed7c764766cb | 33 | left.speed(speed); |
Garr12100 | 0:ed7c764766cb | 34 | right.speed(speed); |
Garr12100 | 0:ed7c764766cb | 35 | break; |
Garr12100 | 0:ed7c764766cb | 36 | case 2://Reverse |
Garr12100 | 0:ed7c764766cb | 37 | pc.printf("Reverse speed: %i\n\r", sentSpeed); |
Garr12100 | 0:ed7c764766cb | 38 | speed = -float(sentSpeed) / 100; |
Garr12100 | 0:ed7c764766cb | 39 | left.speed(speed); |
Garr12100 | 0:ed7c764766cb | 40 | right.speed(speed); |
Garr12100 | 0:ed7c764766cb | 41 | break; |
Garr12100 | 0:ed7c764766cb | 42 | case 3://Clockwise Turn |
Garr12100 | 0:ed7c764766cb | 43 | speed = float(sentSpeed) / 100; |
Garr12100 | 0:ed7c764766cb | 44 | left.speed(speed); |
Garr12100 | 0:ed7c764766cb | 45 | right.speed(-speed); |
Garr12100 | 0:ed7c764766cb | 46 | break; |
Garr12100 | 0:ed7c764766cb | 47 | case 4://CCW Turn |
Garr12100 | 0:ed7c764766cb | 48 | speed = float(sentSpeed) / 100; |
Garr12100 | 0:ed7c764766cb | 49 | left.speed(-speed); |
Garr12100 | 0:ed7c764766cb | 50 | right.speed(speed); |
Garr12100 | 0:ed7c764766cb | 51 | break; |
Garr12100 | 0:ed7c764766cb | 52 | }//End Switch |
Garr12100 | 0:ed7c764766cb | 53 | |
Garr12100 | 0:ed7c764766cb | 54 | }//End Speed Read |
Garr12100 | 0:ed7c764766cb | 55 | }//End Instruction Read |
Garr12100 | 0:ed7c764766cb | 56 | |
Garr12100 | 0:ed7c764766cb | 57 | |
Garr12100 | 0:ed7c764766cb | 58 | } |
Garr12100 | 0:ed7c764766cb | 59 | } |