Integration with potentiometer
Dependencies: BSP_DISCO_F469NI LCD_DISCO_F469NI SD_DISCO_F469NI mbed
main.cpp
- Committer:
- formulas
- Date:
- 2017-12-07
- Revision:
- 1:61fe443f9d7f
- Parent:
- 0:e53b0806a628
File content as of revision 1:61fe443f9d7f:
#include "mbed.h" #include "functions.h" LCD_DISCO_F469NI lcd; SD_DISCO_F469NI sd; Serial pc(USBTX, USBRX); AnalogIn speed_value(A0); DigitalIn changescreen_command(D0); DigitalIn brake(D1); float Vin; extern GEAR *Gears; extern IMAGE LogoBig,LogoSmall,Branko; void MainScreen(); void FirstAuxScreen(); void SecondAuxScreen(); int main(){ DrawRGBImage(LogoBig,0,0); wait(0.5); lcd.SetTextColor(LCD_COLOR_WHITE); lcd.FillRect(0,0,800,480); MainScreen(); }; void MainScreen(){ lcd.SetTextColor(LCD_COLOR_BLACK); DrawSpeedMeter(); DrawRGBImage(LogoSmall,LogoSmallXPos,LogoSmallYPos); lcd.SetFont(&Font24); lcd.DisplayStringAt(30,170,(uint8_t*)"Oil Temp",LEFT_MODE); lcd.DisplayStringAt(30,320,(uint8_t*)"Water Temp",LEFT_MODE); lcd.DisplayStringAt(584,170,(uint8_t*)"TPS",LEFT_MODE); lcd.SetTextColor(LCD_COLOR_DARKRED); lcd.FillRect(560,340,230,68); lcd.SetBackColor(LCD_COLOR_DARKRED); PrintString("BRAKE",50,575,350,LCD_COLOR_BLACK); lcd.SetBackColor(LCD_COLOR_WHITE); uint8_t V0=0; int gear=1; int brake0; while(changescreen_command.read()==0){ Vin=(int)(speed_value.read()*150); UpdateSpeedMeter(V0,Vin-V0); lcd.SetTextColor(LCD_COLOR_BLACK); ChangeNumber(Vin,V0,100,OilTempXPos,OilTempYPos); ChangeNumber(Vin,V0,100,WaterTempXPos,WaterTempYPos); ChangeNumber(Vin,V0,100,TPSXPos,TPSYPos); BrakeSignal(brake.read(),brake0); V0=Vin; brake0=brake; if (Vin==0 & gear!=0){ PrintChar(Gears[0],GearXPos,GearYPos,LCD_COLOR_BLACK); gear=0; } else if (Vin>0 & Vin<=20 & gear!=1){ PrintChar(Gears[1],GearXPos,GearYPos,LCD_COLOR_BLACK); gear=1; } else if (Vin>20 & Vin<=40 & gear!=2){ PrintChar(Gears[2],GearXPos,GearYPos,LCD_COLOR_BLACK); gear=2; } else if (Vin>40 & Vin<=60 & gear!=3){ PrintChar(Gears[3],GearXPos,GearYPos,LCD_COLOR_BLACK); gear=3; } else if (Vin>60 & Vin<=80 & gear!=4){ PrintChar(Gears[4],GearXPos,GearYPos,LCD_COLOR_BLACK); gear=4; } else if (Vin>80 & Vin<=100 & gear!=5){ PrintChar(Gears[5],GearXPos,GearYPos,LCD_COLOR_BLACK); gear=5; } else if (Vin>100 & gear!=6){ PrintChar(Gears[6],GearXPos,GearYPos,LCD_COLOR_BLACK); gear=6; }; }; lcd.SetTextColor(LCD_COLOR_WHITE); lcd.FillRect(0,0,800,480); FirstAuxScreen(); lcd.SetTextColor(LCD_COLOR_BLACK); }; void FirstAuxScreen(){ PrintString("Oil P",50,20,25,LCD_COLOR_BLACK); PrintString("MAP",50,20,100,LCD_COLOR_BLACK); PrintString("Air Temp",50,20,175,LCD_COLOR_BLACK); PrintString("Lambda",50,20,250,LCD_COLOR_BLACK); PrintString("Volts",50,20,325,LCD_COLOR_BLACK); PrintString("Crank",50,20,400,LCD_COLOR_BLACK); PrintString("kPa",50,470,25,LCD_COLOR_BLACK); PrintString("kPa",50,470,100,LCD_COLOR_BLACK); PrintString("C",50,470,175,LCD_COLOR_BLACK); PrintString("Ratio",50,470,250,LCD_COLOR_BLACK); PrintString("V",50,470,325,LCD_COLOR_BLACK); DrawRGBImage(LogoSmall,LogoSmallXPos,LogoSmallYPos); int V0=0; while(changescreen_command.read()==0){ Vin=(int)(speed_value.read()*150); lcd.SetTextColor(LCD_COLOR_BLACK); ChangeNumber(Vin,V0,50,OilPXPos,OilPYPos); ChangeNumber(Vin,V0,50,MAPXPos,MAPYPos); ChangeNumber(Vin,V0,50,AirTempXPos,AirTempYPos); ChangeNumber(Vin,V0,50,LambdaXPos,LambdaYPos); ChangeNumber(Vin,V0,50,VoltsXpos,VoltsYPos); if (Vin>100){ PrintString("ERROR",50,CrankXPos,CrankYPos,LCD_COLOR_RED); lcd.SetTextColor(LCD_COLOR_BLACK); } else { PrintString(" ",50,350,400,LCD_COLOR_GREEN); PrintString("OK",50,CrankXPos,CrankYPos,LCD_COLOR_GREEN); lcd.SetTextColor(LCD_COLOR_BLACK); }; V0=Vin; }; lcd.SetTextColor(LCD_COLOR_WHITE); lcd.FillRect(0,0,800,480); SecondAuxScreen(); }; void SecondAuxScreen(){ PrintString("LVDT Sensors",50,200,20,LCD_COLOR_BLACK); DrawRGBImage(LogoSmall,LogoSmallXPos,LogoSmallYPos); int V0=0; lcd.SetTextColor(LCD_COLOR_BLACK); lcd.SetFont(&Font24); lcd.DisplayStringAt(FLLVDTBarXPos+25,FLLVDTBarYPos,(uint8_t*)"FL",LEFT_MODE); lcd.DisplayStringAt(FRLVDTBarXPos+25,FRLVDTBarYPos,(uint8_t*)"FR",LEFT_MODE); lcd.DisplayStringAt(BLLVDTBarXPos+25,BLLVDTBarYPos,(uint8_t*)"BL",LEFT_MODE); lcd.DisplayStringAt(BRLVDTBarXPos+25,BRLVDTBarYPos,(uint8_t*)"BR",LEFT_MODE); while(changescreen_command.read()==0){ Vin=(int)(speed_value.read()*150); ChangeNumber(Vin,V0,100,FLLVDTXPos,FLLVDTYPos); ChangeNumber(Vin,V0,100,FRLVDTXPos,FRLVDTYPos); ChangeNumber(Vin,V0,100,BLLVDTXPos,BLLVDTYPos); ChangeNumber(Vin,V0,100,BRLVDTXPos,BRLVDTYPos); UpdateLVDTScale(Vin,V0,FLLVDTBarXPos,FLLVDTBarYPos); UpdateLVDTScale(Vin,V0,FRLVDTBarXPos,FRLVDTBarYPos); UpdateLVDTScale(Vin,V0,BLLVDTBarXPos,BLLVDTBarYPos); UpdateLVDTScale(Vin,V0,BRLVDTBarXPos,BRLVDTBarYPos); V0=Vin; }; lcd.SetTextColor(LCD_COLOR_WHITE); lcd.FillRect(0,0,800,480); lcd.SetTextColor(LCD_COLOR_BLACK); MainScreen(); };