Final Version from RoboticHackathon 4.-5. April 2015
Dependencies: Autopilot dillerdasker Rfid mbed
Fork of RoboticHackathon2 by
hack_motor.cpp@4:6a4a59e4e3dd, 2014-04-08 (annotated)
- Committer:
- iLyngklip
- Date:
- Tue Apr 08 19:21:47 2014 +0000
- Revision:
- 4:6a4a59e4e3dd
- Parent:
- 3:9289c1e52ca5
Final Version RoboticHackathon d. 4-5 April 2014
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 | 3:9289c1e52ca5 | 41 | M1A.write(0.75); //Left side forward 75% |
iLyngklip | 3:9289c1e52ca5 | 42 | M2A.write(0.25); //Right side backwards 75% |
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 | 3:9289c1e52ca5 | 49 | M1A.write(0.25); //Right side forward 75% |
iLyngklip | 3:9289c1e52ca5 | 50 | M2A.write(0.75); //Left side backwards 75% |
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 | 2:b996c95912b5 | 104 | void Wheel::venSelv1() // Højre |
iLyngklip | 1:e854d5c12659 | 105 | { |
iLyngklip | 2:b996c95912b5 | 106 | M1A.write(0.7); //Set the duty cycle to the wanted percent, from speed variable |
iLyngklip | 2:b996c95912b5 | 107 | M2A.write(0.0); // -//- |
iLyngklip | 2:b996c95912b5 | 108 | M1B = 0; |
iLyngklip | 2:b996c95912b5 | 109 | M2B = 0; |
iLyngklip | 2:b996c95912b5 | 110 | wait_ms(100); |
iLyngklip | 2:b996c95912b5 | 111 | M2A.write(0.7); |
iLyngklip | 2:b996c95912b5 | 112 | } |
iLyngklip | 2:b996c95912b5 | 113 | void Wheel::venSelv2() // Venstre |
iLyngklip | 2:b996c95912b5 | 114 | { |
iLyngklip | 2:b996c95912b5 | 115 | M1A.write(0.0); //Set the duty cycle to the wanted percent, from speed variable |
iLyngklip | 1:e854d5c12659 | 116 | M2A.write(0.7); // -//- |
iLyngklip | 1:e854d5c12659 | 117 | M1B = 0; |
iLyngklip | 1:e854d5c12659 | 118 | M2B = 0; |
iLyngklip | 2:b996c95912b5 | 119 | wait_ms(100); |
iLyngklip | 2:b996c95912b5 | 120 | M1A.write(0.7); |
iLyngklip | 1:e854d5c12659 | 121 | } |
iLyngklip | 2:b996c95912b5 | 122 | void Wheel::venSelv3() // Skarp højre |
iLyngklip | 1:e854d5c12659 | 123 | { |
iLyngklip | 2:b996c95912b5 | 124 | M1A.write(0.8); |
iLyngklip | 2:b996c95912b5 | 125 | M2A.write(0.8); |
iLyngklip | 2:b996c95912b5 | 126 | wait_ms(25); |
iLyngklip | 1:e854d5c12659 | 127 | M1A.write(0.7); //Set the duty cycle to the wanted percent, from speed variable |
iLyngklip | 2:b996c95912b5 | 128 | M2A.write(0.95); // -//- |
iLyngklip | 1:e854d5c12659 | 129 | M1B = 0; |
iLyngklip | 2:b996c95912b5 | 130 | M2B = 1; |
iLyngklip | 2:b996c95912b5 | 131 | wait_ms(10); |
iLyngklip | 2:b996c95912b5 | 132 | M1A.write(0.0); |
iLyngklip | 2:b996c95912b5 | 133 | } |
iLyngklip | 2:b996c95912b5 | 134 | void Wheel::venSelv4() // Venstre Skarpt |
iLyngklip | 2:b996c95912b5 | 135 | { |
iLyngklip | 2:b996c95912b5 | 136 | M1A.write(0.8); |
iLyngklip | 2:b996c95912b5 | 137 | M2A.write(0.8); |
iLyngklip | 2:b996c95912b5 | 138 | wait_ms(25); |
iLyngklip | 2:b996c95912b5 | 139 | M1A.write(0.95); //Set the duty cycle to the wanted percent, from speed variable |
iLyngklip | 2:b996c95912b5 | 140 | M2A.write(0.7); // -//- |
iLyngklip | 2:b996c95912b5 | 141 | M1B = 1; |
iLyngklip | 1:e854d5c12659 | 142 | M2B = 0; |
iLyngklip | 1:e854d5c12659 | 143 | wait_ms(10); |
iLyngklip | 2:b996c95912b5 | 144 | M1A.write(0.0); |
iLyngklip | 1:e854d5c12659 | 145 | } |