The Code Repository for the REV0 Steering Wheel.

Dependencies:   CANBuffer KS0108_fork mbed-rtos mbed CAN Addresses

Fork of REVO_Updated_Steering by Penn Electric

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Screens.h Source File

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 }