Railway Challenge
/
challenge-2022Fork
Commented out energgy sotrage code to rever to old state
motor.cpp@39:c36b75a3402e, 15 months ago (annotated)
- Committer:
- as96
- Date:
- Fri Jun 23 17:44:09 2023 +0000
- Revision:
- 39:c36b75a3402e
- Parent:
- 36:5c61710813b3
Energy Change
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rwcjoliver | 0:4788e1df7b55 | 1 | #include <mbed.h> |
rwcjoliver | 0:4788e1df7b55 | 2 | #include "definitions.h" |
rwcjoliver | 0:4788e1df7b55 | 3 | #include "motor.h" |
rwcjoliver | 0:4788e1df7b55 | 4 | |
rwcjoliver | 0:4788e1df7b55 | 5 | Motor::Motor (AnalogOut& motorAccelerator, |
rwcjoliver | 0:4788e1df7b55 | 6 | AnalogOut& motorBrake, |
rwcjoliver | 0:4788e1df7b55 | 7 | DigitalOut& keySwitch, |
rwcjoliver | 0:4788e1df7b55 | 8 | DigitalOut& directionFwd, |
rwcjoliver | 0:4788e1df7b55 | 9 | DigitalOut& directionRev, |
rwcjoliver | 0:4788e1df7b55 | 10 | DigitalOut& footSwitch, |
rwcjoliver | 0:4788e1df7b55 | 11 | DigitalOut& seatSwitch, |
rwcjoliver | 0:4788e1df7b55 | 12 | DigitalOut& inchFwd, |
rwcjoliver | 0:4788e1df7b55 | 13 | DigitalOut& speedLimit2, |
rwcjoliver | 0:4788e1df7b55 | 14 | DigitalOut& speedLimit3) : |
rwcjoliver | 0:4788e1df7b55 | 15 | |
rwcjoliver | 0:4788e1df7b55 | 16 | _motorAccelerator(motorAccelerator), |
rwcjoliver | 0:4788e1df7b55 | 17 | _motorBrake(motorBrake), |
rwcjoliver | 0:4788e1df7b55 | 18 | _keySwitch(keySwitch), |
rwcjoliver | 0:4788e1df7b55 | 19 | _directionFwd(directionFwd), |
rwcjoliver | 0:4788e1df7b55 | 20 | _directionRev(directionRev), |
rwcjoliver | 0:4788e1df7b55 | 21 | _footSwitch(footSwitch), |
rwcjoliver | 0:4788e1df7b55 | 22 | _seatSwitch(seatSwitch), |
rwcjoliver | 0:4788e1df7b55 | 23 | _inchFwd(inchFwd), |
rwcjoliver | 0:4788e1df7b55 | 24 | _speedLimit2(speedLimit2), |
rwcjoliver | 0:4788e1df7b55 | 25 | _speedLimit3(speedLimit3) |
rwcjoliver | 0:4788e1df7b55 | 26 | { |
rwcjoliver | 0:4788e1df7b55 | 27 | _motorAccelerator = 0; |
rwcjoliver | 0:4788e1df7b55 | 28 | _motorBrake = 0; |
rwcjoliver | 0:4788e1df7b55 | 29 | // _contactMtr = 0; |
rwcjoliver | 0:4788e1df7b55 | 30 | _keySwitch = 0; |
rwcjoliver | 0:4788e1df7b55 | 31 | _directionFwd = 0; |
rwcjoliver | 0:4788e1df7b55 | 32 | _directionRev = 0; |
rwcjoliver | 0:4788e1df7b55 | 33 | _footSwitch = 0; |
rwcjoliver | 0:4788e1df7b55 | 34 | _seatSwitch = 0; |
rwcjoliver | 0:4788e1df7b55 | 35 | _inchFwd = 1; |
rwcjoliver | 0:4788e1df7b55 | 36 | _speedLimit2 = 1; |
rwcjoliver | 0:4788e1df7b55 | 37 | _speedLimit3 = 0; // SET MAX SPEED MODE BY DEFAULT |
rwcjoliver | 0:4788e1df7b55 | 38 | } |
rwcjoliver | 0:4788e1df7b55 | 39 | |
rwcjoliver | 0:4788e1df7b55 | 40 | |
as96 | 36:5c61710813b3 | 41 | void Motor::turnOn() |
as96 | 36:5c61710813b3 | 42 | { |
rwcjoliver | 0:4788e1df7b55 | 43 | _keySwitch = 1; |
rwcjoliver | 0:4788e1df7b55 | 44 | // pc.printf("Motor Switched On\r\n"); |
rwcjoliver | 0:4788e1df7b55 | 45 | } |
rwcjoliver | 0:4788e1df7b55 | 46 | |
rwcjoliver | 0:4788e1df7b55 | 47 | void Motor::turnOff() { |
rwcjoliver | 0:4788e1df7b55 | 48 | _keySwitch = 0; |
rwcjoliver | 0:4788e1df7b55 | 49 | // pc.printf("Motor Switched Off\r\n"); |
rwcjoliver | 0:4788e1df7b55 | 50 | } |
rwcjoliver | 0:4788e1df7b55 | 51 | |
as96 | 36:5c61710813b3 | 52 | void Motor::closeDeadman() |
as96 | 36:5c61710813b3 | 53 | { |
rwcjoliver | 0:4788e1df7b55 | 54 | _footSwitch = 1; |
rwcjoliver | 0:4788e1df7b55 | 55 | _seatSwitch = 1; |
rwcjoliver | 0:4788e1df7b55 | 56 | } |
rwcjoliver | 0:4788e1df7b55 | 57 | |
as96 | 36:5c61710813b3 | 58 | void Motor::releaseDeadman() |
as96 | 36:5c61710813b3 | 59 | { |
rwcjoliver | 0:4788e1df7b55 | 60 | _footSwitch = 0; |
rwcjoliver | 0:4788e1df7b55 | 61 | _seatSwitch = 0; |
rwcjoliver | 0:4788e1df7b55 | 62 | } |
rwcjoliver | 0:4788e1df7b55 | 63 | |
as96 | 36:5c61710813b3 | 64 | void Motor::setForward() |
as96 | 36:5c61710813b3 | 65 | { |
rwcjoliver | 0:4788e1df7b55 | 66 | _directionFwd = 1; |
rwcjoliver | 0:4788e1df7b55 | 67 | _directionRev = 0; |
rwcjoliver | 0:4788e1df7b55 | 68 | // pc.printf("Motor Set to Forward\r\n"); |
rwcjoliver | 0:4788e1df7b55 | 69 | } |
rwcjoliver | 0:4788e1df7b55 | 70 | |
as96 | 36:5c61710813b3 | 71 | void Motor::setPark() |
as96 | 36:5c61710813b3 | 72 | { |
rwcjoliver | 0:4788e1df7b55 | 73 | _directionFwd = 0; |
rwcjoliver | 0:4788e1df7b55 | 74 | _directionRev = 0; |
rwcjoliver | 0:4788e1df7b55 | 75 | |
rwcjoliver | 0:4788e1df7b55 | 76 | // pc.printf("Motor Set to Park\r\n"); |
rwcjoliver | 0:4788e1df7b55 | 77 | } |
rwcjoliver | 0:4788e1df7b55 | 78 | |
as96 | 36:5c61710813b3 | 79 | void Motor::setReverse() |
as96 | 36:5c61710813b3 | 80 | { |
rwcjoliver | 0:4788e1df7b55 | 81 | _directionFwd = 0; |
rwcjoliver | 0:4788e1df7b55 | 82 | _directionRev = 1; |
rwcjoliver | 0:4788e1df7b55 | 83 | // pc.printf("Motor Set to Reverse\r\n"); |
rwcjoliver | 0:4788e1df7b55 | 84 | } |
rwcjoliver | 0:4788e1df7b55 | 85 | |
as96 | 36:5c61710813b3 | 86 | void Motor::engage() |
as96 | 36:5c61710813b3 | 87 | { |
rwcjoliver | 0:4788e1df7b55 | 88 | // _contactMtr = 1; |
rwcjoliver | 0:4788e1df7b55 | 89 | // pc.printf("Motor Contactor Engaged\r\n"); |
rwcjoliver | 0:4788e1df7b55 | 90 | } |
rwcjoliver | 0:4788e1df7b55 | 91 | |
as96 | 36:5c61710813b3 | 92 | void Motor::disengage() |
as96 | 36:5c61710813b3 | 93 | { |
as96 | 36:5c61710813b3 | 94 | |
rwcjoliver | 0:4788e1df7b55 | 95 | // _contactMtr = 0; |
rwcjoliver | 0:4788e1df7b55 | 96 | |
rwcjoliver | 0:4788e1df7b55 | 97 | setPark(); |
rwcjoliver | 0:4788e1df7b55 | 98 | |
rwcjoliver | 0:4788e1df7b55 | 99 | // pc.printf("Motor Disengaged\r\n"); |
rwcjoliver | 0:4788e1df7b55 | 100 | } |
rwcjoliver | 0:4788e1df7b55 | 101 | |
as96 | 36:5c61710813b3 | 102 | void Motor::setSpeedMode(int speed) |
as96 | 36:5c61710813b3 | 103 | { |
rwcjoliver | 0:4788e1df7b55 | 104 | switch (speed) { |
rwcjoliver | 0:4788e1df7b55 | 105 | case 0: // Clear limits |
rwcjoliver | 0:4788e1df7b55 | 106 | |
rwcjoliver | 0:4788e1df7b55 | 107 | _inchFwd = 0; |
rwcjoliver | 0:4788e1df7b55 | 108 | _speedLimit2 = 0; |
rwcjoliver | 0:4788e1df7b55 | 109 | _speedLimit3 = 0; |
rwcjoliver | 0:4788e1df7b55 | 110 | |
rwcjoliver | 0:4788e1df7b55 | 111 | // pc.printf("Motor Speed Cleared\r\n"); |
rwcjoliver | 0:4788e1df7b55 | 112 | break; |
rwcjoliver | 0:4788e1df7b55 | 113 | |
rwcjoliver | 0:4788e1df7b55 | 114 | case 1: // Inch Forward |
rwcjoliver | 0:4788e1df7b55 | 115 | |
rwcjoliver | 0:4788e1df7b55 | 116 | _inchFwd = 1; |
rwcjoliver | 0:4788e1df7b55 | 117 | _speedLimit2 = 0; |
rwcjoliver | 0:4788e1df7b55 | 118 | _speedLimit3 = 0; |
rwcjoliver | 0:4788e1df7b55 | 119 | |
rwcjoliver | 0:4788e1df7b55 | 120 | // pc.printf("Motor Set to Inch Forward\r\n"); |
rwcjoliver | 0:4788e1df7b55 | 121 | break; |
rwcjoliver | 0:4788e1df7b55 | 122 | |
rwcjoliver | 0:4788e1df7b55 | 123 | case 2: // Speed 2 |
rwcjoliver | 0:4788e1df7b55 | 124 | |
rwcjoliver | 0:4788e1df7b55 | 125 | _inchFwd = 0; |
rwcjoliver | 0:4788e1df7b55 | 126 | _speedLimit2 = 1; |
rwcjoliver | 0:4788e1df7b55 | 127 | _speedLimit3 = 0; |
rwcjoliver | 0:4788e1df7b55 | 128 | |
rwcjoliver | 0:4788e1df7b55 | 129 | // pc.printf("Motor Set to Speed Limit 2\r\n"); |
rwcjoliver | 0:4788e1df7b55 | 130 | break; |
rwcjoliver | 0:4788e1df7b55 | 131 | |
rwcjoliver | 0:4788e1df7b55 | 132 | case 3: // Speed 3 |
rwcjoliver | 0:4788e1df7b55 | 133 | |
rwcjoliver | 0:4788e1df7b55 | 134 | _inchFwd = 0; |
rwcjoliver | 0:4788e1df7b55 | 135 | _speedLimit2 = 0; |
rwcjoliver | 0:4788e1df7b55 | 136 | _speedLimit3 = 1; |
rwcjoliver | 0:4788e1df7b55 | 137 | |
rwcjoliver | 0:4788e1df7b55 | 138 | // pc.printf("Motor Set to Speed Limit 3\r\n"); |
rwcjoliver | 0:4788e1df7b55 | 139 | break; |
rwcjoliver | 0:4788e1df7b55 | 140 | } |
rwcjoliver | 0:4788e1df7b55 | 141 | } |
rwcjoliver | 0:4788e1df7b55 | 142 | |
as96 | 36:5c61710813b3 | 143 | void Motor::throttle(float throttleRate) |
as96 | 36:5c61710813b3 | 144 | { |
rwcjoliver | 0:4788e1df7b55 | 145 | // set the output voltage of the analog output pin specified as a percentage of Vcc (3.3V) |
rwcjoliver | 0:4788e1df7b55 | 146 | _motorAccelerator = throttleRate; // Analog value between 0.0f and 1.0f |
rwcjoliver | 0:4788e1df7b55 | 147 | // pc.printf("Throttling\r\n"); |
rwcjoliver | 0:4788e1df7b55 | 148 | |
rwcjoliver | 0:4788e1df7b55 | 149 | } |
rwcjoliver | 0:4788e1df7b55 | 150 | |
as96 | 36:5c61710813b3 | 151 | void Motor::brake(float brakeRate) |
as96 | 36:5c61710813b3 | 152 | { |
rwcjoliver | 0:4788e1df7b55 | 153 | _motorBrake = brakeRate; // Analog value between 0.0f and 1.0f |
rwcjoliver | 0:4788e1df7b55 | 154 | // pc.printf("Motor Braking\r\n"); |
rwcjoliver | 0:4788e1df7b55 | 155 | } |