
Endelig kildekode med rettelser.
Fork of EndeligKildekode by
hack_motor.cpp@9:f14532fd7a02, 2016-12-15 (annotated)
- 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?
User | Revision | Line number | New 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 | } |