21.02.2019. revision - LCD screen works

Dependencies:   mbed LCD_DISCO_F469NIa SD_DISCO_F469NI BSP_DISCO_F469NIa

Committer:
Stefan_Sofijanic
Date:
Thu Feb 21 09:50:02 2019 +0000
Revision:
0:a7789614b67a
21.02.2019. revision - LCD screen works

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Stefan_Sofijanic 0:a7789614b67a 1 /*#include "mbed.h"
Stefan_Sofijanic 0:a7789614b67a 2 #include "functions.h"
Stefan_Sofijanic 0:a7789614b67a 3
Stefan_Sofijanic 0:a7789614b67a 4 LCD_DISCO_F469NI lcd;
Stefan_Sofijanic 0:a7789614b67a 5 SD_DISCO_F469NI sd;
Stefan_Sofijanic 0:a7789614b67a 6 Serial pc(USBTX, USBRX);
Stefan_Sofijanic 0:a7789614b67a 7 CAN can(PB_5, PB_13);
Stefan_Sofijanic 0:a7789614b67a 8 DigitalIn changescreen_command(D0);
Stefan_Sofijanic 0:a7789614b67a 9
Stefan_Sofijanic 0:a7789614b67a 10 int can_data;
Stefan_Sofijanic 0:a7789614b67a 11 int RPM;
Stefan_Sofijanic 0:a7789614b67a 12 extern GEAR *Gears;
Stefan_Sofijanic 0:a7789614b67a 13 extern IMAGE LogoBig,LogoSmall,Branko;
Stefan_Sofijanic 0:a7789614b67a 14
Stefan_Sofijanic 0:a7789614b67a 15 void MainScreen();
Stefan_Sofijanic 0:a7789614b67a 16 void FirstAuxScreen();
Stefan_Sofijanic 0:a7789614b67a 17 void SecondAuxScreen();
Stefan_Sofijanic 0:a7789614b67a 18
Stefan_Sofijanic 0:a7789614b67a 19 int main(){
Stefan_Sofijanic 0:a7789614b67a 20 DrawRGBImage(LogoBig,0,0);
Stefan_Sofijanic 0:a7789614b67a 21 wait(0.5);
Stefan_Sofijanic 0:a7789614b67a 22 lcd.SetTextColor(LCD_COLOR_WHITE);
Stefan_Sofijanic 0:a7789614b67a 23 lcd.FillRect(0,0,800,480);
Stefan_Sofijanic 0:a7789614b67a 24 MainScreen();
Stefan_Sofijanic 0:a7789614b67a 25 };
Stefan_Sofijanic 0:a7789614b67a 26
Stefan_Sofijanic 0:a7789614b67a 27
Stefan_Sofijanic 0:a7789614b67a 28 void MainScreen(){
Stefan_Sofijanic 0:a7789614b67a 29 lcd.SetTextColor(LCD_COLOR_BLACK);
Stefan_Sofijanic 0:a7789614b67a 30 DrawSpeedMeter();
Stefan_Sofijanic 0:a7789614b67a 31 DrawRGBImage(LogoSmall,LogoSmallXPos,LogoSmallYPos);
Stefan_Sofijanic 0:a7789614b67a 32 lcd.SetFont(&Font24);
Stefan_Sofijanic 0:a7789614b67a 33 lcd.DisplayStringAt(30,170,(uint8_t*)"Oil Temp",LEFT_MODE);
Stefan_Sofijanic 0:a7789614b67a 34 lcd.DisplayStringAt(30,320,(uint8_t*)"Water Temp",LEFT_MODE);
Stefan_Sofijanic 0:a7789614b67a 35 lcd.DisplayStringAt(584,170,(uint8_t*)"TPS",LEFT_MODE);
Stefan_Sofijanic 0:a7789614b67a 36 lcd.SetTextColor(LCD_COLOR_DARKRED);
Stefan_Sofijanic 0:a7789614b67a 37 lcd.FillRect(560,340,230,68);
Stefan_Sofijanic 0:a7789614b67a 38 lcd.SetBackColor(LCD_COLOR_DARKRED);
Stefan_Sofijanic 0:a7789614b67a 39 PrintString("BRAKE",50,575,350,LCD_COLOR_BLACK);
Stefan_Sofijanic 0:a7789614b67a 40 lcd.SetBackColor(LCD_COLOR_WHITE);
Stefan_Sofijanic 0:a7789614b67a 41
Stefan_Sofijanic 0:a7789614b67a 42 int Vin,V0=0,OilTemp,OilTemp0=0,WaterTemp,WaterTemp0=0,TPS,TPS0=0,Brake,Brake0=0,Gear,Gear0;
Stefan_Sofijanic 0:a7789614b67a 43
Stefan_Sofijanic 0:a7789614b67a 44 CANMessage msg;
Stefan_Sofijanic 0:a7789614b67a 45
Stefan_Sofijanic 0:a7789614b67a 46 //inicijalne vrednosti prikazane na ekranu
Stefan_Sofijanic 0:a7789614b67a 47 PrintChar(Gears[0],GearXPos,GearYPos,LCD_COLOR_BLACK);
Stefan_Sofijanic 0:a7789614b67a 48 ChangeNumber(0,111,100,OilTempXPos,OilTempYPos);
Stefan_Sofijanic 0:a7789614b67a 49 ChangeNumber(0,111,100,WaterTempXPos,WaterTempYPos);
Stefan_Sofijanic 0:a7789614b67a 50 ChangeNumber(0,111,100,TPSXPos,TPSYPos);
Stefan_Sofijanic 0:a7789614b67a 51 BrakeSignal(0,1);
Stefan_Sofijanic 0:a7789614b67a 52 wait(1);
Stefan_Sofijanic 0:a7789614b67a 53 while(changescreen_command.read()==0){
Stefan_Sofijanic 0:a7789614b67a 54 if(can.read(msg)){
Stefan_Sofijanic 0:a7789614b67a 55 can_data=msg.data[0];
Stefan_Sofijanic 0:a7789614b67a 56 lcd.SetTextColor(LCD_COLOR_BLACK);
Stefan_Sofijanic 0:a7789614b67a 57 if (msg.id==SPEED_ID){
Stefan_Sofijanic 0:a7789614b67a 58 Vin=(int)can_data;
Stefan_Sofijanic 0:a7789614b67a 59 UpdateSpeedMeter(V0,Vin-V0);
Stefan_Sofijanic 0:a7789614b67a 60 V0=Vin;
Stefan_Sofijanic 0:a7789614b67a 61 }else if (msg.id==GEAR_ID){
Stefan_Sofijanic 0:a7789614b67a 62 Gear=can_data;
Stefan_Sofijanic 0:a7789614b67a 63 if(Gear!=Gear0){
Stefan_Sofijanic 0:a7789614b67a 64 Gear=can_data;
Stefan_Sofijanic 0:a7789614b67a 65 printf("%d\n",Gear);
Stefan_Sofijanic 0:a7789614b67a 66 PrintChar(Gears[Gear],GearXPos,GearYPos,LCD_COLOR_BLACK);
Stefan_Sofijanic 0:a7789614b67a 67 Gear0=Gear;
Stefan_Sofijanic 0:a7789614b67a 68 };
Stefan_Sofijanic 0:a7789614b67a 69 }else if (msg.id==OIL_TEMP_ID){
Stefan_Sofijanic 0:a7789614b67a 70 OilTemp=can_data;
Stefan_Sofijanic 0:a7789614b67a 71 ChangeNumber(OilTemp,OilTemp0,100,OilTempXPos,OilTempYPos);
Stefan_Sofijanic 0:a7789614b67a 72 OilTemp0=OilTemp;
Stefan_Sofijanic 0:a7789614b67a 73 }else if (msg.id==WATER_TEMP_ID){
Stefan_Sofijanic 0:a7789614b67a 74 WaterTemp=can_data;
Stefan_Sofijanic 0:a7789614b67a 75 ChangeNumber(WaterTemp,WaterTemp0,100,WaterTempXPos,WaterTempYPos);
Stefan_Sofijanic 0:a7789614b67a 76 WaterTemp0=WaterTemp;
Stefan_Sofijanic 0:a7789614b67a 77 }else if (msg.id==TPS_ID){
Stefan_Sofijanic 0:a7789614b67a 78 TPS=can_data;
Stefan_Sofijanic 0:a7789614b67a 79 ChangeNumber(TPS,TPS0,100,TPSXPos,TPSYPos);
Stefan_Sofijanic 0:a7789614b67a 80 TPS0=TPS;
Stefan_Sofijanic 0:a7789614b67a 81 }else if (msg.id==BRAKE_ID){
Stefan_Sofijanic 0:a7789614b67a 82 Brake=can_data;
Stefan_Sofijanic 0:a7789614b67a 83 BrakeSignal(Brake,Brake0);
Stefan_Sofijanic 0:a7789614b67a 84 Brake0=Brake;
Stefan_Sofijanic 0:a7789614b67a 85 };
Stefan_Sofijanic 0:a7789614b67a 86 };
Stefan_Sofijanic 0:a7789614b67a 87 };
Stefan_Sofijanic 0:a7789614b67a 88 lcd.SetTextColor(LCD_COLOR_WHITE);
Stefan_Sofijanic 0:a7789614b67a 89 lcd.FillRect(0,0,800,480);
Stefan_Sofijanic 0:a7789614b67a 90 FirstAuxScreen();
Stefan_Sofijanic 0:a7789614b67a 91 lcd.SetTextColor(LCD_COLOR_BLACK);
Stefan_Sofijanic 0:a7789614b67a 92 };
Stefan_Sofijanic 0:a7789614b67a 93
Stefan_Sofijanic 0:a7789614b67a 94 void FirstAuxScreen(){
Stefan_Sofijanic 0:a7789614b67a 95 PrintString("Oil P",50,20,25,LCD_COLOR_BLACK);
Stefan_Sofijanic 0:a7789614b67a 96 PrintString("MAP",50,20,100,LCD_COLOR_BLACK);
Stefan_Sofijanic 0:a7789614b67a 97 PrintString("Air Temp",50,20,175,LCD_COLOR_BLACK);
Stefan_Sofijanic 0:a7789614b67a 98 PrintString("Lambda",50,20,250,LCD_COLOR_BLACK);
Stefan_Sofijanic 0:a7789614b67a 99 PrintString("Volts",50,20,325,LCD_COLOR_BLACK);
Stefan_Sofijanic 0:a7789614b67a 100 PrintString("Crank",50,20,400,LCD_COLOR_BLACK);
Stefan_Sofijanic 0:a7789614b67a 101 PrintString("kPa",50,470,25,LCD_COLOR_BLACK);
Stefan_Sofijanic 0:a7789614b67a 102 PrintString("kPa",50,470,100,LCD_COLOR_BLACK);
Stefan_Sofijanic 0:a7789614b67a 103 PrintString("C",50,470,175,LCD_COLOR_BLACK);
Stefan_Sofijanic 0:a7789614b67a 104 PrintString("Ratio",50,470,250,LCD_COLOR_BLACK);
Stefan_Sofijanic 0:a7789614b67a 105 PrintString("V",50,470,325,LCD_COLOR_BLACK);
Stefan_Sofijanic 0:a7789614b67a 106 DrawRGBImage(LogoSmall,LogoSmallXPos,LogoSmallYPos);
Stefan_Sofijanic 0:a7789614b67a 107
Stefan_Sofijanic 0:a7789614b67a 108 uint8_t OilP,OilP0=0,MAP,MAP0=0,AirTemp,AirTemp0=0,Lambda,Lambda0=0,Volts,Volts0=0,Crank,Crank0=1;
Stefan_Sofijanic 0:a7789614b67a 109
Stefan_Sofijanic 0:a7789614b67a 110 CANMessage msg;
Stefan_Sofijanic 0:a7789614b67a 111
Stefan_Sofijanic 0:a7789614b67a 112 ChangeNumber(0,111,50,OilPXPos,OilPYPos);
Stefan_Sofijanic 0:a7789614b67a 113 ChangeNumber(0,111,50,MAPXPos,MAPYPos);
Stefan_Sofijanic 0:a7789614b67a 114 ChangeNumber(0,111,50,AirTempXPos,AirTempYPos);
Stefan_Sofijanic 0:a7789614b67a 115 ChangeNumber(0,111,50,LambdaXPos,LambdaYPos);
Stefan_Sofijanic 0:a7789614b67a 116 ChangeNumber(0,111,50,VoltsXPos,VoltsYPos);
Stefan_Sofijanic 0:a7789614b67a 117
Stefan_Sofijanic 0:a7789614b67a 118 while(changescreen_command.read()==0){
Stefan_Sofijanic 0:a7789614b67a 119 if(can.read(msg)){
Stefan_Sofijanic 0:a7789614b67a 120 can_data=msg.data[0];
Stefan_Sofijanic 0:a7789614b67a 121 lcd.SetTextColor(LCD_COLOR_BLACK);
Stefan_Sofijanic 0:a7789614b67a 122 if (msg.id==OIL_P_ID){
Stefan_Sofijanic 0:a7789614b67a 123 OilP=can_data;
Stefan_Sofijanic 0:a7789614b67a 124 ChangeNumber(OilP,OilP0,100,OilPXPos,OilPYPos);
Stefan_Sofijanic 0:a7789614b67a 125 OilP0=OilP;
Stefan_Sofijanic 0:a7789614b67a 126 }else if (msg.id==MAP_ID){
Stefan_Sofijanic 0:a7789614b67a 127 MAP=can_data;
Stefan_Sofijanic 0:a7789614b67a 128 ChangeNumber(MAP,MAP0,100,MAPXPos,MAPYPos);
Stefan_Sofijanic 0:a7789614b67a 129 MAP0=MAP;
Stefan_Sofijanic 0:a7789614b67a 130 }else if (msg.id==AIR_TEMP_ID){
Stefan_Sofijanic 0:a7789614b67a 131 AirTemp=can_data;
Stefan_Sofijanic 0:a7789614b67a 132 ChangeNumber(AirTemp,AirTemp0,100,AirTempXPos,AirTempYPos);
Stefan_Sofijanic 0:a7789614b67a 133 AirTemp0=AirTemp;
Stefan_Sofijanic 0:a7789614b67a 134 }else if (msg.id==LAMBDA_ID){
Stefan_Sofijanic 0:a7789614b67a 135 Lambda=can_data;
Stefan_Sofijanic 0:a7789614b67a 136 ChangeNumber(Lambda,Lambda0,100,LambdaXPos,LambdaYPos);
Stefan_Sofijanic 0:a7789614b67a 137 Lambda0=Lambda;
Stefan_Sofijanic 0:a7789614b67a 138 }else if (msg.id==VOLTS_ID){
Stefan_Sofijanic 0:a7789614b67a 139 Volts=can_data;
Stefan_Sofijanic 0:a7789614b67a 140 ChangeNumber(Volts,Volts0,100,VoltsXPos,VoltsYPos);
Stefan_Sofijanic 0:a7789614b67a 141 Volts0=Volts;
Stefan_Sofijanic 0:a7789614b67a 142 }else if (msg.id==CRANK_ID){
Stefan_Sofijanic 0:a7789614b67a 143 Crank=can_data;
Stefan_Sofijanic 0:a7789614b67a 144 if(Crank!=Crank0){
Stefan_Sofijanic 0:a7789614b67a 145 if(Crank==1){
Stefan_Sofijanic 0:a7789614b67a 146 PrintString("ERROR",50,CrankXPos,CrankYPos,LCD_COLOR_RED);
Stefan_Sofijanic 0:a7789614b67a 147 }else if(Crank==0){
Stefan_Sofijanic 0:a7789614b67a 148 PrintString("OK",50,CrankXPos,CrankYPos,LCD_COLOR_RED);
Stefan_Sofijanic 0:a7789614b67a 149 };
Stefan_Sofijanic 0:a7789614b67a 150 };
Stefan_Sofijanic 0:a7789614b67a 151 Crank0=Crank;
Stefan_Sofijanic 0:a7789614b67a 152 };
Stefan_Sofijanic 0:a7789614b67a 153 };
Stefan_Sofijanic 0:a7789614b67a 154 };
Stefan_Sofijanic 0:a7789614b67a 155 lcd.SetTextColor(LCD_COLOR_WHITE);
Stefan_Sofijanic 0:a7789614b67a 156 lcd.FillRect(0,0,800,480);
Stefan_Sofijanic 0:a7789614b67a 157 SecondAuxScreen();
Stefan_Sofijanic 0:a7789614b67a 158
Stefan_Sofijanic 0:a7789614b67a 159 };
Stefan_Sofijanic 0:a7789614b67a 160
Stefan_Sofijanic 0:a7789614b67a 161 void SecondAuxScreen(){
Stefan_Sofijanic 0:a7789614b67a 162 PrintString("LVDT Sensors",50,200,20,LCD_COLOR_BLACK);
Stefan_Sofijanic 0:a7789614b67a 163 DrawRGBImage(LogoSmall,LogoSmallXPos,LogoSmallYPos);
Stefan_Sofijanic 0:a7789614b67a 164 lcd.SetTextColor(LCD_COLOR_BLACK);
Stefan_Sofijanic 0:a7789614b67a 165 lcd.SetFont(&Font24);
Stefan_Sofijanic 0:a7789614b67a 166 lcd.DisplayStringAt(FLLVDTBarXPos+25,FLLVDTBarYPos,(uint8_t*)"FL",LEFT_MODE);
Stefan_Sofijanic 0:a7789614b67a 167 lcd.DisplayStringAt(FRLVDTBarXPos+25,FRLVDTBarYPos,(uint8_t*)"FR",LEFT_MODE);
Stefan_Sofijanic 0:a7789614b67a 168 lcd.DisplayStringAt(BLLVDTBarXPos+25,BLLVDTBarYPos,(uint8_t*)"BL",LEFT_MODE);
Stefan_Sofijanic 0:a7789614b67a 169 lcd.DisplayStringAt(BRLVDTBarXPos+25,BRLVDTBarYPos,(uint8_t*)"BR",LEFT_MODE);
Stefan_Sofijanic 0:a7789614b67a 170
Stefan_Sofijanic 0:a7789614b67a 171 uint8_t FLLVDT,FLLVDT0=0,FRLVDT,FRLVDT0=0,BLLVDT,BLLVDT0=0,BRLVDT,BRLVDT0=0;
Stefan_Sofijanic 0:a7789614b67a 172
Stefan_Sofijanic 0:a7789614b67a 173 CANMessage msg;
Stefan_Sofijanic 0:a7789614b67a 174
Stefan_Sofijanic 0:a7789614b67a 175 ChangeNumber(0,111,100,FLLVDTXPos,FLLVDTYPos);
Stefan_Sofijanic 0:a7789614b67a 176 ChangeNumber(0,111,100,FRLVDTXPos,FRLVDTYPos);
Stefan_Sofijanic 0:a7789614b67a 177 ChangeNumber(0,111,100,BLLVDTXPos,BLLVDTYPos);
Stefan_Sofijanic 0:a7789614b67a 178 ChangeNumber(0,111,100,BRLVDTXPos,BRLVDTYPos);
Stefan_Sofijanic 0:a7789614b67a 179
Stefan_Sofijanic 0:a7789614b67a 180 while(changescreen_command.read()==0){
Stefan_Sofijanic 0:a7789614b67a 181 if(can.read(msg)){
Stefan_Sofijanic 0:a7789614b67a 182 can_data=msg.data[0];
Stefan_Sofijanic 0:a7789614b67a 183 if(msg.id==FL_LVDT_ID){
Stefan_Sofijanic 0:a7789614b67a 184 FLLVDT=can_data;
Stefan_Sofijanic 0:a7789614b67a 185 ChangeNumber(FLLVDT,FLLVDT0,100,FLLVDTXPos,FLLVDTYPos);
Stefan_Sofijanic 0:a7789614b67a 186 UpdateLVDTScale(FLLVDT,FLLVDT0,FLLVDTBarXPos,FLLVDTBarYPos);
Stefan_Sofijanic 0:a7789614b67a 187 FLLVDT0=FLLVDT;
Stefan_Sofijanic 0:a7789614b67a 188 }else if(msg.id==FR_LVDT_ID){
Stefan_Sofijanic 0:a7789614b67a 189 FRLVDT=can_data;
Stefan_Sofijanic 0:a7789614b67a 190 ChangeNumber(FRLVDT,FRLVDT0,100,FRLVDTXPos,FRLVDTYPos);
Stefan_Sofijanic 0:a7789614b67a 191 UpdateLVDTScale(FRLVDT,FRLVDT0,FRLVDTBarXPos,FRLVDTBarYPos);
Stefan_Sofijanic 0:a7789614b67a 192 FRLVDT0=FRLVDT;
Stefan_Sofijanic 0:a7789614b67a 193 }else if(msg.id==BL_LVDT_ID){
Stefan_Sofijanic 0:a7789614b67a 194 BLLVDT=can_data;
Stefan_Sofijanic 0:a7789614b67a 195 ChangeNumber(BLLVDT,BLLVDT0,100,BLLVDTXPos,BLLVDTYPos);
Stefan_Sofijanic 0:a7789614b67a 196 UpdateLVDTScale(BLLVDT,BLLVDT0,BLLVDTBarXPos,BLLVDTBarYPos);
Stefan_Sofijanic 0:a7789614b67a 197 BLLVDT0=BLLVDT;
Stefan_Sofijanic 0:a7789614b67a 198 }else if(msg.id==BR_LVDT_ID){
Stefan_Sofijanic 0:a7789614b67a 199 BRLVDT=can_data;
Stefan_Sofijanic 0:a7789614b67a 200 ChangeNumber(BRLVDT,BRLVDT0,100,BRLVDTXPos,BRLVDTYPos);
Stefan_Sofijanic 0:a7789614b67a 201 UpdateLVDTScale(BRLVDT,BRLVDT0,BRLVDTBarXPos,BRLVDTBarYPos);
Stefan_Sofijanic 0:a7789614b67a 202 BRLVDT0=BRLVDT;
Stefan_Sofijanic 0:a7789614b67a 203 };
Stefan_Sofijanic 0:a7789614b67a 204 };
Stefan_Sofijanic 0:a7789614b67a 205 };
Stefan_Sofijanic 0:a7789614b67a 206 lcd.SetTextColor(LCD_COLOR_WHITE);
Stefan_Sofijanic 0:a7789614b67a 207 lcd.FillRect(0,0,800,480);
Stefan_Sofijanic 0:a7789614b67a 208 lcd.SetTextColor(LCD_COLOR_BLACK);
Stefan_Sofijanic 0:a7789614b67a 209 MainScreen();
Stefan_Sofijanic 0:a7789614b67a 210 };*/