Kildekode til robot

Dependencies:   mbed

Fork of PRO1 by E2016-S1-Team5

Committer:
kimnielsen
Date:
Mon Oct 31 10:00:46 2016 +0000
Revision:
1:396a582e8861
Parent:
0:d3dbe632b1a9
added double

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kimnielsen 0:d3dbe632b1a9 1 #include "mbed.h"
kimnielsen 0:d3dbe632b1a9 2 #include "hack_motor.h"
kimnielsen 0:d3dbe632b1a9 3 #include "PwmOut.h"
kimnielsen 0:d3dbe632b1a9 4
kimnielsen 0:d3dbe632b1a9 5 Wheel::Wheel(PinName M1A_pin, PinName M1B_pin, PinName M2A_pin, PinName M2B_pin)
kimnielsen 0:d3dbe632b1a9 6 {
kimnielsen 0:d3dbe632b1a9 7 M1A = new PwmOut(M1A_pin);
kimnielsen 0:d3dbe632b1a9 8 M2A = new PwmOut(M2A_pin);
kimnielsen 0:d3dbe632b1a9 9 M1B = new DigitalOut(M1B_pin);
kimnielsen 0:d3dbe632b1a9 10 M2B = new DigitalOut(M2B_pin);
kimnielsen 0:d3dbe632b1a9 11 init();
kimnielsen 0:d3dbe632b1a9 12 }
kimnielsen 0:d3dbe632b1a9 13
kimnielsen 0:d3dbe632b1a9 14 Wheel::~Wheel() // Destructor, cleans up
kimnielsen 0:d3dbe632b1a9 15 {
kimnielsen 0:d3dbe632b1a9 16 delete M1A;
kimnielsen 0:d3dbe632b1a9 17 delete M2A;
kimnielsen 0:d3dbe632b1a9 18 delete M1B;
kimnielsen 0:d3dbe632b1a9 19 delete M2B;
kimnielsen 0:d3dbe632b1a9 20 }
kimnielsen 0:d3dbe632b1a9 21
kimnielsen 0:d3dbe632b1a9 22 void Wheel::init() //Initialize the driver pwm to 50Hz
kimnielsen 0:d3dbe632b1a9 23 {
kimnielsen 0:d3dbe632b1a9 24 M1A->period_ms(20);
kimnielsen 0:d3dbe632b1a9 25 M2A->period_ms(20);
kimnielsen 0:d3dbe632b1a9 26 speed = 0.0;
kimnielsen 0:d3dbe632b1a9 27 }
kimnielsen 0:d3dbe632b1a9 28
kimnielsen 0:d3dbe632b1a9 29 void Wheel::set_speed(float speed)
kimnielsen 0:d3dbe632b1a9 30 {
kimnielsen 0:d3dbe632b1a9 31 this->speed = speed;
kimnielsen 0:d3dbe632b1a9 32 }
kimnielsen 0:d3dbe632b1a9 33
kimnielsen 0:d3dbe632b1a9 34 float Wheel::get_speed()
kimnielsen 0:d3dbe632b1a9 35 {
kimnielsen 0:d3dbe632b1a9 36 return speed;
kimnielsen 0:d3dbe632b1a9 37 }
kimnielsen 0:d3dbe632b1a9 38
kimnielsen 0:d3dbe632b1a9 39 void Wheel::FW()
kimnielsen 0:d3dbe632b1a9 40 {
kimnielsen 0:d3dbe632b1a9 41 fw = speed;
kimnielsen 0:d3dbe632b1a9 42 M1A->write(fw); //Set the duty cycle to the wanted percent, from speed variable
kimnielsen 0:d3dbe632b1a9 43 M2A->write(fw); // -//-
kimnielsen 0:d3dbe632b1a9 44 *M1B = 0;
kimnielsen 0:d3dbe632b1a9 45 *M2B = 0;
kimnielsen 0:d3dbe632b1a9 46 wait_ms(1);
kimnielsen 0:d3dbe632b1a9 47 }
kimnielsen 0:d3dbe632b1a9 48
kimnielsen 0:d3dbe632b1a9 49 void Wheel::FW(float right, float left) // set the actual speed for right, left motor
kimnielsen 0:d3dbe632b1a9 50 {
kimnielsen 0:d3dbe632b1a9 51
kimnielsen 0:d3dbe632b1a9 52 M1A->write(right); //Set the duty cycle to the wanted percent, from speed variable
kimnielsen 0:d3dbe632b1a9 53 M2A->write(left); // -//-
kimnielsen 0:d3dbe632b1a9 54 *M1B = 0;
kimnielsen 0:d3dbe632b1a9 55 *M2B = 0;
kimnielsen 0:d3dbe632b1a9 56 wait_ms(1);
kimnielsen 0:d3dbe632b1a9 57 }
kimnielsen 0:d3dbe632b1a9 58
kimnielsen 0:d3dbe632b1a9 59 void Wheel::BW()
kimnielsen 0:d3dbe632b1a9 60 {
kimnielsen 0:d3dbe632b1a9 61 bw = 1 - speed;
kimnielsen 0:d3dbe632b1a9 62 M1A->write(bw); //Set the duty cycle to the wanted percent, from speed variable
kimnielsen 0:d3dbe632b1a9 63 M2A->write(bw); // -//-
kimnielsen 0:d3dbe632b1a9 64 *M1B = 1;
kimnielsen 0:d3dbe632b1a9 65 *M2B = 1;
kimnielsen 0:d3dbe632b1a9 66 }
kimnielsen 0:d3dbe632b1a9 67
kimnielsen 0:d3dbe632b1a9 68 void Wheel::right()
kimnielsen 0:d3dbe632b1a9 69 {
kimnielsen 0:d3dbe632b1a9 70 /* M1A->write(0.75f * speed);
kimnielsen 0:d3dbe632b1a9 71 M2A->write(1 - 0.25f * speed);
kimnielsen 0:d3dbe632b1a9 72 *M1B = 0;
kimnielsen 0:d3dbe632b1a9 73 *M2B = 1;
kimnielsen 0:d3dbe632b1a9 74 */
kimnielsen 0:d3dbe632b1a9 75
kimnielsen 0:d3dbe632b1a9 76 M1A->write(speed);
kimnielsen 0:d3dbe632b1a9 77 M2A->write(0.0f);
kimnielsen 0:d3dbe632b1a9 78 *M1B = 0;
kimnielsen 0:d3dbe632b1a9 79 *M2B = 0;
kimnielsen 0:d3dbe632b1a9 80 }
kimnielsen 0:d3dbe632b1a9 81
kimnielsen 0:d3dbe632b1a9 82 void Wheel::left()
kimnielsen 0:d3dbe632b1a9 83 {
kimnielsen 0:d3dbe632b1a9 84 /*
kimnielsen 0:d3dbe632b1a9 85 M1A->write(1 - 0.25f * speed);
kimnielsen 0:d3dbe632b1a9 86 M2A->write(0.75f * speed);
kimnielsen 0:d3dbe632b1a9 87 *M1B = 1;
kimnielsen 0:d3dbe632b1a9 88 *M2B = 0;
kimnielsen 0:d3dbe632b1a9 89 */
kimnielsen 0:d3dbe632b1a9 90 M1A->write(0.0f);
kimnielsen 0:d3dbe632b1a9 91 M2A->write(speed);
kimnielsen 0:d3dbe632b1a9 92 *M1B = 0;
kimnielsen 0:d3dbe632b1a9 93 *M2B = 0;
kimnielsen 0:d3dbe632b1a9 94 }
kimnielsen 0:d3dbe632b1a9 95
kimnielsen 0:d3dbe632b1a9 96 void Wheel::stop()
kimnielsen 0:d3dbe632b1a9 97 {
kimnielsen 0:d3dbe632b1a9 98 M1A->write(0.0f);
kimnielsen 0:d3dbe632b1a9 99 M2A->write(0.0f);
kimnielsen 0:d3dbe632b1a9 100 *M1B = 0;
kimnielsen 0:d3dbe632b1a9 101 *M2B = 0;
kimnielsen 0:d3dbe632b1a9 102 }