Endelig kildekode med rettelser.

Dependencies:   PID mbed

Fork of EndeligKildekode by E2016-S1-Team5

Committer:
kimnielsen
Date:
Thu Dec 15 13:50:26 2016 +0000
Revision:
9:f14532fd7a02
Parent:
7:a852e63cac3d
Endelig kildekode med rettelser.

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 7:a852e63cac3d 50 {
kimnielsen 0:d3dbe632b1a9 51 M1A->write(right); //Set the duty cycle to the wanted percent, from speed variable
kimnielsen 0:d3dbe632b1a9 52 M2A->write(left); // -//-
kimnielsen 0:d3dbe632b1a9 53 *M1B = 0;
kimnielsen 0:d3dbe632b1a9 54 *M2B = 0;
kimnielsen 0:d3dbe632b1a9 55 wait_ms(1);
kimnielsen 0:d3dbe632b1a9 56 }
kimnielsen 0:d3dbe632b1a9 57
kimnielsen 0:d3dbe632b1a9 58 void Wheel::BW()
kimnielsen 0:d3dbe632b1a9 59 {
kimnielsen 0:d3dbe632b1a9 60 bw = 1 - speed;
kimnielsen 0:d3dbe632b1a9 61 M1A->write(bw); //Set the duty cycle to the wanted percent, from speed variable
kimnielsen 0:d3dbe632b1a9 62 M2A->write(bw); // -//-
kimnielsen 0:d3dbe632b1a9 63 *M1B = 1;
kimnielsen 0:d3dbe632b1a9 64 *M2B = 1;
kimnielsen 0:d3dbe632b1a9 65 }
kimnielsen 0:d3dbe632b1a9 66
kimnielsen 0:d3dbe632b1a9 67 void Wheel::right()
kimnielsen 0:d3dbe632b1a9 68 {
kimnielsen 0:d3dbe632b1a9 69 /* M1A->write(0.75f * speed);
kimnielsen 0:d3dbe632b1a9 70 M2A->write(1 - 0.25f * speed);
kimnielsen 0:d3dbe632b1a9 71 *M1B = 0;
kimnielsen 0:d3dbe632b1a9 72 *M2B = 1;
kimnielsen 0:d3dbe632b1a9 73 */
kimnielsen 0:d3dbe632b1a9 74
kimnielsen 0:d3dbe632b1a9 75 M1A->write(speed);
kimnielsen 0:d3dbe632b1a9 76 M2A->write(0.0f);
kimnielsen 0:d3dbe632b1a9 77 *M1B = 0;
kimnielsen 0:d3dbe632b1a9 78 *M2B = 0;
kimnielsen 0:d3dbe632b1a9 79 }
kimnielsen 0:d3dbe632b1a9 80
kimnielsen 0:d3dbe632b1a9 81 void Wheel::left()
kimnielsen 0:d3dbe632b1a9 82 {
kimnielsen 0:d3dbe632b1a9 83 /*
kimnielsen 0:d3dbe632b1a9 84 M1A->write(1 - 0.25f * speed);
kimnielsen 0:d3dbe632b1a9 85 M2A->write(0.75f * speed);
kimnielsen 0:d3dbe632b1a9 86 *M1B = 1;
kimnielsen 0:d3dbe632b1a9 87 *M2B = 0;
kimnielsen 0:d3dbe632b1a9 88 */
kimnielsen 0:d3dbe632b1a9 89 M1A->write(0.0f);
kimnielsen 0:d3dbe632b1a9 90 M2A->write(speed);
kimnielsen 0:d3dbe632b1a9 91 *M1B = 0;
kimnielsen 0:d3dbe632b1a9 92 *M2B = 0;
kimnielsen 0:d3dbe632b1a9 93 }
kimnielsen 0:d3dbe632b1a9 94
kimnielsen 0:d3dbe632b1a9 95 void Wheel::stop()
kimnielsen 0:d3dbe632b1a9 96 {
kimnielsen 0:d3dbe632b1a9 97 M1A->write(0.0f);
kimnielsen 0:d3dbe632b1a9 98 M2A->write(0.0f);
kimnielsen 0:d3dbe632b1a9 99 *M1B = 0;
kimnielsen 0:d3dbe632b1a9 100 *M2B = 0;
kimnielsen 0:d3dbe632b1a9 101 }