new battery bar
Dependencies: CAN_IDs CanControl Dashboard PinDetect PowerControl mbed-rtos mbed
main.cpp.orig@28:63ef4790703f, 2017-05-23 (annotated)
- Committer:
- Marrkk_92
- Date:
- Tue May 23 21:40:51 2017 +0000
- Revision:
- 28:63ef4790703f
- Parent:
- 21:0d5e4d19eaab
update for temp bars and comment-out updateThrottleBar
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
zathorix | 21:0d5e4d19eaab | 1 | /******************************************************************************* |
zathorix | 21:0d5e4d19eaab | 2 | This software is especially designed for Solarboat Twente for the use in their Solarboat v1.0 |
zathorix | 21:0d5e4d19eaab | 3 | |
zathorix | 21:0d5e4d19eaab | 4 | Written by: |
zathorix | 21:0d5e4d19eaab | 5 | Niels Leijen, Jesse van Rhijn, Bram Seinhorst |
zathorix | 21:0d5e4d19eaab | 6 | |
zathorix | 21:0d5e4d19eaab | 7 | Thanks to: |
zathorix | 21:0d5e4d19eaab | 8 | Jasper Admiraal, Hidde Pik (hihihihi), Lisa Postma, Heleen Jeurink, Ruben Peters, |
zathorix | 21:0d5e4d19eaab | 9 | Martijn Groot Jebbink, Martijn Wilpshaar, Bram Seinhorst, Robert Geels, Arnoud Meutstege, |
zathorix | 21:0d5e4d19eaab | 10 | Jeroen te Braake, Ids de Vos, Jesse van Rhijn, Sam Benou, Niels Leijen and Mark Bruijn |
zathorix | 21:0d5e4d19eaab | 11 | |
zathorix | 21:0d5e4d19eaab | 12 | DISCLAIMER: |
zathorix | 21:0d5e4d19eaab | 13 | THIS SOFTWARE IS SUPPLIED "AS IS" WITHOUT ANY WARRANTIES AND SUPPORT. |
zathorix | 21:0d5e4d19eaab | 14 | SOLARBOATTWENTE ASSUMES NO RESPONSIBILITY OR LIABILITY FOR THE USE OF THE SOFTWARE. |
zathorix | 21:0d5e4d19eaab | 15 | *******************************************************************************/ |
zathorix | 21:0d5e4d19eaab | 16 | |
zathorix | 21:0d5e4d19eaab | 17 | // uncomment to send debug information |
zathorix | 21:0d5e4d19eaab | 18 | #define DEBUG |
zathorix | 21:0d5e4d19eaab | 19 | |
zathorix | 21:0d5e4d19eaab | 20 | //include 3rd party libraries |
zathorix | 21:0d5e4d19eaab | 21 | #include "mbed.h" //needs to be revision 136 else SD filesystem will not work |
zathorix | 21:0d5e4d19eaab | 22 | #include "rtos.h" |
zathorix | 21:0d5e4d19eaab | 23 | |
zathorix | 21:0d5e4d19eaab | 24 | // include Solarboat libraries |
zathorix | 21:0d5e4d19eaab | 25 | #include "pinout.h" |
zathorix | 21:0d5e4d19eaab | 26 | #include "CAN_IDs.h" |
zathorix | 21:0d5e4d19eaab | 27 | #include "PowerControl.h" |
zathorix | 21:0d5e4d19eaab | 28 | #include "TelemetryAndDaq.h" |
zathorix | 21:0d5e4d19eaab | 29 | #include "Dashboard.h" |
zathorix | 21:0d5e4d19eaab | 30 | |
zathorix | 21:0d5e4d19eaab | 31 | #define SPEED_THRESH 0.02 //threshold for setting speed to prevent CAN spam |
zathorix | 21:0d5e4d19eaab | 32 | |
zathorix | 21:0d5e4d19eaab | 33 | // initialize serial connection for debug |
zathorix | 21:0d5e4d19eaab | 34 | #ifdef DEBUG |
zathorix | 21:0d5e4d19eaab | 35 | RawSerial pc(SERIAL_TX, SERIAL_RX); |
zathorix | 21:0d5e4d19eaab | 36 | #endif |
zathorix | 21:0d5e4d19eaab | 37 | |
zathorix | 21:0d5e4d19eaab | 38 | // initialize canbus |
zathorix | 21:0d5e4d19eaab | 39 | CAN can(CAN_RD, CAN_TD); |
zathorix | 21:0d5e4d19eaab | 40 | |
zathorix | 21:0d5e4d19eaab | 41 | //init throttle |
zathorix | 21:0d5e4d19eaab | 42 | AnalogIn analogThrottle(STEER_THROTTLE); |
zathorix | 21:0d5e4d19eaab | 43 | |
zathorix | 21:0d5e4d19eaab | 44 | //initialize steering wheel buttons |
zathorix | 21:0d5e4d19eaab | 45 | |
zathorix | 21:0d5e4d19eaab | 46 | //NEEDS FIXING!!!!!!!!!!! |
zathorix | 21:0d5e4d19eaab | 47 | DigitalIn menu_button(STEER_MENU); |
zathorix | 21:0d5e4d19eaab | 48 | DigitalIn fly_button(STEER_FLY); |
zathorix | 21:0d5e4d19eaab | 49 | DigitalIn reverse_button(STEER_REV); |
zathorix | 21:0d5e4d19eaab | 50 | |
zathorix | 21:0d5e4d19eaab | 51 | // initialze onboard leds |
zathorix | 21:0d5e4d19eaab | 52 | DigitalOut ledError(LED3); |
zathorix | 21:0d5e4d19eaab | 53 | DigitalOut ledSD(LED1); |
zathorix | 21:0d5e4d19eaab | 54 | DigitalOut ledFona(LED5); |
zathorix | 21:0d5e4d19eaab | 55 | DigitalOut led24V(LED4); |
zathorix | 21:0d5e4d19eaab | 56 | |
zathorix | 21:0d5e4d19eaab | 57 | DigitalOut buckXSens(BUCK3); |
zathorix | 21:0d5e4d19eaab | 58 | DigitalOut buckScreen(BUCK4); |
zathorix | 21:0d5e4d19eaab | 59 | DigitalOut buck24V(BUCK5); |
zathorix | 21:0d5e4d19eaab | 60 | |
zathorix | 21:0d5e4d19eaab | 61 | //external classes |
zathorix | 21:0d5e4d19eaab | 62 | extern DataAcquisition daq; |
zathorix | 21:0d5e4d19eaab | 63 | extern Telemetrics telemetrics; |
zathorix | 21:0d5e4d19eaab | 64 | extern Dashboard dash; |
zathorix | 21:0d5e4d19eaab | 65 | |
zathorix | 21:0d5e4d19eaab | 66 | //external variables |
zathorix | 21:0d5e4d19eaab | 67 | extern long long int starttime; |
zathorix | 21:0d5e4d19eaab | 68 | |
zathorix | 21:0d5e4d19eaab | 69 | //external threads |
zathorix | 21:0d5e4d19eaab | 70 | extern Thread threadbg; |
zathorix | 21:0d5e4d19eaab | 71 | |
zathorix | 21:0d5e4d19eaab | 72 | //global var for speed; ugly solution but works |
zathorix | 21:0d5e4d19eaab | 73 | float speed = 0; |
zathorix | 21:0d5e4d19eaab | 74 | |
zathorix | 21:0d5e4d19eaab | 75 | //thread function declarations |
zathorix | 21:0d5e4d19eaab | 76 | void readThrottle(); |
zathorix | 21:0d5e4d19eaab | 77 | void power(); |
zathorix | 21:0d5e4d19eaab | 78 | void test(); |
zathorix | 21:0d5e4d19eaab | 79 | void background(); |
zathorix | 21:0d5e4d19eaab | 80 | void screens(); |
zathorix | 21:0d5e4d19eaab | 81 | |
zathorix | 21:0d5e4d19eaab | 82 | //screen function declarations |
zathorix | 21:0d5e4d19eaab | 83 | void readEssentials(); |
zathorix | 21:0d5e4d19eaab | 84 | |
zathorix | 21:0d5e4d19eaab | 85 | //Screen placeholder variables |
zathorix | 21:0d5e4d19eaab | 86 | int battery_percentage_left = 0; |
zathorix | 21:0d5e4d19eaab | 87 | int battery_minutes_left = 0; |
zathorix | 21:0d5e4d19eaab | 88 | int race_percentage_left = 0; |
zathorix | 21:0d5e4d19eaab | 89 | int race_minutes_left = 0; |
zathorix | 21:0d5e4d19eaab | 90 | int race_minutes_done = 0; |
zathorix | 21:0d5e4d19eaab | 91 | int throttle_power = 0; |
zathorix | 21:0d5e4d19eaab | 92 | int advised_throttle_power = 0; |
zathorix | 21:0d5e4d19eaab | 93 | int power_in = 0; |
zathorix | 21:0d5e4d19eaab | 94 | int power_out = 0; |
zathorix | 21:0d5e4d19eaab | 95 | int voltage_in = 0; |
zathorix | 21:0d5e4d19eaab | 96 | int motor_temperature = 0; |
zathorix | 21:0d5e4d19eaab | 97 | int battery_temperature = 0; |
zathorix | 21:0d5e4d19eaab | 98 | int velocity = 0; |
zathorix | 21:0d5e4d19eaab | 99 | int rpm_motor = 0; |
zathorix | 21:0d5e4d19eaab | 100 | int checkIfButtonPressed(int current_menu); |
zathorix | 21:0d5e4d19eaab | 101 | int battery_voltage = 0; |
zathorix | 21:0d5e4d19eaab | 102 | int current_menu = 0; |
zathorix | 21:0d5e4d19eaab | 103 | time_t start = time(0); |
zathorix | 21:0d5e4d19eaab | 104 | void readEssentials(); |
zathorix | 21:0d5e4d19eaab | 105 | bool menu_button_pressed = true; |
zathorix | 21:0d5e4d19eaab | 106 | bool reverse_button_pressed = true; |
zathorix | 21:0d5e4d19eaab | 107 | bool fly_request = true; |
zathorix | 21:0d5e4d19eaab | 108 | bool transmitting = false; |
zathorix | 21:0d5e4d19eaab | 109 | bool reverse = false; |
zathorix | 21:0d5e4d19eaab | 110 | |
zathorix | 21:0d5e4d19eaab | 111 | |
zathorix | 21:0d5e4d19eaab | 112 | // Thread 0 - DO NOT CHANGE THIS! |
zathorix | 21:0d5e4d19eaab | 113 | int main() { |
zathorix | 21:0d5e4d19eaab | 114 | #ifdef DEBUG |
zathorix | 21:0d5e4d19eaab | 115 | pc.baud(115200); |
zathorix | 21:0d5e4d19eaab | 116 | pc.printf("Starting SOS V1.0\n"); |
zathorix | 21:0d5e4d19eaab | 117 | #endif |
zathorix | 21:0d5e4d19eaab | 118 | // change CAN frequency |
zathorix | 21:0d5e4d19eaab | 119 | can.frequency(250000); |
zathorix | 21:0d5e4d19eaab | 120 | |
zathorix | 21:0d5e4d19eaab | 121 | // initialze threads |
zathorix | 21:0d5e4d19eaab | 122 | Thread threadpower; |
zathorix | 21:0d5e4d19eaab | 123 | Thread threadtest; |
zathorix | 21:0d5e4d19eaab | 124 | Thread threadthrottle; |
zathorix | 21:0d5e4d19eaab | 125 | Thread threaddash; |
zathorix | 21:0d5e4d19eaab | 126 | |
zathorix | 21:0d5e4d19eaab | 127 | // start threads |
zathorix | 21:0d5e4d19eaab | 128 | threadpower.start(&power); |
zathorix | 21:0d5e4d19eaab | 129 | threadbg.start(&background); |
zathorix | 21:0d5e4d19eaab | 130 | threadtest.start(&test); |
zathorix | 21:0d5e4d19eaab | 131 | threaddash.start(&screens); |
zathorix | 21:0d5e4d19eaab | 132 | threadthrottle.start(&readThrottle); |
zathorix | 21:0d5e4d19eaab | 133 | |
zathorix | 21:0d5e4d19eaab | 134 | telemetrics.enable(); |
zathorix | 21:0d5e4d19eaab | 135 | daq.enable(starttime); |
zathorix | 21:0d5e4d19eaab | 136 | |
zathorix | 21:0d5e4d19eaab | 137 | //BMS message parser, now imlpemented in DAQ lib |
zathorix | 21:0d5e4d19eaab | 138 | /*CANMessage msg; |
zathorix | 21:0d5e4d19eaab | 139 | while(1) { |
zathorix | 21:0d5e4d19eaab | 140 | if(can.read(msg)) { |
zathorix | 21:0d5e4d19eaab | 141 | pc.printf("Message received: 0x %x; %u %u%u %d%d %c %u %u\n", msg.id, msg.data[0], msg.data[1], msg.data[2], msg.data[3], msg.data[4], msg.data[5], msg.data[6], msg.data[7]); |
zathorix | 21:0d5e4d19eaab | 142 | } |
zathorix | 21:0d5e4d19eaab | 143 | Thread::wait(10); |
zathorix | 21:0d5e4d19eaab | 144 | }*/ |
zathorix | 21:0d5e4d19eaab | 145 | Thread::wait(osWaitForever); |
zathorix | 21:0d5e4d19eaab | 146 | } |
zathorix | 21:0d5e4d19eaab | 147 | |
zathorix | 21:0d5e4d19eaab | 148 | //send motor command |
zathorix | 21:0d5e4d19eaab | 149 | void sendMotorSpeed(float throttle) { |
zathorix | 21:0d5e4d19eaab | 150 | if ((abs(throttle - speed)) > SPEED_THRESH) { |
zathorix | 21:0d5e4d19eaab | 151 | union { |
zathorix | 21:0d5e4d19eaab | 152 | char msg[4]; |
zathorix | 21:0d5e4d19eaab | 153 | float value; |
zathorix | 21:0d5e4d19eaab | 154 | } packet; |
zathorix | 21:0d5e4d19eaab | 155 | packet.value = throttle; |
zathorix | 21:0d5e4d19eaab | 156 | can.write(CANMessage(MOTOR_COMMAND, packet.msg)); |
zathorix | 21:0d5e4d19eaab | 157 | printf("Sent motor speed: %f\r\n", packet.value); |
zathorix | 21:0d5e4d19eaab | 158 | speed = throttle; |
zathorix | 21:0d5e4d19eaab | 159 | } |
zathorix | 21:0d5e4d19eaab | 160 | } |
zathorix | 21:0d5e4d19eaab | 161 | |
zathorix | 21:0d5e4d19eaab | 162 | //thread functions |
zathorix | 21:0d5e4d19eaab | 163 | void readThrottle() { |
zathorix | 21:0d5e4d19eaab | 164 | float throttleread; |
zathorix | 21:0d5e4d19eaab | 165 | while(1) { |
zathorix | 21:0d5e4d19eaab | 166 | throttleread = 2*(0.5 - analogThrottle.read()); |
zathorix | 21:0d5e4d19eaab | 167 | sendMotorSpeed(throttleread); |
zathorix | 21:0d5e4d19eaab | 168 | Thread::wait(10); |
zathorix | 21:0d5e4d19eaab | 169 | } |
zathorix | 21:0d5e4d19eaab | 170 | } |
zathorix | 21:0d5e4d19eaab | 171 | |
zathorix | 21:0d5e4d19eaab | 172 | |
zathorix | 21:0d5e4d19eaab | 173 | |
zathorix | 21:0d5e4d19eaab | 174 | void power() { |
zathorix | 21:0d5e4d19eaab | 175 | PowerControl powercontrol(PUSH_GREEN); |
zathorix | 21:0d5e4d19eaab | 176 | |
zathorix | 21:0d5e4d19eaab | 177 | #ifdef DEBUG |
zathorix | 21:0d5e4d19eaab | 178 | pc.printf("Thread 1 - Power started\r\n "); |
zathorix | 21:0d5e4d19eaab | 179 | #endif |
zathorix | 21:0d5e4d19eaab | 180 | |
zathorix | 21:0d5e4d19eaab | 181 | Thread::wait(osWaitForever); |
zathorix | 21:0d5e4d19eaab | 182 | } |
zathorix | 21:0d5e4d19eaab | 183 | |
zathorix | 21:0d5e4d19eaab | 184 | void test() { |
zathorix | 21:0d5e4d19eaab | 185 | ledError = 0; |
zathorix | 21:0d5e4d19eaab | 186 | ledSD = 0; |
zathorix | 21:0d5e4d19eaab | 187 | ledFona = 0 ; |
zathorix | 21:0d5e4d19eaab | 188 | led24V=1; |
zathorix | 21:0d5e4d19eaab | 189 | |
zathorix | 21:0d5e4d19eaab | 190 | //DigitalOut buckCan(BUCK2); |
zathorix | 21:0d5e4d19eaab | 191 | buckXSens = 0; |
zathorix | 21:0d5e4d19eaab | 192 | buckScreen = 1; |
zathorix | 21:0d5e4d19eaab | 193 | buck24V = 1; |
zathorix | 21:0d5e4d19eaab | 194 | } |
zathorix | 21:0d5e4d19eaab | 195 | |
zathorix | 21:0d5e4d19eaab | 196 | void screens() |
zathorix | 21:0d5e4d19eaab | 197 | { |
zathorix | 21:0d5e4d19eaab | 198 | dash.powerOnOLED(1); |
zathorix | 21:0d5e4d19eaab | 199 | dash.powerOnOLED(2); |
zathorix | 21:0d5e4d19eaab | 200 | dash.powerOnOLED(3); |
zathorix | 21:0d5e4d19eaab | 201 | |
zathorix | 21:0d5e4d19eaab | 202 | dash.clearDisplay(1); |
zathorix | 21:0d5e4d19eaab | 203 | dash.clearDisplay(2); |
zathorix | 21:0d5e4d19eaab | 204 | dash.clearDisplay(3); |
zathorix | 21:0d5e4d19eaab | 205 | |
zathorix | 21:0d5e4d19eaab | 206 | while(1) { |
zathorix | 21:0d5e4d19eaab | 207 | |
zathorix | 21:0d5e4d19eaab | 208 | Thread::wait(100); |
zathorix | 21:0d5e4d19eaab | 209 | |
zathorix | 21:0d5e4d19eaab | 210 | //listen to menu button |
zathorix | 21:0d5e4d19eaab | 211 | current_menu = checkIfButtonPressed(current_menu); |
zathorix | 21:0d5e4d19eaab | 212 | //listen to steering wheel at all time |
zathorix | 21:0d5e4d19eaab | 213 | readEssentials(); |
zathorix | 21:0d5e4d19eaab | 214 | //check for errors at all time |
zathorix | 21:0d5e4d19eaab | 215 | dash.checkForErrors(current_menu, velocity, battery_temperature, motor_temperature, battery_percentage_left, battery_minutes_left); |
zathorix | 21:0d5e4d19eaab | 216 | |
zathorix | 21:0d5e4d19eaab | 217 | |
zathorix | 21:0d5e4d19eaab | 218 | switch (current_menu) { |
zathorix | 21:0d5e4d19eaab | 219 | |
zathorix | 21:0d5e4d19eaab | 220 | case 0: |
zathorix | 21:0d5e4d19eaab | 221 | //circular display (1) |
zathorix | 21:0d5e4d19eaab | 222 | //updateProgressCircle(1, race_percentage_left); |
zathorix | 21:0d5e4d19eaab | 223 | race_minutes_done = time(0)/60; //TODO give starting point |
zathorix | 21:0d5e4d19eaab | 224 | dash.showRaceMinutesDone(race_minutes_done); |
zathorix | 21:0d5e4d19eaab | 225 | dash.showRaceMinutesLeft(race_minutes_left); |
zathorix | 21:0d5e4d19eaab | 226 | dash.showRacePercentageLeft(race_percentage_left); |
zathorix | 21:0d5e4d19eaab | 227 | |
zathorix | 21:0d5e4d19eaab | 228 | //main display (2) |
zathorix | 21:0d5e4d19eaab | 229 | dash.displayTime(); |
zathorix | 21:0d5e4d19eaab | 230 | dash.checkTransmitter(transmitting); |
zathorix | 21:0d5e4d19eaab | 231 | dash.displayVelocity(velocity); |
zathorix | 21:0d5e4d19eaab | 232 | dash.displayThrottle(throttle_power, reverse); |
zathorix | 21:0d5e4d19eaab | 233 | //displayAdvisedThrottle(advised_throttle_power); |
zathorix | 21:0d5e4d19eaab | 234 | dash.updatePowerBars(power_out, power_in); |
zathorix | 21:0d5e4d19eaab | 235 | |
zathorix | 21:0d5e4d19eaab | 236 | //circular display (3) |
zathorix | 21:0d5e4d19eaab | 237 | //updateProgressCircle(3, battery_percentage_left); |
zathorix | 21:0d5e4d19eaab | 238 | dash.showBatteryMinutesLeft(battery_minutes_left); |
zathorix | 21:0d5e4d19eaab | 239 | dash.showBatteryPercentageLeft(battery_percentage_left); |
zathorix | 21:0d5e4d19eaab | 240 | break; |
zathorix | 21:0d5e4d19eaab | 241 | |
zathorix | 21:0d5e4d19eaab | 242 | case 1: |
zathorix | 21:0d5e4d19eaab | 243 | //circular display (1) |
zathorix | 21:0d5e4d19eaab | 244 | //updateProgressCircle(1, race_percentage_left); |
zathorix | 21:0d5e4d19eaab | 245 | race_minutes_done = time(0)/60; //TODO give starting point |
zathorix | 21:0d5e4d19eaab | 246 | dash.showRaceMinutesDone(race_minutes_done); |
zathorix | 21:0d5e4d19eaab | 247 | dash.showRaceMinutesLeft(race_minutes_left); |
zathorix | 21:0d5e4d19eaab | 248 | dash.showRacePercentageLeft(race_percentage_left); |
zathorix | 21:0d5e4d19eaab | 249 | |
zathorix | 21:0d5e4d19eaab | 250 | //main display (2) |
zathorix | 21:0d5e4d19eaab | 251 | dash.displayData1(rpm_motor, battery_temperature, motor_temperature, voltage_in, power_out, power_in); |
zathorix | 21:0d5e4d19eaab | 252 | |
zathorix | 21:0d5e4d19eaab | 253 | //circular display (3) |
zathorix | 21:0d5e4d19eaab | 254 | //updateProgressCircle(3, battery_percentage_left); |
zathorix | 21:0d5e4d19eaab | 255 | dash.showBatteryMinutesLeft(battery_minutes_left); |
zathorix | 21:0d5e4d19eaab | 256 | dash.showBatteryPercentageLeft(battery_percentage_left); |
zathorix | 21:0d5e4d19eaab | 257 | break; |
zathorix | 21:0d5e4d19eaab | 258 | |
zathorix | 21:0d5e4d19eaab | 259 | case 2: |
zathorix | 21:0d5e4d19eaab | 260 | //circular display (1) |
zathorix | 21:0d5e4d19eaab | 261 | //updateProgressCircle(1, race_percentage_left); |
zathorix | 21:0d5e4d19eaab | 262 | race_minutes_done = time(0)/60; //TODO give starting point |
zathorix | 21:0d5e4d19eaab | 263 | dash.showRaceMinutesDone(race_minutes_done); |
zathorix | 21:0d5e4d19eaab | 264 | dash.showRaceMinutesLeft(race_minutes_left); |
zathorix | 21:0d5e4d19eaab | 265 | dash.showRacePercentageLeft(race_percentage_left); |
zathorix | 21:0d5e4d19eaab | 266 | |
zathorix | 21:0d5e4d19eaab | 267 | //main display (2) |
zathorix | 21:0d5e4d19eaab | 268 | dash.displayData2(battery_voltage, battery_temperature, motor_temperature, voltage_in, power_out, power_in); |
zathorix | 21:0d5e4d19eaab | 269 | |
zathorix | 21:0d5e4d19eaab | 270 | //circular display (3) |
zathorix | 21:0d5e4d19eaab | 271 | //updateProgressCircle(3, battery_percentage_left); |
zathorix | 21:0d5e4d19eaab | 272 | dash.showBatteryMinutesLeft(battery_minutes_left); |
zathorix | 21:0d5e4d19eaab | 273 | dash.showBatteryPercentageLeft(battery_percentage_left); |
zathorix | 21:0d5e4d19eaab | 274 | break; |
zathorix | 21:0d5e4d19eaab | 275 | default: |
zathorix | 21:0d5e4d19eaab | 276 | //empty, catch |
zathorix | 21:0d5e4d19eaab | 277 | break; |
zathorix | 21:0d5e4d19eaab | 278 | } |
zathorix | 21:0d5e4d19eaab | 279 | } |
zathorix | 21:0d5e4d19eaab | 280 | } |
zathorix | 21:0d5e4d19eaab | 281 | |
zathorix | 21:0d5e4d19eaab | 282 | int checkIfButtonPressed(int current_menu) |
zathorix | 21:0d5e4d19eaab | 283 | { |
zathorix | 21:0d5e4d19eaab | 284 | //--------------MENU BUTTON-------------------- |
zathorix | 21:0d5e4d19eaab | 285 | if (menu_button == 0 && menu_button_pressed == false) { |
zathorix | 21:0d5e4d19eaab | 286 | menu_button_pressed = true; |
zathorix | 21:0d5e4d19eaab | 287 | start = time(0); |
zathorix | 21:0d5e4d19eaab | 288 | current_menu++; |
zathorix | 21:0d5e4d19eaab | 289 | if (current_menu > 2) current_menu = 0; |
zathorix | 21:0d5e4d19eaab | 290 | dash.clearDisplay(1); |
zathorix | 21:0d5e4d19eaab | 291 | dash.clearDisplay(2); |
zathorix | 21:0d5e4d19eaab | 292 | dash.clearDisplay(3); |
zathorix | 21:0d5e4d19eaab | 293 | } else if (menu_button == 1) menu_button_pressed = false; |
zathorix | 21:0d5e4d19eaab | 294 | //timeout for back to home screen |
zathorix | 21:0d5e4d19eaab | 295 | double seconds_since_start = difftime(time(0), start); |
zathorix | 21:0d5e4d19eaab | 296 | if (current_menu != 0 && seconds_since_start > MENU_TIMEOUT_TIME) { |
zathorix | 21:0d5e4d19eaab | 297 | current_menu = 0; |
zathorix | 21:0d5e4d19eaab | 298 | dash.clearDisplay(1); |
zathorix | 21:0d5e4d19eaab | 299 | dash.clearDisplay(2); |
zathorix | 21:0d5e4d19eaab | 300 | dash.clearDisplay(3); |
zathorix | 21:0d5e4d19eaab | 301 | } |
zathorix | 21:0d5e4d19eaab | 302 | |
zathorix | 21:0d5e4d19eaab | 303 | //--------------REVERSE BUTTON-------------------- |
zathorix | 21:0d5e4d19eaab | 304 | if (reverse_button == 0 && reverse_button_pressed == false) { |
zathorix | 21:0d5e4d19eaab | 305 | reverse_button_pressed = true; |
zathorix | 21:0d5e4d19eaab | 306 | if (velocity < MAX_REVERSE_VELOCITY) reverse = !reverse; |
zathorix | 21:0d5e4d19eaab | 307 | } else if (reverse_button == 1) reverse_button_pressed = false; |
zathorix | 21:0d5e4d19eaab | 308 | |
zathorix | 21:0d5e4d19eaab | 309 | //--------------FLY BUTTON-------------------- |
zathorix | 21:0d5e4d19eaab | 310 | if (fly_button == 0 && fly_request == false) { |
zathorix | 21:0d5e4d19eaab | 311 | fly_request = true; |
zathorix | 21:0d5e4d19eaab | 312 | if (velocity > MIN_FLY_VELOCITY) fly_request = !fly_request; |
zathorix | 21:0d5e4d19eaab | 313 | } else if (fly_button == 1) fly_request = false; |
zathorix | 21:0d5e4d19eaab | 314 | |
zathorix | 21:0d5e4d19eaab | 315 | //return for menu |
zathorix | 21:0d5e4d19eaab | 316 | return current_menu; |
zathorix | 21:0d5e4d19eaab | 317 | } |
zathorix | 21:0d5e4d19eaab | 318 | |
zathorix | 21:0d5e4d19eaab | 319 | void readEssentials() |
zathorix | 21:0d5e4d19eaab | 320 | { |
zathorix | 21:0d5e4d19eaab | 321 | |
zathorix | 21:0d5e4d19eaab | 322 | //get current throttle set + adjust params -------- DEBUG |
zathorix | 21:0d5e4d19eaab | 323 | throttle_power = 100*(1 - analogThrottle); |
zathorix | 21:0d5e4d19eaab | 324 | power_out = 580; |
zathorix | 21:0d5e4d19eaab | 325 | power_in = 680; |
zathorix | 21:0d5e4d19eaab | 326 | velocity = 0.1*throttle_power; |
zathorix | 21:0d5e4d19eaab | 327 | battery_minutes_left = throttle_power/6; |
zathorix | 21:0d5e4d19eaab | 328 | battery_percentage_left = throttle_power/5; |
zathorix | 21:0d5e4d19eaab | 329 | motor_temperature = 68; |
zathorix | 21:0d5e4d19eaab | 330 | battery_temperature = 24; |
zathorix | 21:0d5e4d19eaab | 331 | battery_voltage = 45; |
zathorix | 21:0d5e4d19eaab | 332 | rpm_motor = throttle_power; |
zathorix | 21:0d5e4d19eaab | 333 | voltage_in = 44; |
zathorix | 21:0d5e4d19eaab | 334 | race_minutes_left = 12; |
zathorix | 21:0d5e4d19eaab | 335 | race_percentage_left = 100*race_minutes_done/(race_minutes_left+race_minutes_done); |
zathorix | 21:0d5e4d19eaab | 336 | } |