Final Version from RoboticHackathon 4.-5. April 2015

Dependencies:   Autopilot dillerdasker Rfid mbed

Fork of RoboticHackathon2 by Mathias Lyngklip

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?

UserRevisionLine numberNew 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 }