new battery bar
Dependencies: CAN_IDs CanControl Dashboard PinDetect PowerControl mbed-rtos mbed
Diff: main.cpp
- Revision:
- 22:8fdbdfbdf74a
- Parent:
- 18:aa6feb4b73e7
- Child:
- 23:970a5603da43
diff -r 0d5e4d19eaab -r 8fdbdfbdf74a main.cpp --- a/main.cpp Mon May 22 18:46:01 2017 +0000 +++ b/main.cpp Tue May 23 12:01:03 2017 +0000 @@ -15,7 +15,7 @@ *******************************************************************************/ // uncomment to send debug information -#define DEBUG +//#define DEBUG //include 3rd party libraries #include "mbed.h" //needs to be revision 136 else SD filesystem will not work @@ -29,11 +29,9 @@ #include "Dashboard.h" #define SPEED_THRESH 0.02 //threshold for setting speed to prevent CAN spam - -// initialize serial connection for debug -#ifdef DEBUG +#define DEBUG +// initialize serial connection for debug and file retrieval RawSerial pc(SERIAL_TX, SERIAL_RX); -#endif // initialize canbus CAN can(CAN_RD, CAN_TD); @@ -78,6 +76,14 @@ void test(); void background(); void screens(); +void resetScreens(); + +//varables for screens +extern batterydata * battery; +extern variable * velocitysqrd; +extern variable * motortemp; +//ticker for resetting screens +Ticker ticker; //screen function declarations void readEssentials(); @@ -108,7 +114,6 @@ bool transmitting = false; bool reverse = false; - // Thread 0 - DO NOT CHANGE THIS! int main() { #ifdef DEBUG @@ -123,15 +128,24 @@ Thread threadtest; Thread threadthrottle; Thread threaddash; - + Thread threadresetscr; + // start threads threadpower.start(&power); + Thread::wait(50); threadbg.start(&background); + Thread::wait(50); threadtest.start(&test); + Thread::wait(50); + + toggleControlSys(0x01); + threaddash.start(&screens); + Thread::wait(50); threadthrottle.start(&readThrottle); - + Thread::wait(50); telemetrics.enable(); + Thread::wait(50); daq.enable(starttime); //BMS message parser, now imlpemented in DAQ lib @@ -162,8 +176,14 @@ //thread functions void readThrottle() { float throttleread; + int rev; while(1) { - throttleread = 2*(0.5 - analogThrottle.read()); + if (reverse) { + rev = -1; + } else { + rev = 1; + } + throttleread = rev*(1 - analogThrottle.read()); sendMotorSpeed(throttleread); Thread::wait(10); } @@ -188,21 +208,34 @@ led24V=1; //DigitalOut buckCan(BUCK2); - buckXSens = 0; + buckXSens = 1; buckScreen = 1; buck24V = 1; } +void resetScreens() { + + Thread::wait(10000); + + dash.powerOnOLED(1); + dash.powerOnOLED(2); + dash.powerOnOLED(3); + + dash.clearDisplay(1); + dash.clearDisplay(2); + dash.clearDisplay(3); +} + void screens() { dash.powerOnOLED(1); dash.powerOnOLED(2); dash.powerOnOLED(3); - + dash.clearDisplay(1); dash.clearDisplay(2); dash.clearDisplay(3); - + while(1) { Thread::wait(100); @@ -220,16 +253,16 @@ case 0: //circular display (1) //updateProgressCircle(1, race_percentage_left); - race_minutes_done = time(0)/60; //TODO give starting point + race_minutes_done = daq.time/60000; //TODO give starting point dash.showRaceMinutesDone(race_minutes_done); dash.showRaceMinutesLeft(race_minutes_left); dash.showRacePercentageLeft(race_percentage_left); //main display (2) - dash.displayTime(); + dash.displayTime(daq.time + starttime); dash.checkTransmitter(transmitting); dash.displayVelocity(velocity); - dash.displayThrottle(throttle_power, reverse); + dash.displayThrottle(abs(throttle_power), reverse); //displayAdvisedThrottle(advised_throttle_power); dash.updatePowerBars(power_out, power_in); @@ -242,7 +275,7 @@ case 1: //circular display (1) //updateProgressCircle(1, race_percentage_left); - race_minutes_done = time(0)/60; //TODO give starting point + race_minutes_done = daq.time/60000; //TODO give starting point dash.showRaceMinutesDone(race_minutes_done); dash.showRaceMinutesLeft(race_minutes_left); dash.showRacePercentageLeft(race_percentage_left); @@ -259,7 +292,7 @@ case 2: //circular display (1) //updateProgressCircle(1, race_percentage_left); - race_minutes_done = time(0)/60; //TODO give starting point + race_minutes_done = daq.time/60000; //TODO give starting point dash.showRaceMinutesDone(race_minutes_done); dash.showRaceMinutesLeft(race_minutes_left); dash.showRacePercentageLeft(race_percentage_left); @@ -287,18 +320,21 @@ start = time(0); current_menu++; if (current_menu > 2) current_menu = 0; - dash.clearDisplay(1); - dash.clearDisplay(2); - dash.clearDisplay(3); + + //clear displays and reset settings + dash.powerOnOLED(1); + dash.powerOnOLED(2); + dash.powerOnOLED(3); + } else if (menu_button == 1) menu_button_pressed = false; //timeout for back to home screen - double seconds_since_start = difftime(time(0), start); + /*double seconds_since_start = difftime(time(0), start); if (current_menu != 0 && seconds_since_start > MENU_TIMEOUT_TIME) { current_menu = 0; dash.clearDisplay(1); dash.clearDisplay(2); dash.clearDisplay(3); - } + }*/ //--------------REVERSE BUTTON-------------------- if (reverse_button == 0 && reverse_button_pressed == false) { @@ -316,19 +352,20 @@ return current_menu; } +//power_out is now power_in minus power_out, can only fix void readEssentials() { //get current throttle set + adjust params -------- DEBUG - throttle_power = 100*(1 - analogThrottle); - power_out = 580; + throttle_power = 100*speed; + power_out = (int) ((battery->current) * (battery->voltage)); power_in = 680; - velocity = 0.1*throttle_power; + velocity = (int) (3.6*sqrt((velocitysqrd->value))); //velocity in kph battery_minutes_left = throttle_power/6; - battery_percentage_left = throttle_power/5; - motor_temperature = 68; - battery_temperature = 24; - battery_voltage = 45; + battery_percentage_left = battery->SOC; + motor_temperature = (int) (motortemp->value); + battery_temperature = (int) (battery->maxtemp); + battery_voltage = (int) (battery->voltage); rpm_motor = throttle_power; voltage_in = 44; race_minutes_left = 12;