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

Dependencies:   mbed UniServ

Committer:
obrie829
Date:
Fri May 26 07:40:48 2017 +0000
Revision:
0:eba74e7a229b
Child:
8:351b0b7b05b2
This is the first version committed to team Brobot and should have all header and class files contained within

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 0:eba74e7a229b 8
obrie829 0:eba74e7a229b 9
obrie829 0:eba74e7a229b 10 Brobot::Brobot(PwmOut* left, PwmOut* right, int number)
obrie829 0:eba74e7a229b 11 {
obrie829 0:eba74e7a229b 12 pwmL = left; // set local references to objects
obrie829 0:eba74e7a229b 13 pwmR = right;
obrie829 0:eba74e7a229b 14
obrie829 0:eba74e7a229b 15 this->number = number;
obrie829 0:eba74e7a229b 16 }
obrie829 0:eba74e7a229b 17
obrie829 0:eba74e7a229b 18 // empty constructor
obrie829 0:eba74e7a229b 19 Brobot::Brobot()
obrie829 0:eba74e7a229b 20 {}
obrie829 0:eba74e7a229b 21
obrie829 0:eba74e7a229b 22 void Brobot::rotate( float phi)
obrie829 0:eba74e7a229b 23 {
obrie829 0:eba74e7a229b 24 if(phi>0.5f || phi<-0.5f) {
obrie829 0:eba74e7a229b 25 phi=0;
obrie829 0:eba74e7a229b 26 }
obrie829 0:eba74e7a229b 27
obrie829 0:eba74e7a229b 28 *pwmL = 0.5f + phi;
obrie829 0:eba74e7a229b 29 *pwmR = 0.5f + phi;
obrie829 0:eba74e7a229b 30 }
obrie829 0:eba74e7a229b 31
obrie829 0:eba74e7a229b 32 void Brobot::forward()
obrie829 0:eba74e7a229b 33 {
obrie829 0:eba74e7a229b 34 *pwmL=0.65f; // asterisk is dereferencing the pointer so
obrie829 0:eba74e7a229b 35 *pwmR=0.36f; // you can access the variable at the pointers address
obrie829 0:eba74e7a229b 36 // also another way to dereference the pointer is: pwmR->write(0.xx)
obrie829 0:eba74e7a229b 37 }
obrie829 0:eba74e7a229b 38
obrie829 0:eba74e7a229b 39 void Brobot::slow(float scale)
obrie829 0:eba74e7a229b 40 {
obrie829 0:eba74e7a229b 41 if(scale>0.5f || scale<-0.5f) {
obrie829 0:eba74e7a229b 42 scale=0;
obrie829 0:eba74e7a229b 43 }
obrie829 0:eba74e7a229b 44
obrie829 0:eba74e7a229b 45 *pwmL = *pwmL - scale;
obrie829 0:eba74e7a229b 46 *pwmR = *pwmR + scale;
obrie829 0:eba74e7a229b 47 }
obrie829 0:eba74e7a229b 48
obrie829 0:eba74e7a229b 49 void Brobot::turnleft()
obrie829 0:eba74e7a229b 50 {
obrie829 0:eba74e7a229b 51 *pwmL=0.48f;
obrie829 0:eba74e7a229b 52 *pwmR=0.31f;
obrie829 0:eba74e7a229b 53 wait(0.1);
obrie829 0:eba74e7a229b 54 }
obrie829 0:eba74e7a229b 55
obrie829 0:eba74e7a229b 56 void Brobot::turnright()
obrie829 0:eba74e7a229b 57 {
obrie829 0:eba74e7a229b 58 *pwmL=0.69f;
obrie829 0:eba74e7a229b 59 *pwmR=0.52f;
obrie829 0:eba74e7a229b 60 wait(0.1);
obrie829 0:eba74e7a229b 61 }
obrie829 0:eba74e7a229b 62
obrie829 0:eba74e7a229b 63 void Brobot::back()
obrie829 0:eba74e7a229b 64 {
obrie829 0:eba74e7a229b 65 *pwmR=0.65f;
obrie829 0:eba74e7a229b 66 *pwmL=0.35f;
obrie829 0:eba74e7a229b 67 }
obrie829 0:eba74e7a229b 68
obrie829 0:eba74e7a229b 69 void Brobot::stop()
obrie829 0:eba74e7a229b 70 {
obrie829 0:eba74e7a229b 71 *pwmR=0.5f;
obrie829 0:eba74e7a229b 72 *pwmL=0.5f;
obrie829 0:eba74e7a229b 73 }