aa
Dependencies: mbed LCD_DISCO_F469NIa SD_DISCO_F469NI BSP_DISCO_F469NIa EEPROM_DISCO_F469NI
Diff: draw_print_library.cpp
- Revision:
- 6:d6e001d7cf16
- Parent:
- 4:0e8413277df8
--- a/draw_print_library.cpp Wed Nov 28 12:01:20 2018 +0000 +++ b/draw_print_library.cpp Wed Feb 12 18:49:12 2020 +0000 @@ -9,6 +9,7 @@ extern uint8_t lvdtref; extern int FL_LVDT_Ref,FR_LVDT_Ref,RL_LVDT_Ref,RR_LVDT_Ref; +extern uint8_t Acc_Temperature[],Acc_Temperature0[]; //Gears GEAR Idle{'0',256,384,idleBitmap}; @@ -18,6 +19,7 @@ GEAR Gear4{'4',256,384,gear4Bitmap}; GEAR Gear5{'5',256,384,gear5Bitmap}; GEAR Gear6{'6',256,384,gear6Bitmap}; +CHAR LogoSmallEA{'logosmallea',174,64,logosmallea}; GEAR *Gears[7]={&Idle,&Gear1,&Gear2,&Gear3,&Gear4,&Gear5,&Gear6}; //Gears array IMAGE LogoBig{800,480,LOGOBIG_START_ADDR}; //Big Logo IMAGE LogoSmall{160,64,LOGOSMALL_START_ADDR}; //Small Logo @@ -373,6 +375,23 @@ }; }; +int UpdateCapBar(int H, int H0, uint16_t StartXPos, uint16_t StartYPos){ + uint16_t BarWidth = 200, BarHeight = 300; + int YPos = StartYPos + BarHeight; + int percent = 3; + int dH = abs(H-H0); + int Hmax = 100; + + if(dH > 0){ + lcd.SetTextColor(LCD_COLOR_GREEN); + lcd.FillRect(StartXPos,StartYPos + (Hmax-H)*percent,BarWidth,dH*percent); + }else{ + lcd.SetTextColor(LCD_COLOR_WHITE); + lcd.FillRect(StartXPos,StartYPos + (Hmax-H0)*percent,BarWidth,dH*percent); + }; + lcd.SetTextColor(LCD_COLOR_BLACK); +}; + int UpdateLVDTScale(int H,int H0, uint16_t StartXPos, uint16_t StartYPos){ uint16_t BarWidth=80,BarHeight=8; int YPos; @@ -438,4 +457,241 @@ wait(0.1); //pc.printf("%d",k); }; +}; + +void DrawBatTempMap(){ + + uint8_t segment_num = 5; + uint8_t segment_distance = 20; + uint8_t StartXPos = 20, StartYPos = 20; + uint8_t column_num = 2; + uint8_t row_num = 7; + uint8_t cell_width = 60; + uint8_t cell_height = 50; + uint16_t x1,y1,x2,y2; + uint32_t color; + uint16_t R,G,B; + uint16_t BarXPos = 720, BarYPos = 20, ColorBar_width = 20, ColorBar_height = 6; + + lcd.SetTextColor(LCD_COLOR_BLACK); + PrintString("S1",50,50,380,LCD_COLOR_BLACK); + PrintString("S2",50,190,380,LCD_COLOR_BLACK); + PrintString("S3",50,330,380,LCD_COLOR_BLACK); + PrintString("S4",50,470,380,LCD_COLOR_BLACK); + PrintString("S5",50,610,380,LCD_COLOR_BLACK); + + for (uint8_t p = 0 ; p < segment_num ; p++){ + x1 = StartXPos+p*(segment_distance+2*cell_width); + y1 = StartYPos; + x2 = x1; + y2 = StartYPos+row_num*cell_height; + lcd.DrawLine(x1,y1,x2,y2); + x1 = x1 + cell_width; + x2 = x1; + lcd.DrawLine(x1,y1,x2,y2); + x1 = x1 + cell_width; + x2 = x1; + lcd.DrawLine(x1,y1,x2,y2); + x1 = StartXPos+p*(segment_distance+2*cell_width); + x2 = x1 + 2*cell_width; + y1 = StartYPos; + y2 = y1; + + for(uint8_t q = 0 ; q <= row_num ; q++){ + y1 = StartYPos + q*cell_height; + y2 = y1; + lcd.DrawLine(x1,y1,x2,y2); + }; + }; + + for(uint8_t temp = 10 ; temp <=70; temp++){ + lcd.SetTextColor(TempColor(temp)); + x1 = BarXPos; + y1 = BarYPos + 360 - (temp-10)*ColorBar_height; + lcd.FillRect(x1,y1,ColorBar_width,ColorBar_height); + //pc.printf("%d %d %d %d\n",x1,y1,x2,y2); + }; + lcd.SetTextColor(LCD_COLOR_BLACK); + lcd.DisplayStringAt(BarXPos+25,BarYPos,(uint8_t*)"70",LEFT_MODE); + lcd.DisplayStringAt(BarXPos+25,BarYPos+60,(uint8_t*)"60",LEFT_MODE); + lcd.DisplayStringAt(BarXPos+25,BarYPos+120,(uint8_t*)"50",LEFT_MODE); + lcd.DisplayStringAt(BarXPos+25,BarYPos+180,(uint8_t*)"40",LEFT_MODE); + lcd.DisplayStringAt(BarXPos+25,BarYPos+240,(uint8_t*)"30",LEFT_MODE); + lcd.DisplayStringAt(BarXPos+25,BarYPos+300,(uint8_t*)"20",LEFT_MODE); + lcd.DisplayStringAt(BarXPos+25,BarYPos+360,(uint8_t*)"10",LEFT_MODE); + +}; + +void UpdateBatTempMap(){ + uint8_t column,row; + + for (uint8_t cell = 1 ; cell <= 70 ; cell++ ){ + if (Acc_Temperature[cell] != Acc_Temperature0[cell]){ + column = cell/7 + 1; + row = cell%7; + if (row == 0){ + column = column - 1; + row = 7; + }; + pc.printf("column %d row %d \n",column,row); + UpdateCellTemp(column,row,Acc_Temperature[cell]); + Acc_Temperature0[cell] = Acc_Temperature[cell]; + }; + }; +}; + +uint32_t TempColor(uint8_t temperature){ + //tmin = 10 tmax = 70 + uint8_t tmin = 10, tmax = 70; + uint32_t k = temperature - 10; + uint32_t R,G,B; + uint32_t color; + + if (k < 20){ + R = 0; + G = 0xFF; + B = 0xFF*k/20; + if (k< 0){ + B = 0; + }; + } + else if(k < 40){ + R = 0xFF*(k-20)/20; + G = 0xFF*(40-k)/20; + B = 0xFF; + } + else if(k<60){ + R = 0xFF; + G = 0; + B = 0xFF*(60-k)/20; + } + else{ + R = 0xFF; + G = 0; + B = 0; + }; + color = (0xFF << 24) + (R << 16) + (G << 8) + B; + //color = 0xFF000000 + R*65536 + G*256 + B; + return color; +}; + +void UpdateCellTemp(uint8_t column, uint8_t row, uint8_t temp){ + uint8_t segment_num = 5; + uint8_t segment_distance = 20; + uint8_t StartXPos = 20, StartYPos = 20; + uint8_t column_num = 2; + uint8_t row_num = 7; + uint8_t cell_width = 60; + uint8_t cell_height = 50; + uint16_t x,y; + + switch(column){ + case (1): + x = StartXPos; + break; + case (2): + x = StartXPos + cell_width; + break; + case (3): + x = StartXPos + 2*cell_width + segment_distance; + break; + case (4): + x = StartXPos + 3*cell_width + segment_distance; + break; + case (5): + x = StartXPos + 4*cell_width + 2*segment_distance; + break; + case (6): + x = StartXPos + 5*cell_width + 2*segment_distance; + break; + case (7): + x = StartXPos + 6*cell_width + 3*segment_distance; + break; + case (8): + x = StartXPos + 7*cell_width + 3*segment_distance; + break; + case (9): + x = StartXPos + 8*cell_width + 4*segment_distance; + break; + case (10): + x = StartXPos + 9*cell_width + 4*segment_distance; + break; + }; + y = StartYPos + (row - 1)*cell_height; + lcd.SetTextColor(TempColor(temp)); + lcd.FillRect(x+1, y+1, cell_width - 2, cell_height - 2); +}; + +void SetFixedAccTemp(){ + Acc_Temperature[1] = 28; + Acc_Temperature[2] = 28; + Acc_Temperature[3] = 29; + Acc_Temperature[4] = 28; + Acc_Temperature[5] = 29; + Acc_Temperature[6] = 30; + Acc_Temperature[7] = 28; + Acc_Temperature[8] = 28; + Acc_Temperature[9] = 29; + Acc_Temperature[10] = 30; + Acc_Temperature[11] = 30; + Acc_Temperature[12] = 32; + Acc_Temperature[13] = 30; + Acc_Temperature[14] = 29; + Acc_Temperature[15] = 29; + Acc_Temperature[16] = 31; + Acc_Temperature[17] = 30; + Acc_Temperature[18] = 31; + Acc_Temperature[19] = 30; + Acc_Temperature[20] = 33; + Acc_Temperature[21] = 30; + Acc_Temperature[22] = 31; + Acc_Temperature[23] = 32; + Acc_Temperature[24] = 33; + Acc_Temperature[25] = 33; + Acc_Temperature[26] = 35; + Acc_Temperature[27] = 34; + Acc_Temperature[28] = 34; + Acc_Temperature[29] = 32; + Acc_Temperature[30] = 33; + Acc_Temperature[31] = 33; + Acc_Temperature[32] = 35; + Acc_Temperature[33] = 34; + Acc_Temperature[34] = 32; + Acc_Temperature[35] = 33; + Acc_Temperature[36] = 36; + Acc_Temperature[37] = 36; + Acc_Temperature[38] = 38; + Acc_Temperature[39] = 39; + Acc_Temperature[40] = 39; + Acc_Temperature[41] = 38; + Acc_Temperature[42] = 37; + Acc_Temperature[43] = 33; + Acc_Temperature[44] = 34; + Acc_Temperature[45] = 33; + Acc_Temperature[46] = 33; + Acc_Temperature[47] = 32; + Acc_Temperature[48] = 33; + Acc_Temperature[49] = 34; + Acc_Temperature[50] = 34; + Acc_Temperature[51] = 35; + Acc_Temperature[52] = 33; + Acc_Temperature[53] = 34; + Acc_Temperature[54] = 34; + Acc_Temperature[55] = 35; + Acc_Temperature[56] = 35; + Acc_Temperature[57] = 33; + Acc_Temperature[58] = 33; + Acc_Temperature[59] = 37; + Acc_Temperature[60] = 32; + Acc_Temperature[61] = 34; + Acc_Temperature[62] = 34; + Acc_Temperature[63] = 33; + Acc_Temperature[64] = 34; + Acc_Temperature[65] = 36; + Acc_Temperature[66] = 35; + Acc_Temperature[67] = 35; + Acc_Temperature[68] = 35; + Acc_Temperature[69] = 34; + Acc_Temperature[70] = 34; + }; \ No newline at end of file