The Code Repository for the REV0 Steering Wheel.
Dependencies: CANBuffer KS0108_fork mbed-rtos mbed CAN Addresses
Fork of REVO_Updated_Steering by
Diff: Screens.h
- Revision:
- 36:8544a8900884
- Child:
- 40:92f08fdc32df
diff -r b42afc973902 -r 8544a8900884 Screens.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Screens.h Thu Jan 29 04:27:19 2015 +0000 @@ -0,0 +1,178 @@ +#include "KS0108.h" +#include "Buffers.h" + +// Macro for printing to screen; Where y is the start poition of the text, and y2 is the start position of the variable +#define PUT2SCREEN(string, var, unit, x, y, y2) display.PutString(x, y, string); display.PutString(x, y2, var); display.PutString(x,y2+15,unit); + +#define HOME_SCREEN 0 +#define BATTERY_SCREEN 1 +#define MOTOR_SCREEN 2 +#define SYS_MGMT_SCREEN 3 +#define CHARGE_SCREEN 4 +#define FAULT_SCREEN 5 + + + +// Initialize Variables +int CurrScreen = HOME_SCREEN; +int PrevScreen = !CurrScreen; + +// Defines the pins for the dsiplay. These are hardwired. +KS0108 display(p26, p21, p22, p23, p25, p24, p8, p7, p6, p5, p13, p14, p12, p11); + +void DisplayHomeScreen() +{ + display.ClearScreen(); + display.PutString(0, 54, "Home"); + + //Info line 1: Battery Life & Vehicle Speed + PUT2SCREEN("BatLife:", BigBatLifeBuffer, "%", 1, 0, 39); + PUT2SCREEN(",", SmallBatLifeBuffer, "%", 1, 59, 62); + PUT2SCREEN("Spd:", CarSpdBuffer, "", 1, 89,108); + + //Info line 2: Average Battery Temp & Peak Battery Temp + PUT2SCREEN("AvgBatT:", AvgBatTBuffer, "F", 3, 0, 39); + PUT2SCREEN("PkBatT:", MaxBatTBuffer, "F", 3, 69,103); + + //Info line 3: Left Motor Temp & Right Motor Temp + PUT2SCREEN("LMtTmp:", LMtrTmpBuffer, "F", 5, 0, 34); + PUT2SCREEN("RMtTmp:", RMtrTmpBuffer, "F", 5, 69,103); + + //Fault line + display.PutString(7, 14, "Reserved for faults"); +} + +void DisplayBatteryScreen() +{ + display.ClearScreen(); + display.PutString(0, 34, "Main Battery"); + + //Info line 1: Battery Voltage, Power & Current + PUT2SCREEN("V:", BigBatVoltBuffer, "V", 1, 0, 10); + PUT2SCREEN("P:", BigBatPowerBuffer, "W", 1, 45, 55); + PUT2SCREEN("I:", BigBatCurrentBuffer, "A", 1, 90,100); + + //Info line 2: High, Low, & Average Cell Voltage + PUT2SCREEN("Vmx:", VmaxBuffer, "V", 3, 0, 20); + PUT2SCREEN("Vmn:", VminBuffer, "", 3, 47, 67); + PUT2SCREEN("Vav:", VavgBuffer, "", 3, 88,108); + + //Info line 3: High, Low, & Average Cell Temp + PUT2SCREEN("Tmx:", MaxBatTBuffer, "F", 5, 0, 20); + PUT2SCREEN("Tmn:", MinBatTBuffer, "", 5, 47, 67); + PUT2SCREEN("Tav:", AvgBatTBuffer, "", 5, 88,108); + + //Info line 4: Highest Board Temp + PUT2SCREEN("HighBoardTemp:", BoardTempBuffer, "F", 7, 17, 87); +} + +void DisplayMotorScreen() +{ + display.ClearScreen(); + display.PutString(0, 52, "Motor"); + + //Info line 1: Left Motor Temp & Right Motor Temp + PUT2SCREEN("LMtTmp:", LMtrTmpBuffer, "F", 1, 0, 34); + PUT2SCREEN("RMtTmp:", RMtrTmpBuffer, "F", 1, 64, 98); + + //Info line 2: Left & Right Air Temp + PUT2SCREEN("LAirTp:", LAirTmpBuffer, "F", 2, 0, 34); + PUT2SCREEN("RairTp:", RAirTmpBuffer, "F", 2, 64, 98); + + //Info line 3: Left & Right IGBT Temp + PUT2SCREEN("LIGBTp:", LIGBTmpBuffer, "F", 3, 0, 34); + PUT2SCREEN("RIGBTp:", RIGBTmpBuffer, "F", 3, 64, 98); + + //Info line 4: Left & Right Motor RPM + PUT2SCREEN("Rpm-L:", Rpm_LBuffer, "", 5, 0, 30); + PUT2SCREEN("Rpm-R:", Rpm_RBuffer, "", 5, 77,107); + + //Info line 5: Torque Request (Throttle) + PUT2SCREEN("Torque Request:", TRequestBufferL, "%", 7, 0, 75); + PUT2SCREEN(",", TRequestBufferR, "%", 7, 95, 98); +} + +void DisplaySysMgmtScreen() +{ + display.ClearScreen(); + display.PutString(0, 22, "System Management"); + + //Info line 1: Small Battery Current & Shutdown Switch State + PUT2SCREEN("I_GLV:", SmallBatCurrentBuffer,"A", 1, 0, 30); + PUT2SCREEN("ShtdSwtch:", ShtdSwtchBuffer, "", 1, 58,108); + + //Info line 2: Fan Duty Cycle + PUT2SCREEN("Fan-1:", Fan1Buffer, "", 3, 0, 30); + PUT2SCREEN("Fan-2:", Fan2Buffer, "", 3, 77,107); + + //Info line 3: Pump Duty Cycle + PUT2SCREEN("Pump1:", Pump1Buffer, "", 5, 0, 30); + PUT2SCREEN("Pump2:", Pump2Buffer, "", 5, 77,107); + + //Info line 4: DCDC & IMD Status + PUT2SCREEN("DCDC :", DCDCBuffer, "", 7, 0, 30); + PUT2SCREEN(" IMD :", IMDRBuffer, "", 7, 77,107); +} + +void DisplayFaultScreen() +{ + display.ClearScreen(); + display.PutString(0, 49, "Faults"); + + //Info line 1: Battery Voltage, Power & Current + PUT2SCREEN("", Fault1Buffer, "", 1, 0, 0); + PUT2SCREEN("", Fault1Buffer, "", 2, 0, 0); + PUT2SCREEN("", Fault1Buffer, "", 3, 0, 0); + PUT2SCREEN("", Fault1Buffer, "", 4, 0, 0); + PUT2SCREEN("", Fault1Buffer, "", 5, 0, 0); + PUT2SCREEN("", Fault1Buffer, "", 6, 0, 0); + PUT2SCREEN("", Fault1Buffer, "", 7, 0, 0); +} + +void DisplayChargeScreen() +{ + display.ClearScreen(); + display.PutString(0, 44, "CHARGING"); + + // Battery Voltage, Charge Current, & Source Voltage + PUT2SCREEN("Battery Voltage :", BigBatVoltBuffer, "V", 1, 9, 94); + PUT2SCREEN("Charging Current:", ChargeCurrBuffer, "V", 3, 9, 94); + PUT2SCREEN("Source Voltage :", SourceVBuffer, "F", 5, 12, 92); +} + +void ToggleScreen() +{ + CurrScreen = (CurrScreen+1) %5; +} + +void DisplayCurrScreen(void const *args) +{ + while(1) { + if(PrevScreen != CurrScreen) { + switch(CurrScreen) { + case 0: + DisplayHomeScreen(); + break; + case 1: + DisplayBatteryScreen(); + break; + case 2: + DisplayMotorScreen(); + break; + case 3: + DisplaySysMgmtScreen(); + break; + case 4: + DisplayChargeScreen(); + break; + case 5: + DisplayFaultScreen(); + break; + default: + break; + } + PrevScreen = CurrScreen; + } + } + +} \ No newline at end of file