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

Committer:
Garr12100
Date:
Sun Oct 19 03:00:53 2014 +0000
Revision:
0:ed7c764766cb
MagicianBluetoothRemote;

Who changed what in which revision?

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