aa

Dependencies:   mbed LCD_DISCO_F469NIa SD_DISCO_F469NI BSP_DISCO_F469NIa EEPROM_DISCO_F469NI

Revision:
6:d6e001d7cf16
Parent:
4:0e8413277df8
diff -r 4b63e6845a8e -r d6e001d7cf16 draw_print_library.cpp
--- 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