Final Version from RoboticHackathon 4.-5. April 2015
Dependencies: Autopilot dillerdasker Rfid mbed
Fork of RoboticHackathon2 by
hack_motor.cpp@1:e854d5c12659, 2014-04-05 (annotated)
- Committer:
- iLyngklip
- Date:
- Sat Apr 05 11:26:42 2014 +0000
- Revision:
- 1:e854d5c12659
- Child:
- 2:b996c95912b5
plz
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
iLyngklip | 1:e854d5c12659 | 1 | #include "mbed.h" |
iLyngklip | 1:e854d5c12659 | 2 | #include "hack_motor.h" |
iLyngklip | 1:e854d5c12659 | 3 | #include "PwmOut.h" |
iLyngklip | 1:e854d5c12659 | 4 | |
iLyngklip | 1:e854d5c12659 | 5 | Wheel::Wheel() : M1A(PTC8), M1B(PTC10), M2A(PTC9), M2B(PTC11), GrabA(PTA5), GrabB(PTC7), HejsA(PTA4), HejsB(PTC5) |
iLyngklip | 1:e854d5c12659 | 6 | { |
iLyngklip | 1:e854d5c12659 | 7 | init(); |
iLyngklip | 1:e854d5c12659 | 8 | } |
iLyngklip | 1:e854d5c12659 | 9 | |
iLyngklip | 1:e854d5c12659 | 10 | |
iLyngklip | 1:e854d5c12659 | 11 | void Wheel::init() //Initialize the driver pwm to 150Hz |
iLyngklip | 1:e854d5c12659 | 12 | { |
iLyngklip | 1:e854d5c12659 | 13 | M1A.period(0.0066); |
iLyngklip | 1:e854d5c12659 | 14 | M2A.period(0.0066); |
iLyngklip | 1:e854d5c12659 | 15 | GrabA.period(0.0066); |
iLyngklip | 1:e854d5c12659 | 16 | HejsA.period(0.0066); |
iLyngklip | 1:e854d5c12659 | 17 | speed = 0.0; |
iLyngklip | 1:e854d5c12659 | 18 | } |
iLyngklip | 1:e854d5c12659 | 19 | |
iLyngklip | 1:e854d5c12659 | 20 | void Wheel::FW() |
iLyngklip | 1:e854d5c12659 | 21 | { |
iLyngklip | 1:e854d5c12659 | 22 | fw = 0.5+(0.5*speed); //forward lies in the upper 50% of the duty cycle |
iLyngklip | 1:e854d5c12659 | 23 | M1A.write(fw); //Set the duty cycle to the wanted percent, from speed variable |
iLyngklip | 1:e854d5c12659 | 24 | M2A.write(fw); // -//- |
iLyngklip | 1:e854d5c12659 | 25 | M1B = 0; |
iLyngklip | 1:e854d5c12659 | 26 | M2B = 0; |
iLyngklip | 1:e854d5c12659 | 27 | wait_ms(1); |
iLyngklip | 1:e854d5c12659 | 28 | } |
iLyngklip | 1:e854d5c12659 | 29 | |
iLyngklip | 1:e854d5c12659 | 30 | void Wheel::BW() |
iLyngklip | 1:e854d5c12659 | 31 | { |
iLyngklip | 1:e854d5c12659 | 32 | bw = 0.5-(0.5*speed); //Backward lies within the lower 50% of the duty cycle |
iLyngklip | 1:e854d5c12659 | 33 | M1A.write(bw); //Set the duty cycle to the wanted percent, from speed variable |
iLyngklip | 1:e854d5c12659 | 34 | M2A.write(bw); // -//- |
iLyngklip | 1:e854d5c12659 | 35 | M1B = 1; |
iLyngklip | 1:e854d5c12659 | 36 | M2B = 1; |
iLyngklip | 1:e854d5c12659 | 37 | } |
iLyngklip | 1:e854d5c12659 | 38 | |
iLyngklip | 1:e854d5c12659 | 39 | void Wheel::right() |
iLyngklip | 1:e854d5c12659 | 40 | { |
iLyngklip | 1:e854d5c12659 | 41 | M1A.write(0.75); //Left side forward 50% |
iLyngklip | 1:e854d5c12659 | 42 | M2A.write(0.25); //Right side backwards 50% |
iLyngklip | 1:e854d5c12659 | 43 | M1B = 0; |
iLyngklip | 1:e854d5c12659 | 44 | M2B = 1; |
iLyngklip | 1:e854d5c12659 | 45 | } |
iLyngklip | 1:e854d5c12659 | 46 | |
iLyngklip | 1:e854d5c12659 | 47 | void Wheel::left() |
iLyngklip | 1:e854d5c12659 | 48 | { |
iLyngklip | 1:e854d5c12659 | 49 | M1A.write(0.25); //Right side forward 50% |
iLyngklip | 1:e854d5c12659 | 50 | M2A.write(0.75); //Left side backwards 50% |
iLyngklip | 1:e854d5c12659 | 51 | M1B = 1; |
iLyngklip | 1:e854d5c12659 | 52 | M2B = 0; |
iLyngklip | 1:e854d5c12659 | 53 | } |
iLyngklip | 1:e854d5c12659 | 54 | |
iLyngklip | 1:e854d5c12659 | 55 | void Wheel::stop() |
iLyngklip | 1:e854d5c12659 | 56 | { |
iLyngklip | 1:e854d5c12659 | 57 | M1A.write(0.0); //Pin A's set low |
iLyngklip | 1:e854d5c12659 | 58 | M2A.write(0.0); |
iLyngklip | 1:e854d5c12659 | 59 | M1B = 0; |
iLyngklip | 1:e854d5c12659 | 60 | M2B = 0; //Pin B's set high |
iLyngklip | 1:e854d5c12659 | 61 | GrabA.write(0.0); |
iLyngklip | 1:e854d5c12659 | 62 | HejsA.write(0.0); |
iLyngklip | 1:e854d5c12659 | 63 | GrabB = 0; |
iLyngklip | 1:e854d5c12659 | 64 | HejsB = 0; |
iLyngklip | 1:e854d5c12659 | 65 | } |
iLyngklip | 1:e854d5c12659 | 66 | |
iLyngklip | 1:e854d5c12659 | 67 | void Wheel::open() |
iLyngklip | 1:e854d5c12659 | 68 | { |
iLyngklip | 1:e854d5c12659 | 69 | GrabA.write(0.3); |
iLyngklip | 1:e854d5c12659 | 70 | GrabB = 1; |
iLyngklip | 1:e854d5c12659 | 71 | wait(0.1); |
iLyngklip | 1:e854d5c12659 | 72 | GrabA.write(0.0); |
iLyngklip | 1:e854d5c12659 | 73 | GrabB = 0; |
iLyngklip | 1:e854d5c12659 | 74 | } |
iLyngklip | 1:e854d5c12659 | 75 | |
iLyngklip | 1:e854d5c12659 | 76 | void Wheel::close() |
iLyngklip | 1:e854d5c12659 | 77 | { |
iLyngklip | 1:e854d5c12659 | 78 | GrabA.write(0.8); |
iLyngklip | 1:e854d5c12659 | 79 | GrabB = 0; |
iLyngklip | 1:e854d5c12659 | 80 | wait(0.1); |
iLyngklip | 1:e854d5c12659 | 81 | GrabA.write(0.0); |
iLyngklip | 1:e854d5c12659 | 82 | GrabB = 0; |
iLyngklip | 1:e854d5c12659 | 83 | } |
iLyngklip | 1:e854d5c12659 | 84 | |
iLyngklip | 1:e854d5c12659 | 85 | void Wheel::hejs() |
iLyngklip | 1:e854d5c12659 | 86 | { |
iLyngklip | 1:e854d5c12659 | 87 | HejsA.write(0.7); |
iLyngklip | 1:e854d5c12659 | 88 | HejsB = 0; |
iLyngklip | 1:e854d5c12659 | 89 | wait(0.1); |
iLyngklip | 1:e854d5c12659 | 90 | HejsA.write(0.0); |
iLyngklip | 1:e854d5c12659 | 91 | HejsB = 0; |
iLyngklip | 1:e854d5c12659 | 92 | |
iLyngklip | 1:e854d5c12659 | 93 | } |
iLyngklip | 1:e854d5c12659 | 94 | |
iLyngklip | 1:e854d5c12659 | 95 | void Wheel::saenk() |
iLyngklip | 1:e854d5c12659 | 96 | { |
iLyngklip | 1:e854d5c12659 | 97 | HejsA.write(0.25); |
iLyngklip | 1:e854d5c12659 | 98 | HejsB = 1; |
iLyngklip | 1:e854d5c12659 | 99 | wait(0.1); |
iLyngklip | 1:e854d5c12659 | 100 | HejsA.write(0.0); |
iLyngklip | 1:e854d5c12659 | 101 | HejsA = 0; |
iLyngklip | 1:e854d5c12659 | 102 | } |
iLyngklip | 1:e854d5c12659 | 103 | |
iLyngklip | 1:e854d5c12659 | 104 | void Wheel::venSelv1() |
iLyngklip | 1:e854d5c12659 | 105 | { |
iLyngklip | 1:e854d5c12659 | 106 | M1A.write(0.9); //Set the duty cycle to the wanted percent, from speed variable |
iLyngklip | 1:e854d5c12659 | 107 | M2A.write(0.7); // -//- |
iLyngklip | 1:e854d5c12659 | 108 | M1B = 0; |
iLyngklip | 1:e854d5c12659 | 109 | M2B = 0; |
iLyngklip | 1:e854d5c12659 | 110 | wait_ms(10); |
iLyngklip | 1:e854d5c12659 | 111 | M2A.write(0.9); |
iLyngklip | 1:e854d5c12659 | 112 | } |
iLyngklip | 1:e854d5c12659 | 113 | void Wheel::venSelv2() |
iLyngklip | 1:e854d5c12659 | 114 | { |
iLyngklip | 1:e854d5c12659 | 115 | M1A.write(0.7); //Set the duty cycle to the wanted percent, from speed variable |
iLyngklip | 1:e854d5c12659 | 116 | M2A.write(0.9); // -//- |
iLyngklip | 1:e854d5c12659 | 117 | M1B = 0; |
iLyngklip | 1:e854d5c12659 | 118 | M2B = 0; |
iLyngklip | 1:e854d5c12659 | 119 | wait_ms(10); |
iLyngklip | 1:e854d5c12659 | 120 | M1A.write(0.9); |
iLyngklip | 1:e854d5c12659 | 121 | } |