These are the core files for the Robot at Team conception.

Dependencies:   mbed UniServ

Committer:
obrie829
Date:
Mon May 29 13:03:28 2017 +0000
Revision:
8:351b0b7b05b2
Parent:
0:eba74e7a229b
Child:
11:05d5539141c8
Child:
15:4efc66de795a
with speed control

Who changed what in which revision?

UserRevisionLine numberNew contents of line
obrie829 0:eba74e7a229b 1 /*
obrie829 0:eba74e7a229b 2 * BROBOT.cpp
obrie829 0:eba74e7a229b 3 *
obrie829 0:eba74e7a229b 4 */
obrie829 0:eba74e7a229b 5
obrie829 0:eba74e7a229b 6 #include <cmath>
obrie829 0:eba74e7a229b 7 #include "Brobot.h"
obrie829 8:351b0b7b05b2 8 #include "SpeedControl.h"
obrie829 0:eba74e7a229b 9
obrie829 8:351b0b7b05b2 10 SpeedControl speedctrl(PwmOut* pwmLeft, PwmOut* pwmRight, EncoderCounter* counterLeft, EncoderCounter* counterRight);
obrie829 0:eba74e7a229b 11
obrie829 8:351b0b7b05b2 12 Brobot::Brobot(SpeedControl* speedctrl, int number)
obrie829 8:351b0b7b05b2 13 {
obrie829 0:eba74e7a229b 14 this->number = number;
obrie829 8:351b0b7b05b2 15 //this->speedctrl = speedctrl;
obrie829 0:eba74e7a229b 16 }
obrie829 0:eba74e7a229b 17
obrie829 0:eba74e7a229b 18 void Brobot::rotate( float phi)
obrie829 0:eba74e7a229b 19 {
obrie829 0:eba74e7a229b 20 if(phi>0.5f || phi<-0.5f) {
obrie829 0:eba74e7a229b 21 phi=0;
obrie829 0:eba74e7a229b 22 }
obrie829 0:eba74e7a229b 23
obrie829 0:eba74e7a229b 24 *pwmL = 0.5f + phi;
obrie829 0:eba74e7a229b 25 *pwmR = 0.5f + phi;
obrie829 0:eba74e7a229b 26 }
obrie829 0:eba74e7a229b 27
obrie829 8:351b0b7b05b2 28 /*
obrie829 8:351b0b7b05b2 29 void Brobot::setWheelSpeeds( float wheelL, float wheelR)
obrie829 8:351b0b7b05b2 30 {
obrie829 8:351b0b7b05b2 31 SpeedCtrl.setDesiredSpeed( wheelL, wheelR);
obrie829 8:351b0b7b05b2 32 }
obrie829 8:351b0b7b05b2 33 */
obrie829 8:351b0b7b05b2 34
obrie829 0:eba74e7a229b 35 void Brobot::forward()
obrie829 0:eba74e7a229b 36 {
obrie829 8:351b0b7b05b2 37 //*pwmL=0.65f; // asterisk is dereferencing the pointer so
obrie829 8:351b0b7b05b2 38 //*pwmR=0.36f; // you can access the variable at the pointers address
obrie829 0:eba74e7a229b 39 // also another way to dereference the pointer is: pwmR->write(0.xx)
obrie829 8:351b0b7b05b2 40 speedctrl->setDesiredSpeed(0.65f, 0.35f);
obrie829 0:eba74e7a229b 41 }
obrie829 0:eba74e7a229b 42
obrie829 0:eba74e7a229b 43 void Brobot::slow(float scale)
obrie829 0:eba74e7a229b 44 {
obrie829 0:eba74e7a229b 45 if(scale>0.5f || scale<-0.5f) {
obrie829 0:eba74e7a229b 46 scale=0;
obrie829 0:eba74e7a229b 47 }
obrie829 0:eba74e7a229b 48
obrie829 0:eba74e7a229b 49 *pwmL = *pwmL - scale;
obrie829 0:eba74e7a229b 50 *pwmR = *pwmR + scale;
obrie829 0:eba74e7a229b 51 }
obrie829 0:eba74e7a229b 52
obrie829 0:eba74e7a229b 53 void Brobot::turnleft()
obrie829 0:eba74e7a229b 54 {
obrie829 8:351b0b7b05b2 55 speedctrl->setDesiredSpeed(0.48f, 0.31f);
obrie829 0:eba74e7a229b 56 wait(0.1);
obrie829 0:eba74e7a229b 57 }
obrie829 0:eba74e7a229b 58
obrie829 0:eba74e7a229b 59 void Brobot::turnright()
obrie829 0:eba74e7a229b 60 {
obrie829 8:351b0b7b05b2 61 speedctrl->setDesiredSpeed(0.69f, 0.52f);
obrie829 0:eba74e7a229b 62 wait(0.1);
obrie829 0:eba74e7a229b 63 }
obrie829 0:eba74e7a229b 64
obrie829 0:eba74e7a229b 65 void Brobot::back()
obrie829 0:eba74e7a229b 66 {
obrie829 8:351b0b7b05b2 67 speedctrl->setDesiredSpeed(0.65f, 0.35f);
obrie829 0:eba74e7a229b 68 }
obrie829 0:eba74e7a229b 69
obrie829 0:eba74e7a229b 70 void Brobot::stop()
obrie829 0:eba74e7a229b 71 {
obrie829 8:351b0b7b05b2 72 speedctrl->setDesiredSpeed(0.5f, 0.5f);
obrie829 0:eba74e7a229b 73 }