The Code Repository for the REV0 Steering Wheel.
Dependencies: CANBuffer KS0108_fork mbed-rtos mbed CAN Addresses
Fork of REVO_Updated_Steering by
Screens.h
00001 #include "KS0108.h" 00002 #include "Buffers.h" 00003 00004 // Macro for printing to screen; Where y is the start poition of the text, and y2 is the start position of the variable 00005 #define PUT2SCREEN(string, var, unit, x, y, y2) display.PutString(x, y, string); display.PutString(x, y2, var); display.PutString(x,y2+15,unit); 00006 00007 #define HOME_SCREEN 0 00008 #define BATTERY_SCREEN 1 00009 #define MOTOR_SCREEN 2 00010 #define SYS_MGMT_SCREEN 3 00011 #define CHARGE_SCREEN 4 00012 #define FAULT_SCREEN 5 00013 00014 00015 00016 // Initialize Variables 00017 int CurrScreen = HOME_SCREEN; 00018 int PrevScreen = !CurrScreen; 00019 00020 // Defines the pins for the dsiplay. These are hardwired. 00021 KS0108 display(p26, p21, p22, p23, p25, p24, p8, p7, p6, p5, p13, p14, p12, p11); 00022 00023 void DisplayHomeScreen() 00024 { 00025 display.ClearScreen(); 00026 display.PutString(0, 54, "Home"); 00027 00028 //Info line 1: Battery Life & Vehicle Speed 00029 PUT2SCREEN("BatLife:", BigBatLifeBuffer, "%", 1, 0, 39); 00030 PUT2SCREEN(",", SmallBatLifeBuffer, "%", 1, 59, 62); 00031 PUT2SCREEN("Spd:", CarSpdBuffer, "", 1, 89,108); 00032 00033 //Info line 2: Average Battery Temp & Peak Battery Temp 00034 PUT2SCREEN("AvgBatT:", AvgBatTBuffer, "F", 3, 0, 39); 00035 PUT2SCREEN("PkBatT:", MaxBatTBuffer, "F", 3, 69,103); 00036 00037 //Info line 3: Left Motor Temp & Right Motor Temp 00038 PUT2SCREEN("LMtTmp:", LMtrTmpBuffer, "F", 5, 0, 34); 00039 PUT2SCREEN("RMtTmp:", RMtrTmpBuffer, "F", 5, 69,103); 00040 00041 //Fault line 00042 display.PutString(7, 14, "Reserved for faults"); 00043 } 00044 00045 void DisplayBatteryScreen() 00046 { 00047 display.ClearScreen(); 00048 display.PutString(0, 34, "Main Battery"); 00049 00050 //Info line 1: Battery Voltage, Power & Current 00051 PUT2SCREEN("V:", BigBatVoltBuffer, "V", 1, 0, 10); 00052 PUT2SCREEN("P:", BigBatPowerBuffer, "W", 1, 45, 55); 00053 PUT2SCREEN("I:", BigBatCurrentBuffer, "A", 1, 90,100); 00054 00055 //Info line 2: High, Low, & Average Cell Voltage 00056 PUT2SCREEN("Vmx:", VmaxBuffer, "V", 3, 0, 20); 00057 PUT2SCREEN("Vmn:", VminBuffer, "", 3, 47, 67); 00058 PUT2SCREEN("Vav:", VavgBuffer, "", 3, 88,108); 00059 00060 //Info line 3: High, Low, & Average Cell Temp 00061 PUT2SCREEN("Tmx:", MaxBatTBuffer, "F", 5, 0, 20); 00062 PUT2SCREEN("Tmn:", MinBatTBuffer, "", 5, 47, 67); 00063 PUT2SCREEN("Tav:", AvgBatTBuffer, "", 5, 88,108); 00064 00065 //Info line 4: Highest Board Temp 00066 PUT2SCREEN("HighBoardTemp:", BoardTempBuffer, "F", 7, 17, 87); 00067 } 00068 00069 void DisplayMotorScreen() 00070 { 00071 display.ClearScreen(); 00072 display.PutString(0, 52, "Motor"); 00073 00074 //Info line 1: Left Motor Temp & Right Motor Temp 00075 PUT2SCREEN("LMtTmp:", LMtrTmpBuffer, "F", 1, 0, 34); 00076 PUT2SCREEN("RMtTmp:", RMtrTmpBuffer, "F", 1, 64, 98); 00077 00078 //Info line 2: Left & Right Air Temp 00079 PUT2SCREEN("LAirTp:", LAirTmpBuffer, "F", 2, 0, 34); 00080 PUT2SCREEN("RairTp:", RAirTmpBuffer, "F", 2, 64, 98); 00081 00082 //Info line 3: Left & Right IGBT Temp 00083 PUT2SCREEN("LIGBTp:", LIGBTmpBuffer, "F", 3, 0, 34); 00084 PUT2SCREEN("RIGBTp:", RIGBTmpBuffer, "F", 3, 64, 98); 00085 00086 //Info line 4: Left & Right Motor RPM 00087 PUT2SCREEN("Rpm-L:", Rpm_LBuffer, "", 5, 0, 30); 00088 PUT2SCREEN("Rpm-R:", Rpm_RBuffer, "", 5, 77,107); 00089 00090 //Info line 5: Torque Request (Throttle) 00091 PUT2SCREEN("Torque Request:", TRequestBufferL, "%", 7, 0, 75); 00092 PUT2SCREEN(",", TRequestBufferR, "%", 7, 95, 98); 00093 } 00094 00095 void DisplaySysMgmtScreen() 00096 { 00097 display.ClearScreen(); 00098 display.PutString(0, 22, "System Management"); 00099 00100 //Info line 1: Small Battery Current & Shutdown Switch State 00101 PUT2SCREEN("I_GLV:", SmallBatCurrentBuffer,"A", 1, 0, 30); 00102 PUT2SCREEN("ShtdSwtch:", ShtdSwtchBuffer, "", 1, 58,108); 00103 00104 //Info line 2: Fan Duty Cycle 00105 PUT2SCREEN("Fan-1:", Fan1Buffer, "", 3, 0, 30); 00106 PUT2SCREEN("Fan-2:", Fan2Buffer, "", 3, 77,107); 00107 00108 //Info line 3: Pump Duty Cycle 00109 PUT2SCREEN("Pump1:", Pump1Buffer, "", 5, 0, 30); 00110 PUT2SCREEN("Pump2:", Pump2Buffer, "", 5, 77,107); 00111 00112 //Info line 4: DCDC & IMD Status 00113 PUT2SCREEN("DCDC :", DCDCBuffer, "", 7, 0, 30); 00114 PUT2SCREEN(" IMD :", IMDRBuffer, "", 7, 52,82); 00115 } 00116 00117 void DisplayFaultScreen() 00118 { 00119 display.ClearScreen(); 00120 display.PutString(0, 49, "Faults"); 00121 00122 //Info line 1: Battery Voltage, Power & Current 00123 PUT2SCREEN("", Fault1Buffer, "", 1, 0, 0); 00124 PUT2SCREEN("", Fault1Buffer, "", 2, 0, 0); 00125 PUT2SCREEN("", Fault1Buffer, "", 3, 0, 0); 00126 PUT2SCREEN("", Fault1Buffer, "", 4, 0, 0); 00127 PUT2SCREEN("", Fault1Buffer, "", 5, 0, 0); 00128 PUT2SCREEN("", Fault1Buffer, "", 6, 0, 0); 00129 PUT2SCREEN("", Fault1Buffer, "", 7, 0, 0); 00130 } 00131 00132 void DisplayChargeScreen() 00133 { 00134 display.ClearScreen(); 00135 display.PutString(0, 44, "CHARGING"); 00136 00137 // Battery Voltage, Charge Current, & Source Voltage 00138 PUT2SCREEN("Battery Voltage :", BigBatVoltBuffer, "V", 1, 9, 94); 00139 PUT2SCREEN("Charging Current:", ChargeCurrBuffer, "V", 3, 9, 94); 00140 PUT2SCREEN("Source Voltage :", SourceVBuffer, "F", 5, 12, 92); 00141 } 00142 00143 void ToggleScreen() 00144 { 00145 CurrScreen = (CurrScreen+1) %5; 00146 } 00147 00148 void DisplayCurrScreen(void const *args) 00149 { 00150 while(1) { 00151 if(PrevScreen != CurrScreen) { 00152 switch(CurrScreen) { 00153 case 0: 00154 DisplayHomeScreen(); 00155 break; 00156 case 1: 00157 DisplayBatteryScreen(); 00158 break; 00159 case 2: 00160 DisplayMotorScreen(); 00161 break; 00162 case 3: 00163 DisplaySysMgmtScreen(); 00164 break; 00165 case 4: 00166 DisplayChargeScreen(); 00167 break; 00168 case 5: 00169 DisplayFaultScreen(); 00170 break; 00171 default: 00172 break; 00173 } 00174 PrevScreen = CurrScreen; 00175 } 00176 Thread::yield(); 00177 } 00178 00179 }
Generated on Fri Jul 22 2022 22:40:57 by
1.7.2
