aa

Dependencies:   mbed LCD_DISCO_F469NIa SD_DISCO_F469NI BSP_DISCO_F469NIa EEPROM_DISCO_F469NI

Committer:
formulas
Date:
Wed Feb 12 18:49:12 2020 +0000
Revision:
6:d6e001d7cf16
Parent:
4:0e8413277df8
aaa

Who changed what in which revision?

UserRevisionLine numberNew contents of line
formulas 0:38c3afd99aeb 1 #include "draw_print_library.h"
formulas 0:38c3afd99aeb 2 #include "gears.h"
formulas 0:38c3afd99aeb 3 #include "font100.h"
formulas 0:38c3afd99aeb 4 #include "font50.h"
formulas 0:38c3afd99aeb 5
formulas 0:38c3afd99aeb 6 extern LCD_DISCO_F469NI lcd;
formulas 0:38c3afd99aeb 7 extern SD_DISCO_F469NI sd;
formulas 0:38c3afd99aeb 8 extern Serial pc;
formulas 0:38c3afd99aeb 9
formulas 0:38c3afd99aeb 10 extern uint8_t lvdtref;
formulas 0:38c3afd99aeb 11 extern int FL_LVDT_Ref,FR_LVDT_Ref,RL_LVDT_Ref,RR_LVDT_Ref;
formulas 6:d6e001d7cf16 12 extern uint8_t Acc_Temperature[],Acc_Temperature0[];
formulas 0:38c3afd99aeb 13
formulas 0:38c3afd99aeb 14 //Gears
formulas 0:38c3afd99aeb 15 GEAR Idle{'0',256,384,idleBitmap};
formulas 0:38c3afd99aeb 16 GEAR Gear1{'1',256,384,gear1Bitmap};
formulas 0:38c3afd99aeb 17 GEAR Gear2{'2',256,384,gear2Bitmap};
formulas 0:38c3afd99aeb 18 GEAR Gear3{'3',256,384,gear3Bitmap};
formulas 0:38c3afd99aeb 19 GEAR Gear4{'4',256,384,gear4Bitmap};
formulas 0:38c3afd99aeb 20 GEAR Gear5{'5',256,384,gear5Bitmap};
formulas 0:38c3afd99aeb 21 GEAR Gear6{'6',256,384,gear6Bitmap};
formulas 6:d6e001d7cf16 22 CHAR LogoSmallEA{'logosmallea',174,64,logosmallea};
formulas 0:38c3afd99aeb 23 GEAR *Gears[7]={&Idle,&Gear1,&Gear2,&Gear3,&Gear4,&Gear5,&Gear6}; //Gears array
formulas 0:38c3afd99aeb 24 IMAGE LogoBig{800,480,LOGOBIG_START_ADDR}; //Big Logo
formulas 0:38c3afd99aeb 25 IMAGE LogoSmall{160,64,LOGOSMALL_START_ADDR}; //Small Logo
formulas 0:38c3afd99aeb 26 IMAGE Branko{250,480,1576960}; //Branko
formulas 0:38c3afd99aeb 27 IMAGE NewYearCongat{800,480,NEW_YEAR_CONGAT_START_ADDR};
formulas 0:38c3afd99aeb 28 //IMAGE Miljana[250,480,---};
formulas 0:38c3afd99aeb 29
formulas 0:38c3afd99aeb 30 void DrawSpeedMeter(){
formulas 0:38c3afd99aeb 31 uint16_t x1,y1,x2,y2,x3,y3,x4,y4;
formulas 0:38c3afd99aeb 32 double THETA1=PHI,THETA2;
formulas 0:38c3afd99aeb 33
formulas 0:38c3afd99aeb 34 //Set starting point for drawing
formulas 0:38c3afd99aeb 35 x1=(int)(400-530*cos(THETA1));
formulas 0:38c3afd99aeb 36 y1=(int)(550-530*sin(THETA1));
formulas 0:38c3afd99aeb 37 x2=(int)(400-500*cos(THETA1));
formulas 0:38c3afd99aeb 38 y2=(int)(550-500*sin(THETA1));
formulas 0:38c3afd99aeb 39
formulas 0:38c3afd99aeb 40 lcd.SetTextColor(LCD_COLOR_BLACK);
formulas 0:38c3afd99aeb 41 for (int V=0;V<=150;V++){ //Draw from 0 to 150
formulas 0:38c3afd99aeb 42 //Set angle for next speed scale value
formulas 0:38c3afd99aeb 43 THETA2=THETA1+ALPHA/Vmax;
formulas 0:38c3afd99aeb 44 x3=(int)(400-530*cos(THETA2));
formulas 0:38c3afd99aeb 45 y3=(int)(550-530*sin(THETA2));
formulas 0:38c3afd99aeb 46 x4=(int)(400-500*cos(THETA2));
formulas 0:38c3afd99aeb 47 y4=(int)(550-500*sin(THETA2));
formulas 0:38c3afd99aeb 48 if(V<150){ //Draw arch section
formulas 0:38c3afd99aeb 49 lcd.DrawLine(x1,y1,x3,y3);
formulas 0:38c3afd99aeb 50 lcd.DrawLine(x2,y2,x4,y4);
formulas 0:38c3afd99aeb 51 };
formulas 0:38c3afd99aeb 52 lcd.SetFont(&Font20);
formulas 0:38c3afd99aeb 53 if(V%10==0){ //Print round values (0,10,20,...)
formulas 0:38c3afd99aeb 54 lcd.DrawLine(x1,y1,x2,y2); //Draw round scale value
formulas 0:38c3afd99aeb 55 char Vchar[3];
formulas 0:38c3afd99aeb 56 sprintf(Vchar,"%d",(int)V);
formulas 0:38c3afd99aeb 57 uint16_t xnum=x2,ynum=y2;
formulas 0:38c3afd99aeb 58 if (V==0 | V==10 | V==20 | V==30){ //Position of printed value
formulas 0:38c3afd99aeb 59 xnum=x2,ynum=y2+5;
formulas 0:38c3afd99aeb 60 }else if (V==40 | V==50 | V==60){
formulas 0:38c3afd99aeb 61 xnum=x2-3,ynum=y2+5;
formulas 0:38c3afd99aeb 62 }else if (V==70 | V==80){
formulas 0:38c3afd99aeb 63 xnum=x2-14,ynum=y2+5;
formulas 0:38c3afd99aeb 64 }else if (V==90){
formulas 0:38c3afd99aeb 65 xnum=x2-20,ynum=y2+5;
formulas 0:38c3afd99aeb 66 }else if (V==100 | V==110 | V==120) {
formulas 0:38c3afd99aeb 67 xnum=x2-35,ynum=y2+4;
formulas 0:38c3afd99aeb 68 }else if (V==130 | V==140 | V==150){
formulas 0:38c3afd99aeb 69 xnum=x2-35,ynum=y2+5;
formulas 0:38c3afd99aeb 70 };
formulas 0:38c3afd99aeb 71 lcd.DisplayStringAt(xnum,ynum,(uint8_t*)Vchar,LEFT_MODE);
formulas 0:38c3afd99aeb 72 };
formulas 0:38c3afd99aeb 73 x1=x3,y1=y3,x2=x4,y2=y4; //Increment position
formulas 0:38c3afd99aeb 74 THETA1=THETA2;
formulas 0:38c3afd99aeb 75 };
formulas 0:38c3afd99aeb 76 };
formulas 0:38c3afd99aeb 77
formulas 0:38c3afd99aeb 78 void PrintChar(CHAR Char,uint16_t StartXPos,uint16_t StartYPos,uint32_t TextColor){
formulas 0:38c3afd99aeb 79 uint16_t width=Char.width;
formulas 0:38c3afd99aeb 80 uint16_t height=Char.height;
formulas 0:38c3afd99aeb 81 uint16_t horpos,vertpos;
formulas 0:38c3afd99aeb 82 uint16_t bitloc;
formulas 0:38c3afd99aeb 83 uint32_t DrawColor;
formulas 0:38c3afd99aeb 84 char pos[9];
formulas 0:38c3afd99aeb 85 //uint8_t dbg[50];
formulas 0:38c3afd99aeb 86 for(horpos=0;horpos<width;horpos++){ //Bitmaps are row after row
formulas 0:38c3afd99aeb 87 for(vertpos=0;vertpos<height/8;vertpos++){
formulas 0:38c3afd99aeb 88 sprintf(pos,BYTE_TO_BINARY_PATTERN,BYTE_TO_BINARY(Char.bitmap[horpos*height/8+vertpos])); //Convert uint8_t from hex to binary. 1 to fill, 0 to skip
formulas 0:38c3afd99aeb 89 //pc.printf("%d. %s\n",horpos*height/8+vertpos,pos);
formulas 0:38c3afd99aeb 90 for(bitloc=0;bitloc<8;bitloc++) {
formulas 0:38c3afd99aeb 91 if (pos[bitloc]=='1') {
formulas 0:38c3afd99aeb 92 DrawColor=TextColor;
formulas 0:38c3afd99aeb 93 }
formulas 0:38c3afd99aeb 94 else{
formulas 0:38c3afd99aeb 95 DrawColor=lcd.GetBackColor();
formulas 0:38c3afd99aeb 96 };
formulas 0:38c3afd99aeb 97 lcd.DrawPixel(StartXPos+horpos,StartYPos+vertpos*8+bitloc,DrawColor);
formulas 0:38c3afd99aeb 98 //pc.printf("%d,%d\n",StartXPos+horpos,StartYPos+vertpos*8+bitloc);
formulas 0:38c3afd99aeb 99 }
formulas 0:38c3afd99aeb 100 }
formulas 0:38c3afd99aeb 101 }
formulas 0:38c3afd99aeb 102 lcd.SetTextColor(LCD_COLOR_BLACK);
formulas 0:38c3afd99aeb 103 };
formulas 0:38c3afd99aeb 104
formulas 0:38c3afd99aeb 105 void PrintString(char str[],int font,uint16_t StartXPos,uint16_t StartYPos,uint32_t TextColor){
formulas 0:38c3afd99aeb 106 //pc.printf("Function activated.\n");
formulas 0:38c3afd99aeb 107 char *a=str;
formulas 0:38c3afd99aeb 108 int p=0;
formulas 0:38c3afd99aeb 109 while(a[p]){
formulas 0:38c3afd99aeb 110 //pc.printf("Searching char: %c\n",a[p]);
formulas 0:38c3afd99aeb 111 for(int k=0;k<68;k++){
formulas 0:38c3afd99aeb 112 //pc.printf("Character %c\n",(*font50[k]).name);
formulas 0:38c3afd99aeb 113 if((*font50[k]).name==a[p]){
formulas 0:38c3afd99aeb 114 // pc.printf("Found!\n");
formulas 0:38c3afd99aeb 115 PrintChar(*font50[k],StartXPos,StartYPos,TextColor);
formulas 0:38c3afd99aeb 116 StartXPos+=(*font50[k]).width;
formulas 0:38c3afd99aeb 117 k=100;
formulas 0:38c3afd99aeb 118 };
formulas 0:38c3afd99aeb 119 };
formulas 0:38c3afd99aeb 120 //pc.printf("End.\n");
formulas 0:38c3afd99aeb 121 p++;
formulas 0:38c3afd99aeb 122 };
formulas 0:38c3afd99aeb 123 };
formulas 0:38c3afd99aeb 124
formulas 0:38c3afd99aeb 125
formulas 0:38c3afd99aeb 126
formulas 0:38c3afd99aeb 127
formulas 0:38c3afd99aeb 128 void ChangeNumber(int num,int num0,int Font,uint16_t StartXPos,uint16_t StartYPos, int digits, int dec_point, int sign){
formulas 0:38c3afd99aeb 129 //Function only changes the decimals that change. If number changes from 146 to 147, it only changes 6 to 7.
formulas 0:38c3afd99aeb 130 int digit[digits],digit0[digits];
formulas 0:38c3afd99aeb 131 int sum=0,sum0=0,k,aux=0;
formulas 0:38c3afd99aeb 132 CHAR **font;
formulas 0:38c3afd99aeb 133 if(abs(num)<pow(float(10),digits)){
formulas 0:38c3afd99aeb 134 digit[0]=abs(num)/pow((float)10,(float)(digits-1));
formulas 0:38c3afd99aeb 135 digit0[0]=abs(num0)/pow((float)10,(float)(digits-1));
formulas 0:38c3afd99aeb 136 for(k=1;k<digits;k++){
formulas 0:38c3afd99aeb 137 sum=(sum+digit[k-1])*10;
formulas 0:38c3afd99aeb 138 digit[k]=abs(num)/pow((float)10,(float)(digits-1-k))-sum;
formulas 0:38c3afd99aeb 139 sum0=(sum0+digit0[k-1])*10;
formulas 0:38c3afd99aeb 140 digit0[k]=abs(num0)/pow(10,(float)(digits-1-k))-sum0;
formulas 0:38c3afd99aeb 141 };
formulas 0:38c3afd99aeb 142
formulas 0:38c3afd99aeb 143 if (Font==50){
formulas 0:38c3afd99aeb 144 font=font50;
formulas 0:38c3afd99aeb 145 }else if (Font==100){
formulas 0:38c3afd99aeb 146 font=font100;
formulas 0:38c3afd99aeb 147 };
formulas 0:38c3afd99aeb 148
formulas 0:38c3afd99aeb 149 lcd.SetTextColor(LCD_COLOR_BLACK);
formulas 0:38c3afd99aeb 150 uint8_t char_width=(*font[0]).width;
formulas 0:38c3afd99aeb 151
formulas 0:38c3afd99aeb 152 if (sign==1){
formulas 0:38c3afd99aeb 153 if(num<0 & num0>=0){ //Print minus if number lower than 0
formulas 0:38c3afd99aeb 154 PrintChar(*font[10],StartXPos,StartYPos,lcd.GetTextColor());
formulas 0:38c3afd99aeb 155 }else if(num>=0 & num0<0){ //Print blank if number lower than 0
formulas 0:38c3afd99aeb 156 lcd.SetTextColor(LCD_COLOR_WHITE);
formulas 0:38c3afd99aeb 157 lcd.FillRect(StartXPos,StartYPos,(*font[10]).width,(*font[10]).height);
formulas 0:38c3afd99aeb 158 lcd.SetTextColor(LCD_COLOR_BLACK);
formulas 0:38c3afd99aeb 159 };
formulas 0:38c3afd99aeb 160 aux+=(*font[10]).width;
formulas 0:38c3afd99aeb 161 };
formulas 0:38c3afd99aeb 162
formulas 0:38c3afd99aeb 163 for(k=0;k<digits;k++){
formulas 0:38c3afd99aeb 164 if(dec_point==k & dec_point>0){ //Default is for font50. This is not an universal solution, but it is in use because all font 100 infos are integers
formulas 0:38c3afd99aeb 165 PrintChar(Chardot_50,StartXPos+dec_point*char_width,StartYPos,lcd.GetTextColor());
formulas 0:38c3afd99aeb 166 aux+=Chardot_50.width;
formulas 0:38c3afd99aeb 167 };
formulas 0:38c3afd99aeb 168 if(digit[k]!=digit0[k]){
formulas 0:38c3afd99aeb 169 PrintChar(*font[digit[k]],StartXPos+k*char_width+aux,StartYPos,lcd.GetTextColor());
formulas 0:38c3afd99aeb 170 };
formulas 0:38c3afd99aeb 171 };
formulas 0:38c3afd99aeb 172 };
formulas 0:38c3afd99aeb 173 };
formulas 0:38c3afd99aeb 174
formulas 0:38c3afd99aeb 175 void SetNumber(int num,int Font,uint16_t StartXPos,uint16_t StartYPos, int digits, int dec_point, int sign){
formulas 0:38c3afd99aeb 176 int digit[3],sum=0,k,aux=0;
formulas 0:38c3afd99aeb 177 CHAR **font;
formulas 0:38c3afd99aeb 178
formulas 0:38c3afd99aeb 179 if (Font==50){
formulas 0:38c3afd99aeb 180 font=font50;
formulas 0:38c3afd99aeb 181 }else if (Font==100){
formulas 0:38c3afd99aeb 182 font=font100;
formulas 0:38c3afd99aeb 183 };
formulas 0:38c3afd99aeb 184
formulas 0:38c3afd99aeb 185 lcd.SetTextColor(LCD_COLOR_BLACK);
formulas 0:38c3afd99aeb 186 uint8_t char_width=(*font[0]).width;
formulas 0:38c3afd99aeb 187
formulas 0:38c3afd99aeb 188 if(num<pow(float(10),digits)){
formulas 0:38c3afd99aeb 189 digit[0]=abs(num)/pow((float)10,(float)(digits-1));
formulas 0:38c3afd99aeb 190 for(k=1;k<digits;k++){
formulas 0:38c3afd99aeb 191 sum=(sum+digit[k-1])*10;
formulas 0:38c3afd99aeb 192 digit[k]=abs(num)/pow((float)10,(float)(digits-1-k))-sum;
formulas 0:38c3afd99aeb 193 };
formulas 0:38c3afd99aeb 194
formulas 0:38c3afd99aeb 195 if(sign==1){
formulas 0:38c3afd99aeb 196 if(num<0){ //Print minus if number lower than 0
formulas 0:38c3afd99aeb 197 PrintChar(*font[10],StartXPos,StartYPos,lcd.GetTextColor());
formulas 0:38c3afd99aeb 198 }else if(num>=0){ //Print blank if number lower than 0
formulas 0:38c3afd99aeb 199 lcd.SetTextColor(LCD_COLOR_WHITE);
formulas 0:38c3afd99aeb 200 lcd.FillRect(StartXPos,StartYPos,(*font[10]).width,(*font[10]).height);
formulas 0:38c3afd99aeb 201 lcd.SetTextColor(LCD_COLOR_BLACK);
formulas 0:38c3afd99aeb 202 };
formulas 0:38c3afd99aeb 203 aux+=(*font[10]).width;
formulas 0:38c3afd99aeb 204 };
formulas 0:38c3afd99aeb 205
formulas 0:38c3afd99aeb 206 for(k=0;k<digits;k++){
formulas 0:38c3afd99aeb 207 if(dec_point==k & dec_point>0){ //Default is for font50. This is not an universal solution, but it is in use because all font 100 infos are integers
formulas 0:38c3afd99aeb 208 PrintChar(Chardot_50,StartXPos+dec_point*char_width,StartYPos,lcd.GetTextColor());
formulas 0:38c3afd99aeb 209 aux+=Chardot_50.width;
formulas 0:38c3afd99aeb 210 };
formulas 0:38c3afd99aeb 211 PrintChar(*font[digit[k]],StartXPos+k*char_width+aux,StartYPos,lcd.GetTextColor());
formulas 0:38c3afd99aeb 212 };
formulas 0:38c3afd99aeb 213 };
formulas 0:38c3afd99aeb 214 };
formulas 0:38c3afd99aeb 215
formulas 0:38c3afd99aeb 216 void DrawRGBImage(IMAGE Image,uint16_t StartXPos,uint16_t StartYPos){
formulas 0:38c3afd99aeb 217 uint32_t p,q;
formulas 0:38c3afd99aeb 218 uint32_t BlockBuffer[128];
formulas 0:38c3afd99aeb 219 uint16_t xpos=0,ypos=0;
formulas 0:38c3afd99aeb 220 for(p=0;p<Image.width*Image.height/128;p++){
formulas 0:38c3afd99aeb 221 sd.ReadBlocks(BlockBuffer,Image.START_ADDR+p*512,1,SD_DATATIMEOUT);
formulas 0:38c3afd99aeb 222 for(q=0;q<128;q++){
formulas 0:38c3afd99aeb 223 if(ypos<Image.height){
formulas 0:38c3afd99aeb 224 lcd.DrawPixel(StartXPos+xpos,StartYPos+ypos,BlockBuffer[q]);
formulas 0:38c3afd99aeb 225 }
formulas 0:38c3afd99aeb 226 else{
formulas 0:38c3afd99aeb 227 xpos++;
formulas 0:38c3afd99aeb 228 ypos=0;
formulas 0:38c3afd99aeb 229 lcd.DrawPixel(StartXPos+xpos,StartYPos+ypos,BlockBuffer[q]);
formulas 0:38c3afd99aeb 230 }
formulas 0:38c3afd99aeb 231 ypos++;
formulas 0:38c3afd99aeb 232 };
formulas 0:38c3afd99aeb 233 };
formulas 0:38c3afd99aeb 234 };
formulas 0:38c3afd99aeb 235
formulas 0:38c3afd99aeb 236
formulas 0:38c3afd99aeb 237 void UpdateSpeedMeter(int V, int dV){
formulas 0:38c3afd99aeb 238 //Prednost koda je sto se docrtava samo onaj deo koji se menja. Tako ako sa 55 kmh prelazimo na 57 khm on obradjuje samo polja 55 i 56.
formulas 0:38c3afd99aeb 239 //Kada bi se samo brisala stara i crtala nova vrednost na baru ukupno bi morali da obradimo 55+57=112 umesto samo 2 bara.
formulas 0:38c3afd99aeb 240 uint32_t OldColor,RewriteColor;
formulas 0:38c3afd99aeb 241 double THETA1,THETA2;
formulas 0:38c3afd99aeb 242 uint16_t x1,y1,x2,y2,x3,y3,x4,y4;
formulas 0:38c3afd99aeb 243 uint16_t startx,starty,leftupx,rightupx,leftdownx,rightdownx,ypos;
formulas 0:38c3afd99aeb 244
formulas 0:38c3afd99aeb 245 //Obradjivanje polje po polje. Svako polje prestavlja odredjenu vrednost kmh.
formulas 0:38c3afd99aeb 246 for(int k=1;k<=abs(dV);k++){
formulas 0:38c3afd99aeb 247 //Uokviravanje polja koje se trenutno obradjuje. Granice su crne kako bi se jasno razgranicilo polje od ostatka bara.
formulas 0:38c3afd99aeb 248 lcd.SetTextColor(LCD_COLOR_BLACK);
formulas 0:38c3afd99aeb 249 THETA1=PHI+((double)V)*ALPHA/Vmax;
formulas 0:38c3afd99aeb 250 x1=(int)(400-530*cos(THETA1));
formulas 0:38c3afd99aeb 251 y1=(int)(550-530*sin(THETA1));
formulas 0:38c3afd99aeb 252 x2=(int)(400-500*cos(THETA1));
formulas 0:38c3afd99aeb 253 y2=(int)(550-500*sin(THETA1));
formulas 0:38c3afd99aeb 254 THETA2=PHI+((double)(V+dV/abs(dV)))*ALPHA/Vmax;
formulas 0:38c3afd99aeb 255 x3=(int)(400-530*cos(THETA2));
formulas 0:38c3afd99aeb 256 y3=(int)(550-530*sin(THETA2));
formulas 0:38c3afd99aeb 257 x4=(int)(400-500*cos(THETA2));
formulas 0:38c3afd99aeb 258 y4=(int)(550-500*sin(THETA2));
formulas 0:38c3afd99aeb 259 lcd.DrawLine(x1,y1,x2,y2);
formulas 0:38c3afd99aeb 260 lcd.DrawLine(x3,y3,x4,y4);
formulas 0:38c3afd99aeb 261 lcd.DrawLine(x1,y1,x3,y3);
formulas 0:38c3afd99aeb 262 lcd.DrawLine(x2,y2,x4,y4);
formulas 0:38c3afd99aeb 263
formulas 0:38c3afd99aeb 264 //Odredjivanje pocetnih koordinata i kojom bojom ce se polje bojiti.
formulas 0:38c3afd99aeb 265 if(dV>0){
formulas 0:38c3afd99aeb 266 startx=(x2+x3)/2;
formulas 0:38c3afd99aeb 267 starty=(y2+y3)/2;
formulas 0:38c3afd99aeb 268 if(V+1<=50){
formulas 0:38c3afd99aeb 269 RewriteColor=LCD_COLOR_GREEN;
formulas 0:38c3afd99aeb 270 }else if (V+1>50 & V+1<=100){
formulas 0:38c3afd99aeb 271 RewriteColor=LCD_COLOR_BLUE;
formulas 0:38c3afd99aeb 272 }else{
formulas 0:38c3afd99aeb 273 RewriteColor=LCD_COLOR_RED;
formulas 0:38c3afd99aeb 274 };
formulas 0:38c3afd99aeb 275 OldColor=LCD_COLOR_WHITE;
formulas 0:38c3afd99aeb 276 }else{
formulas 0:38c3afd99aeb 277 startx=(x1+x4)/2;
formulas 0:38c3afd99aeb 278 starty=(y1+y4)/2;
formulas 0:38c3afd99aeb 279 if(V<=50){
formulas 0:38c3afd99aeb 280 OldColor=LCD_COLOR_GREEN;
formulas 0:38c3afd99aeb 281 }else if (V>50 & V<=100){
formulas 0:38c3afd99aeb 282 OldColor=LCD_COLOR_BLUE;
formulas 0:38c3afd99aeb 283 }else{
formulas 0:38c3afd99aeb 284 OldColor=LCD_COLOR_RED;
formulas 0:38c3afd99aeb 285 };
formulas 0:38c3afd99aeb 286 RewriteColor=LCD_COLOR_WHITE;
formulas 0:38c3afd99aeb 287 };
formulas 0:38c3afd99aeb 288 lcd.SetTextColor(RewriteColor);
formulas 0:38c3afd99aeb 289
formulas 0:38c3afd99aeb 290 //Odredjivanje pocetnog piksela odakle ce bojenje poceti. Kako bi se svaki piksel obojio pocetni se postavlja u centru polja i krece se najpre
formulas 0:38c3afd99aeb 291 //na gore pa zatim od sredine na dole.
formulas 0:38c3afd99aeb 292 leftupx=startx;
formulas 0:38c3afd99aeb 293 rightupx=startx+1;
formulas 0:38c3afd99aeb 294 ypos=starty;
formulas 0:38c3afd99aeb 295 while(leftupx<rightupx){
formulas 0:38c3afd99aeb 296
formulas 0:38c3afd99aeb 297 ypos--;
formulas 0:38c3afd99aeb 298 if(lcd.ReadPixel(leftupx,ypos)==LCD_COLOR_BLACK){
formulas 0:38c3afd99aeb 299 while(lcd.ReadPixel(leftupx,ypos)==LCD_COLOR_BLACK){
formulas 0:38c3afd99aeb 300 leftupx++;
formulas 0:38c3afd99aeb 301 }
formulas 0:38c3afd99aeb 302 } else {
formulas 0:38c3afd99aeb 303 while(lcd.ReadPixel(leftupx,ypos)==OldColor){
formulas 0:38c3afd99aeb 304 leftupx--;
formulas 0:38c3afd99aeb 305 };
formulas 0:38c3afd99aeb 306 leftupx++;
formulas 0:38c3afd99aeb 307 };
formulas 0:38c3afd99aeb 308 if(lcd.ReadPixel(rightupx,ypos)==LCD_COLOR_BLACK){
formulas 0:38c3afd99aeb 309 while(lcd.ReadPixel(rightupx,ypos)==LCD_COLOR_BLACK){
formulas 0:38c3afd99aeb 310 rightupx--;
formulas 0:38c3afd99aeb 311 }
formulas 0:38c3afd99aeb 312 } else {
formulas 0:38c3afd99aeb 313 while(lcd.ReadPixel(rightupx,ypos)==OldColor){
formulas 0:38c3afd99aeb 314 rightupx++;
formulas 0:38c3afd99aeb 315 };
formulas 0:38c3afd99aeb 316 rightupx--;
formulas 0:38c3afd99aeb 317 };
formulas 0:38c3afd99aeb 318
formulas 0:38c3afd99aeb 319 if (leftupx<=rightupx){
formulas 0:38c3afd99aeb 320 lcd.DrawLine(leftupx,ypos,rightupx,ypos);
formulas 0:38c3afd99aeb 321 };
formulas 0:38c3afd99aeb 322 };
formulas 0:38c3afd99aeb 323
formulas 0:38c3afd99aeb 324 leftdownx=startx;
formulas 0:38c3afd99aeb 325 rightdownx=startx+1;
formulas 0:38c3afd99aeb 326 ypos=starty-1;
formulas 0:38c3afd99aeb 327 while(leftdownx<rightdownx){
formulas 0:38c3afd99aeb 328 ypos++;
formulas 0:38c3afd99aeb 329 if(lcd.ReadPixel(leftdownx,ypos)==LCD_COLOR_BLACK){
formulas 0:38c3afd99aeb 330 while(lcd.ReadPixel(leftdownx,ypos)==LCD_COLOR_BLACK){
formulas 0:38c3afd99aeb 331 leftdownx++;
formulas 0:38c3afd99aeb 332 }
formulas 0:38c3afd99aeb 333 } else {
formulas 0:38c3afd99aeb 334 while(lcd.ReadPixel(leftdownx,ypos)==OldColor){
formulas 0:38c3afd99aeb 335 leftdownx--;
formulas 0:38c3afd99aeb 336 };
formulas 0:38c3afd99aeb 337 leftdownx++;
formulas 0:38c3afd99aeb 338 };
formulas 0:38c3afd99aeb 339 if(lcd.ReadPixel(rightdownx,ypos)==LCD_COLOR_BLACK){
formulas 0:38c3afd99aeb 340 while(lcd.ReadPixel(rightdownx,ypos)==LCD_COLOR_BLACK){
formulas 0:38c3afd99aeb 341 rightdownx--;
formulas 0:38c3afd99aeb 342 }
formulas 0:38c3afd99aeb 343 } else {
formulas 0:38c3afd99aeb 344 while(lcd.ReadPixel(rightdownx,ypos)==OldColor){
formulas 0:38c3afd99aeb 345 rightdownx++;
formulas 0:38c3afd99aeb 346 };
formulas 0:38c3afd99aeb 347 rightdownx--;
formulas 0:38c3afd99aeb 348 };
formulas 0:38c3afd99aeb 349
formulas 0:38c3afd99aeb 350 if (leftdownx<=rightdownx){
formulas 0:38c3afd99aeb 351 lcd.DrawLine(leftdownx,ypos,rightdownx,ypos);
formulas 0:38c3afd99aeb 352 };
formulas 0:38c3afd99aeb 353 };
formulas 0:38c3afd99aeb 354
formulas 0:38c3afd99aeb 355 //Brisanje granicnika. Vodi se racuna ako je granica neki od dekadnih podeoka koji treba da ostane crn.
formulas 0:38c3afd99aeb 356 if(V%10!=0){
formulas 0:38c3afd99aeb 357 lcd.DrawLine(x1,y1,x2,y2);
formulas 0:38c3afd99aeb 358 if (dV<0){
formulas 0:38c3afd99aeb 359 lcd.DrawPixel(x1,y1,LCD_COLOR_BLACK);
formulas 0:38c3afd99aeb 360 lcd.DrawPixel(x2,y2,LCD_COLOR_BLACK);
formulas 0:38c3afd99aeb 361 };
formulas 0:38c3afd99aeb 362 };
formulas 0:38c3afd99aeb 363 V+=dV/abs(dV);
formulas 0:38c3afd99aeb 364 };
formulas 0:38c3afd99aeb 365 };
formulas 0:38c3afd99aeb 366
formulas 0:38c3afd99aeb 367 void ChangeCrank(int Crank){
formulas 2:f54f01527ebb 368 PrintString(" ",50,350,400,LCD_COLOR_GREEN);
formulas 0:38c3afd99aeb 369 if (Crank){
formulas 0:38c3afd99aeb 370 PrintString("ERROR",50,CrankXPos,CrankYPos,LCD_COLOR_RED);
formulas 0:38c3afd99aeb 371 lcd.SetTextColor(LCD_COLOR_BLACK);
formulas 0:38c3afd99aeb 372 } else {
formulas 0:38c3afd99aeb 373 PrintString("OK",50,CrankXPos,CrankYPos,LCD_COLOR_GREEN);
formulas 0:38c3afd99aeb 374 lcd.SetTextColor(LCD_COLOR_BLACK);
formulas 0:38c3afd99aeb 375 };
formulas 0:38c3afd99aeb 376 };
formulas 0:38c3afd99aeb 377
formulas 6:d6e001d7cf16 378 int UpdateCapBar(int H, int H0, uint16_t StartXPos, uint16_t StartYPos){
formulas 6:d6e001d7cf16 379 uint16_t BarWidth = 200, BarHeight = 300;
formulas 6:d6e001d7cf16 380 int YPos = StartYPos + BarHeight;
formulas 6:d6e001d7cf16 381 int percent = 3;
formulas 6:d6e001d7cf16 382 int dH = abs(H-H0);
formulas 6:d6e001d7cf16 383 int Hmax = 100;
formulas 6:d6e001d7cf16 384
formulas 6:d6e001d7cf16 385 if(dH > 0){
formulas 6:d6e001d7cf16 386 lcd.SetTextColor(LCD_COLOR_GREEN);
formulas 6:d6e001d7cf16 387 lcd.FillRect(StartXPos,StartYPos + (Hmax-H)*percent,BarWidth,dH*percent);
formulas 6:d6e001d7cf16 388 }else{
formulas 6:d6e001d7cf16 389 lcd.SetTextColor(LCD_COLOR_WHITE);
formulas 6:d6e001d7cf16 390 lcd.FillRect(StartXPos,StartYPos + (Hmax-H0)*percent,BarWidth,dH*percent);
formulas 6:d6e001d7cf16 391 };
formulas 6:d6e001d7cf16 392 lcd.SetTextColor(LCD_COLOR_BLACK);
formulas 6:d6e001d7cf16 393 };
formulas 6:d6e001d7cf16 394
formulas 0:38c3afd99aeb 395 int UpdateLVDTScale(int H,int H0, uint16_t StartXPos, uint16_t StartYPos){
formulas 0:38c3afd99aeb 396 uint16_t BarWidth=80,BarHeight=8;
formulas 0:38c3afd99aeb 397 int YPos;
formulas 0:38c3afd99aeb 398 int D,D0,dD;
formulas 0:38c3afd99aeb 399
formulas 0:38c3afd99aeb 400 switch( ((H>=0)<<1)+(H0>0)){
formulas 0:38c3afd99aeb 401 case(0):
formulas 0:38c3afd99aeb 402 D=5-abs(H)/20;
formulas 0:38c3afd99aeb 403 D0=5-abs(H0)/20;
formulas 0:38c3afd99aeb 404 break;
formulas 0:38c3afd99aeb 405 case(1):
formulas 0:38c3afd99aeb 406 D=5-abs(H)/20;
formulas 0:38c3afd99aeb 407 D0=H0/20+5;
formulas 0:38c3afd99aeb 408 break;
formulas 0:38c3afd99aeb 409 case(2):
formulas 0:38c3afd99aeb 410 D=H/20+5;
formulas 0:38c3afd99aeb 411 D0=5-abs(H0)/20;
formulas 0:38c3afd99aeb 412 break;
formulas 0:38c3afd99aeb 413 case(3):
formulas 0:38c3afd99aeb 414 D=H/20+5;
formulas 0:38c3afd99aeb 415 D0=H0/20+5;
formulas 0:38c3afd99aeb 416 break;
formulas 0:38c3afd99aeb 417 };
formulas 0:38c3afd99aeb 418 dD=D-D0;
formulas 0:38c3afd99aeb 419
formulas 0:38c3afd99aeb 420 if (dD>0){
formulas 0:38c3afd99aeb 421 lcd.SetTextColor(LCD_COLOR_BLACK);
formulas 0:38c3afd99aeb 422 YPos=StartYPos-10*(D0+1);
formulas 0:38c3afd99aeb 423 }else{
formulas 0:38c3afd99aeb 424 lcd.SetTextColor(LCD_COLOR_WHITE);
formulas 0:38c3afd99aeb 425 YPos=StartYPos-D0*10;
formulas 0:38c3afd99aeb 426 };
formulas 0:38c3afd99aeb 427 for (int k=1;k<=abs(dD);k++){
formulas 0:38c3afd99aeb 428 lcd.FillRect(StartXPos,YPos,BarWidth,BarHeight);
formulas 0:38c3afd99aeb 429 YPos-=10*(dD/abs(dD));
formulas 0:38c3afd99aeb 430 };
formulas 0:38c3afd99aeb 431 lcd.SetTextColor(LCD_COLOR_BLACK);
formulas 0:38c3afd99aeb 432 return 1;
formulas 0:38c3afd99aeb 433 };
formulas 0:38c3afd99aeb 434
formulas 0:38c3afd99aeb 435
formulas 4:0e8413277df8 436 void BrakeSignal(uint16_t brake){
formulas 4:0e8413277df8 437 if (brake!=0){
formulas 0:38c3afd99aeb 438 lcd.SetTextColor(LCD_COLOR_RED);
formulas 0:38c3afd99aeb 439 lcd.SetBackColor(LCD_COLOR_RED);
formulas 0:38c3afd99aeb 440 lcd.FillRect(560,340,230,68);
formulas 0:38c3afd99aeb 441 PrintString("BRAKE",50,575,350,LCD_COLOR_BLACK);
formulas 0:38c3afd99aeb 442 }else {
formulas 0:38c3afd99aeb 443 lcd.SetTextColor(LCD_COLOR_DARKRED);
formulas 0:38c3afd99aeb 444 lcd.SetBackColor(LCD_COLOR_DARKRED);
formulas 0:38c3afd99aeb 445 lcd.FillRect(560,340,230,68);
formulas 0:38c3afd99aeb 446 PrintString("BRAKE",50,575,350,LCD_COLOR_BLACK);
formulas 0:38c3afd99aeb 447 };
formulas 0:38c3afd99aeb 448 lcd.SetBackColor(LCD_COLOR_WHITE);
formulas 0:38c3afd99aeb 449 };
formulas 0:38c3afd99aeb 450
formulas 0:38c3afd99aeb 451
formulas 0:38c3afd99aeb 452 void TestFont(){
formulas 0:38c3afd99aeb 453 uint16_t XPos=0,YPos=120;
formulas 0:38c3afd99aeb 454 for(int k=0;k<68;k++){
formulas 0:38c3afd99aeb 455 PrintChar(*font50[k],XPos,YPos,lcd.GetTextColor());
formulas 0:38c3afd99aeb 456 XPos=XPos+(*font50[k]).width;
formulas 0:38c3afd99aeb 457 wait(0.1);
formulas 0:38c3afd99aeb 458 //pc.printf("%d",k);
formulas 0:38c3afd99aeb 459 };
formulas 6:d6e001d7cf16 460 };
formulas 6:d6e001d7cf16 461
formulas 6:d6e001d7cf16 462 void DrawBatTempMap(){
formulas 6:d6e001d7cf16 463
formulas 6:d6e001d7cf16 464 uint8_t segment_num = 5;
formulas 6:d6e001d7cf16 465 uint8_t segment_distance = 20;
formulas 6:d6e001d7cf16 466 uint8_t StartXPos = 20, StartYPos = 20;
formulas 6:d6e001d7cf16 467 uint8_t column_num = 2;
formulas 6:d6e001d7cf16 468 uint8_t row_num = 7;
formulas 6:d6e001d7cf16 469 uint8_t cell_width = 60;
formulas 6:d6e001d7cf16 470 uint8_t cell_height = 50;
formulas 6:d6e001d7cf16 471 uint16_t x1,y1,x2,y2;
formulas 6:d6e001d7cf16 472 uint32_t color;
formulas 6:d6e001d7cf16 473 uint16_t R,G,B;
formulas 6:d6e001d7cf16 474 uint16_t BarXPos = 720, BarYPos = 20, ColorBar_width = 20, ColorBar_height = 6;
formulas 6:d6e001d7cf16 475
formulas 6:d6e001d7cf16 476 lcd.SetTextColor(LCD_COLOR_BLACK);
formulas 6:d6e001d7cf16 477 PrintString("S1",50,50,380,LCD_COLOR_BLACK);
formulas 6:d6e001d7cf16 478 PrintString("S2",50,190,380,LCD_COLOR_BLACK);
formulas 6:d6e001d7cf16 479 PrintString("S3",50,330,380,LCD_COLOR_BLACK);
formulas 6:d6e001d7cf16 480 PrintString("S4",50,470,380,LCD_COLOR_BLACK);
formulas 6:d6e001d7cf16 481 PrintString("S5",50,610,380,LCD_COLOR_BLACK);
formulas 6:d6e001d7cf16 482
formulas 6:d6e001d7cf16 483 for (uint8_t p = 0 ; p < segment_num ; p++){
formulas 6:d6e001d7cf16 484 x1 = StartXPos+p*(segment_distance+2*cell_width);
formulas 6:d6e001d7cf16 485 y1 = StartYPos;
formulas 6:d6e001d7cf16 486 x2 = x1;
formulas 6:d6e001d7cf16 487 y2 = StartYPos+row_num*cell_height;
formulas 6:d6e001d7cf16 488 lcd.DrawLine(x1,y1,x2,y2);
formulas 6:d6e001d7cf16 489 x1 = x1 + cell_width;
formulas 6:d6e001d7cf16 490 x2 = x1;
formulas 6:d6e001d7cf16 491 lcd.DrawLine(x1,y1,x2,y2);
formulas 6:d6e001d7cf16 492 x1 = x1 + cell_width;
formulas 6:d6e001d7cf16 493 x2 = x1;
formulas 6:d6e001d7cf16 494 lcd.DrawLine(x1,y1,x2,y2);
formulas 6:d6e001d7cf16 495 x1 = StartXPos+p*(segment_distance+2*cell_width);
formulas 6:d6e001d7cf16 496 x2 = x1 + 2*cell_width;
formulas 6:d6e001d7cf16 497 y1 = StartYPos;
formulas 6:d6e001d7cf16 498 y2 = y1;
formulas 6:d6e001d7cf16 499
formulas 6:d6e001d7cf16 500 for(uint8_t q = 0 ; q <= row_num ; q++){
formulas 6:d6e001d7cf16 501 y1 = StartYPos + q*cell_height;
formulas 6:d6e001d7cf16 502 y2 = y1;
formulas 6:d6e001d7cf16 503 lcd.DrawLine(x1,y1,x2,y2);
formulas 6:d6e001d7cf16 504 };
formulas 6:d6e001d7cf16 505 };
formulas 6:d6e001d7cf16 506
formulas 6:d6e001d7cf16 507 for(uint8_t temp = 10 ; temp <=70; temp++){
formulas 6:d6e001d7cf16 508 lcd.SetTextColor(TempColor(temp));
formulas 6:d6e001d7cf16 509 x1 = BarXPos;
formulas 6:d6e001d7cf16 510 y1 = BarYPos + 360 - (temp-10)*ColorBar_height;
formulas 6:d6e001d7cf16 511 lcd.FillRect(x1,y1,ColorBar_width,ColorBar_height);
formulas 6:d6e001d7cf16 512 //pc.printf("%d %d %d %d\n",x1,y1,x2,y2);
formulas 6:d6e001d7cf16 513 };
formulas 6:d6e001d7cf16 514 lcd.SetTextColor(LCD_COLOR_BLACK);
formulas 6:d6e001d7cf16 515 lcd.DisplayStringAt(BarXPos+25,BarYPos,(uint8_t*)"70",LEFT_MODE);
formulas 6:d6e001d7cf16 516 lcd.DisplayStringAt(BarXPos+25,BarYPos+60,(uint8_t*)"60",LEFT_MODE);
formulas 6:d6e001d7cf16 517 lcd.DisplayStringAt(BarXPos+25,BarYPos+120,(uint8_t*)"50",LEFT_MODE);
formulas 6:d6e001d7cf16 518 lcd.DisplayStringAt(BarXPos+25,BarYPos+180,(uint8_t*)"40",LEFT_MODE);
formulas 6:d6e001d7cf16 519 lcd.DisplayStringAt(BarXPos+25,BarYPos+240,(uint8_t*)"30",LEFT_MODE);
formulas 6:d6e001d7cf16 520 lcd.DisplayStringAt(BarXPos+25,BarYPos+300,(uint8_t*)"20",LEFT_MODE);
formulas 6:d6e001d7cf16 521 lcd.DisplayStringAt(BarXPos+25,BarYPos+360,(uint8_t*)"10",LEFT_MODE);
formulas 6:d6e001d7cf16 522
formulas 6:d6e001d7cf16 523 };
formulas 6:d6e001d7cf16 524
formulas 6:d6e001d7cf16 525 void UpdateBatTempMap(){
formulas 6:d6e001d7cf16 526 uint8_t column,row;
formulas 6:d6e001d7cf16 527
formulas 6:d6e001d7cf16 528 for (uint8_t cell = 1 ; cell <= 70 ; cell++ ){
formulas 6:d6e001d7cf16 529 if (Acc_Temperature[cell] != Acc_Temperature0[cell]){
formulas 6:d6e001d7cf16 530 column = cell/7 + 1;
formulas 6:d6e001d7cf16 531 row = cell%7;
formulas 6:d6e001d7cf16 532 if (row == 0){
formulas 6:d6e001d7cf16 533 column = column - 1;
formulas 6:d6e001d7cf16 534 row = 7;
formulas 6:d6e001d7cf16 535 };
formulas 6:d6e001d7cf16 536 pc.printf("column %d row %d \n",column,row);
formulas 6:d6e001d7cf16 537 UpdateCellTemp(column,row,Acc_Temperature[cell]);
formulas 6:d6e001d7cf16 538 Acc_Temperature0[cell] = Acc_Temperature[cell];
formulas 6:d6e001d7cf16 539 };
formulas 6:d6e001d7cf16 540 };
formulas 6:d6e001d7cf16 541 };
formulas 6:d6e001d7cf16 542
formulas 6:d6e001d7cf16 543 uint32_t TempColor(uint8_t temperature){
formulas 6:d6e001d7cf16 544 //tmin = 10 tmax = 70
formulas 6:d6e001d7cf16 545 uint8_t tmin = 10, tmax = 70;
formulas 6:d6e001d7cf16 546 uint32_t k = temperature - 10;
formulas 6:d6e001d7cf16 547 uint32_t R,G,B;
formulas 6:d6e001d7cf16 548 uint32_t color;
formulas 6:d6e001d7cf16 549
formulas 6:d6e001d7cf16 550 if (k < 20){
formulas 6:d6e001d7cf16 551 R = 0;
formulas 6:d6e001d7cf16 552 G = 0xFF;
formulas 6:d6e001d7cf16 553 B = 0xFF*k/20;
formulas 6:d6e001d7cf16 554 if (k< 0){
formulas 6:d6e001d7cf16 555 B = 0;
formulas 6:d6e001d7cf16 556 };
formulas 6:d6e001d7cf16 557 }
formulas 6:d6e001d7cf16 558 else if(k < 40){
formulas 6:d6e001d7cf16 559 R = 0xFF*(k-20)/20;
formulas 6:d6e001d7cf16 560 G = 0xFF*(40-k)/20;
formulas 6:d6e001d7cf16 561 B = 0xFF;
formulas 6:d6e001d7cf16 562 }
formulas 6:d6e001d7cf16 563 else if(k<60){
formulas 6:d6e001d7cf16 564 R = 0xFF;
formulas 6:d6e001d7cf16 565 G = 0;
formulas 6:d6e001d7cf16 566 B = 0xFF*(60-k)/20;
formulas 6:d6e001d7cf16 567 }
formulas 6:d6e001d7cf16 568 else{
formulas 6:d6e001d7cf16 569 R = 0xFF;
formulas 6:d6e001d7cf16 570 G = 0;
formulas 6:d6e001d7cf16 571 B = 0;
formulas 6:d6e001d7cf16 572 };
formulas 6:d6e001d7cf16 573 color = (0xFF << 24) + (R << 16) + (G << 8) + B;
formulas 6:d6e001d7cf16 574 //color = 0xFF000000 + R*65536 + G*256 + B;
formulas 6:d6e001d7cf16 575 return color;
formulas 6:d6e001d7cf16 576 };
formulas 6:d6e001d7cf16 577
formulas 6:d6e001d7cf16 578 void UpdateCellTemp(uint8_t column, uint8_t row, uint8_t temp){
formulas 6:d6e001d7cf16 579 uint8_t segment_num = 5;
formulas 6:d6e001d7cf16 580 uint8_t segment_distance = 20;
formulas 6:d6e001d7cf16 581 uint8_t StartXPos = 20, StartYPos = 20;
formulas 6:d6e001d7cf16 582 uint8_t column_num = 2;
formulas 6:d6e001d7cf16 583 uint8_t row_num = 7;
formulas 6:d6e001d7cf16 584 uint8_t cell_width = 60;
formulas 6:d6e001d7cf16 585 uint8_t cell_height = 50;
formulas 6:d6e001d7cf16 586 uint16_t x,y;
formulas 6:d6e001d7cf16 587
formulas 6:d6e001d7cf16 588 switch(column){
formulas 6:d6e001d7cf16 589 case (1):
formulas 6:d6e001d7cf16 590 x = StartXPos;
formulas 6:d6e001d7cf16 591 break;
formulas 6:d6e001d7cf16 592 case (2):
formulas 6:d6e001d7cf16 593 x = StartXPos + cell_width;
formulas 6:d6e001d7cf16 594 break;
formulas 6:d6e001d7cf16 595 case (3):
formulas 6:d6e001d7cf16 596 x = StartXPos + 2*cell_width + segment_distance;
formulas 6:d6e001d7cf16 597 break;
formulas 6:d6e001d7cf16 598 case (4):
formulas 6:d6e001d7cf16 599 x = StartXPos + 3*cell_width + segment_distance;
formulas 6:d6e001d7cf16 600 break;
formulas 6:d6e001d7cf16 601 case (5):
formulas 6:d6e001d7cf16 602 x = StartXPos + 4*cell_width + 2*segment_distance;
formulas 6:d6e001d7cf16 603 break;
formulas 6:d6e001d7cf16 604 case (6):
formulas 6:d6e001d7cf16 605 x = StartXPos + 5*cell_width + 2*segment_distance;
formulas 6:d6e001d7cf16 606 break;
formulas 6:d6e001d7cf16 607 case (7):
formulas 6:d6e001d7cf16 608 x = StartXPos + 6*cell_width + 3*segment_distance;
formulas 6:d6e001d7cf16 609 break;
formulas 6:d6e001d7cf16 610 case (8):
formulas 6:d6e001d7cf16 611 x = StartXPos + 7*cell_width + 3*segment_distance;
formulas 6:d6e001d7cf16 612 break;
formulas 6:d6e001d7cf16 613 case (9):
formulas 6:d6e001d7cf16 614 x = StartXPos + 8*cell_width + 4*segment_distance;
formulas 6:d6e001d7cf16 615 break;
formulas 6:d6e001d7cf16 616 case (10):
formulas 6:d6e001d7cf16 617 x = StartXPos + 9*cell_width + 4*segment_distance;
formulas 6:d6e001d7cf16 618 break;
formulas 6:d6e001d7cf16 619 };
formulas 6:d6e001d7cf16 620 y = StartYPos + (row - 1)*cell_height;
formulas 6:d6e001d7cf16 621 lcd.SetTextColor(TempColor(temp));
formulas 6:d6e001d7cf16 622 lcd.FillRect(x+1, y+1, cell_width - 2, cell_height - 2);
formulas 6:d6e001d7cf16 623 };
formulas 6:d6e001d7cf16 624
formulas 6:d6e001d7cf16 625 void SetFixedAccTemp(){
formulas 6:d6e001d7cf16 626 Acc_Temperature[1] = 28;
formulas 6:d6e001d7cf16 627 Acc_Temperature[2] = 28;
formulas 6:d6e001d7cf16 628 Acc_Temperature[3] = 29;
formulas 6:d6e001d7cf16 629 Acc_Temperature[4] = 28;
formulas 6:d6e001d7cf16 630 Acc_Temperature[5] = 29;
formulas 6:d6e001d7cf16 631 Acc_Temperature[6] = 30;
formulas 6:d6e001d7cf16 632 Acc_Temperature[7] = 28;
formulas 6:d6e001d7cf16 633 Acc_Temperature[8] = 28;
formulas 6:d6e001d7cf16 634 Acc_Temperature[9] = 29;
formulas 6:d6e001d7cf16 635 Acc_Temperature[10] = 30;
formulas 6:d6e001d7cf16 636 Acc_Temperature[11] = 30;
formulas 6:d6e001d7cf16 637 Acc_Temperature[12] = 32;
formulas 6:d6e001d7cf16 638 Acc_Temperature[13] = 30;
formulas 6:d6e001d7cf16 639 Acc_Temperature[14] = 29;
formulas 6:d6e001d7cf16 640 Acc_Temperature[15] = 29;
formulas 6:d6e001d7cf16 641 Acc_Temperature[16] = 31;
formulas 6:d6e001d7cf16 642 Acc_Temperature[17] = 30;
formulas 6:d6e001d7cf16 643 Acc_Temperature[18] = 31;
formulas 6:d6e001d7cf16 644 Acc_Temperature[19] = 30;
formulas 6:d6e001d7cf16 645 Acc_Temperature[20] = 33;
formulas 6:d6e001d7cf16 646 Acc_Temperature[21] = 30;
formulas 6:d6e001d7cf16 647 Acc_Temperature[22] = 31;
formulas 6:d6e001d7cf16 648 Acc_Temperature[23] = 32;
formulas 6:d6e001d7cf16 649 Acc_Temperature[24] = 33;
formulas 6:d6e001d7cf16 650 Acc_Temperature[25] = 33;
formulas 6:d6e001d7cf16 651 Acc_Temperature[26] = 35;
formulas 6:d6e001d7cf16 652 Acc_Temperature[27] = 34;
formulas 6:d6e001d7cf16 653 Acc_Temperature[28] = 34;
formulas 6:d6e001d7cf16 654 Acc_Temperature[29] = 32;
formulas 6:d6e001d7cf16 655 Acc_Temperature[30] = 33;
formulas 6:d6e001d7cf16 656 Acc_Temperature[31] = 33;
formulas 6:d6e001d7cf16 657 Acc_Temperature[32] = 35;
formulas 6:d6e001d7cf16 658 Acc_Temperature[33] = 34;
formulas 6:d6e001d7cf16 659 Acc_Temperature[34] = 32;
formulas 6:d6e001d7cf16 660 Acc_Temperature[35] = 33;
formulas 6:d6e001d7cf16 661 Acc_Temperature[36] = 36;
formulas 6:d6e001d7cf16 662 Acc_Temperature[37] = 36;
formulas 6:d6e001d7cf16 663 Acc_Temperature[38] = 38;
formulas 6:d6e001d7cf16 664 Acc_Temperature[39] = 39;
formulas 6:d6e001d7cf16 665 Acc_Temperature[40] = 39;
formulas 6:d6e001d7cf16 666 Acc_Temperature[41] = 38;
formulas 6:d6e001d7cf16 667 Acc_Temperature[42] = 37;
formulas 6:d6e001d7cf16 668 Acc_Temperature[43] = 33;
formulas 6:d6e001d7cf16 669 Acc_Temperature[44] = 34;
formulas 6:d6e001d7cf16 670 Acc_Temperature[45] = 33;
formulas 6:d6e001d7cf16 671 Acc_Temperature[46] = 33;
formulas 6:d6e001d7cf16 672 Acc_Temperature[47] = 32;
formulas 6:d6e001d7cf16 673 Acc_Temperature[48] = 33;
formulas 6:d6e001d7cf16 674 Acc_Temperature[49] = 34;
formulas 6:d6e001d7cf16 675 Acc_Temperature[50] = 34;
formulas 6:d6e001d7cf16 676 Acc_Temperature[51] = 35;
formulas 6:d6e001d7cf16 677 Acc_Temperature[52] = 33;
formulas 6:d6e001d7cf16 678 Acc_Temperature[53] = 34;
formulas 6:d6e001d7cf16 679 Acc_Temperature[54] = 34;
formulas 6:d6e001d7cf16 680 Acc_Temperature[55] = 35;
formulas 6:d6e001d7cf16 681 Acc_Temperature[56] = 35;
formulas 6:d6e001d7cf16 682 Acc_Temperature[57] = 33;
formulas 6:d6e001d7cf16 683 Acc_Temperature[58] = 33;
formulas 6:d6e001d7cf16 684 Acc_Temperature[59] = 37;
formulas 6:d6e001d7cf16 685 Acc_Temperature[60] = 32;
formulas 6:d6e001d7cf16 686 Acc_Temperature[61] = 34;
formulas 6:d6e001d7cf16 687 Acc_Temperature[62] = 34;
formulas 6:d6e001d7cf16 688 Acc_Temperature[63] = 33;
formulas 6:d6e001d7cf16 689 Acc_Temperature[64] = 34;
formulas 6:d6e001d7cf16 690 Acc_Temperature[65] = 36;
formulas 6:d6e001d7cf16 691 Acc_Temperature[66] = 35;
formulas 6:d6e001d7cf16 692 Acc_Temperature[67] = 35;
formulas 6:d6e001d7cf16 693 Acc_Temperature[68] = 35;
formulas 6:d6e001d7cf16 694 Acc_Temperature[69] = 34;
formulas 6:d6e001d7cf16 695 Acc_Temperature[70] = 34;
formulas 6:d6e001d7cf16 696
formulas 0:38c3afd99aeb 697 };