Integration with potentiometer

Dependencies:   BSP_DISCO_F469NI LCD_DISCO_F469NI SD_DISCO_F469NI mbed

Committer:
formulas
Date:
Thu Dec 07 16:54:30 2017 +0000
Revision:
1:61fe443f9d7f
Parent:
0:e53b0806a628
sadasd

Who changed what in which revision?

UserRevisionLine numberNew contents of line
formulas 0:e53b0806a628 1 #include "functions.h"
formulas 0:e53b0806a628 2 #include "gears.h"
formulas 0:e53b0806a628 3 #include "font100.h"
formulas 0:e53b0806a628 4 #include "font50.h"
formulas 0:e53b0806a628 5
formulas 0:e53b0806a628 6 extern LCD_DISCO_F469NI lcd;
formulas 0:e53b0806a628 7 extern SD_DISCO_F469NI sd;
formulas 0:e53b0806a628 8 extern Serial pc;
formulas 0:e53b0806a628 9
formulas 0:e53b0806a628 10 GEAR Idle{'0',256,384,idleBitmap};
formulas 0:e53b0806a628 11 GEAR Gear1{'1',256,384,gear1Bitmap};
formulas 0:e53b0806a628 12 GEAR Gear2{'2',256,384,gear2Bitmap};
formulas 0:e53b0806a628 13 GEAR Gear3{'3',256,384,gear3Bitmap};
formulas 0:e53b0806a628 14 GEAR Gear4{'4',256,384,gear4Bitmap};
formulas 0:e53b0806a628 15 GEAR Gear5{'5',256,384,gear5Bitmap};
formulas 0:e53b0806a628 16 GEAR Gear6{'6',256,384,gear6Bitmap};
formulas 0:e53b0806a628 17 GEAR *Gears[7]={&Idle,&Gear1,&Gear2,&Gear3,&Gear4,&Gear5,&Gear6};
formulas 0:e53b0806a628 18 IMAGE LogoBig{800,480,LOGOBIG_START_ADDR};
formulas 0:e53b0806a628 19 IMAGE LogoSmall{160,64,LOGOSMALL_START_ADDR};
formulas 0:e53b0806a628 20 IMAGE Branko{250,480,1576960};
formulas 0:e53b0806a628 21
formulas 0:e53b0806a628 22 void DrawSpeedMeter(){
formulas 0:e53b0806a628 23 uint16_t x1,y1,x2,y2,x3,y3,x4,y4;
formulas 0:e53b0806a628 24 double THETA1=PHI,THETA2;
formulas 0:e53b0806a628 25
formulas 0:e53b0806a628 26 x1=(int)(400-530*cos(THETA1));
formulas 0:e53b0806a628 27 y1=(int)(550-530*sin(THETA1));
formulas 0:e53b0806a628 28 x2=(int)(400-500*cos(THETA1));
formulas 0:e53b0806a628 29 y2=(int)(550-500*sin(THETA1));
formulas 0:e53b0806a628 30
formulas 0:e53b0806a628 31 lcd.SetTextColor(LCD_COLOR_BLACK);
formulas 0:e53b0806a628 32 for (int V=0;V<=150;V++){
formulas 0:e53b0806a628 33 THETA2=THETA1+ALPHA/Vmax;
formulas 0:e53b0806a628 34 x3=(int)(400-530*cos(THETA2));
formulas 0:e53b0806a628 35 y3=(int)(550-530*sin(THETA2));
formulas 0:e53b0806a628 36 x4=(int)(400-500*cos(THETA2));
formulas 0:e53b0806a628 37 y4=(int)(550-500*sin(THETA2));
formulas 0:e53b0806a628 38 if(V<150){
formulas 0:e53b0806a628 39 lcd.DrawLine(x1,y1,x3,y3);
formulas 0:e53b0806a628 40 lcd.DrawLine(x2,y2,x4,y4);
formulas 0:e53b0806a628 41 };
formulas 0:e53b0806a628 42 lcd.SetFont(&Font20);
formulas 0:e53b0806a628 43 if(V%10==0){
formulas 0:e53b0806a628 44 lcd.DrawLine(x1,y1,x2,y2);
formulas 0:e53b0806a628 45 char Vchar[3];
formulas 0:e53b0806a628 46 sprintf(Vchar,"%d",(int)V);
formulas 0:e53b0806a628 47 uint16_t xnum=x2,ynum=y2;
formulas 0:e53b0806a628 48 if (V==0 | V==10 | V==20 | V==30){
formulas 0:e53b0806a628 49 xnum=x2,ynum=y2+5;
formulas 0:e53b0806a628 50 }else if (V==40 | V==50 | V==60){
formulas 0:e53b0806a628 51 xnum=x2-3,ynum=y2+5;
formulas 0:e53b0806a628 52 }else if (V==70 | V==80){
formulas 0:e53b0806a628 53 xnum=x2-14,ynum=y2+5;
formulas 0:e53b0806a628 54 }else if (V==90){
formulas 0:e53b0806a628 55 xnum=x2-20,ynum=y2+5;
formulas 0:e53b0806a628 56 }else if (V==100 | V==110 | V==120) {
formulas 0:e53b0806a628 57 xnum=x2-35,ynum=y2+4;
formulas 0:e53b0806a628 58 }else if (V==130 | V==140 | V==150){
formulas 0:e53b0806a628 59 xnum=x2-35,ynum=y2+5;
formulas 0:e53b0806a628 60 };
formulas 0:e53b0806a628 61 lcd.DisplayStringAt(xnum,ynum,(uint8_t*)Vchar,LEFT_MODE);
formulas 0:e53b0806a628 62 };
formulas 0:e53b0806a628 63 x1=x3,y1=y3,x2=x4,y2=y4;
formulas 0:e53b0806a628 64 THETA1=THETA2;
formulas 0:e53b0806a628 65 };
formulas 0:e53b0806a628 66 };
formulas 0:e53b0806a628 67
formulas 0:e53b0806a628 68 void PrintChar(CHAR Char,uint16_t StartXPos,uint16_t StartYPos,uint32_t TextColor){
formulas 0:e53b0806a628 69 uint16_t width=Char.width;
formulas 0:e53b0806a628 70 uint16_t height=Char.height;
formulas 0:e53b0806a628 71 uint16_t horpos,vertpos;
formulas 0:e53b0806a628 72 uint16_t bitloc;
formulas 0:e53b0806a628 73 uint32_t DrawColor;
formulas 0:e53b0806a628 74 char pos[9];
formulas 0:e53b0806a628 75 //uint8_t dbg[50];
formulas 0:e53b0806a628 76 for(horpos=0;horpos<width;horpos++){
formulas 0:e53b0806a628 77 for(vertpos=0;vertpos<height/8;vertpos++){
formulas 0:e53b0806a628 78 sprintf(pos,BYTE_TO_BINARY_PATTERN,BYTE_TO_BINARY(Char.bitmap[horpos*height/8+vertpos]));
formulas 0:e53b0806a628 79 //pc.printf("%d. %s\n",horpos*height/8+vertpos,pos);
formulas 0:e53b0806a628 80 for(bitloc=0;bitloc<8;bitloc++) {
formulas 0:e53b0806a628 81 if (pos[bitloc]=='1') {
formulas 0:e53b0806a628 82 DrawColor=TextColor;
formulas 0:e53b0806a628 83 }
formulas 0:e53b0806a628 84 else{
formulas 0:e53b0806a628 85 DrawColor=lcd.GetBackColor();
formulas 0:e53b0806a628 86 };
formulas 0:e53b0806a628 87 lcd.DrawPixel(StartXPos+horpos,StartYPos+vertpos*8+bitloc,DrawColor);
formulas 0:e53b0806a628 88 //pc.printf("%d,%d\n",StartXPos+horpos,StartYPos+vertpos*8+bitloc);
formulas 0:e53b0806a628 89 }
formulas 0:e53b0806a628 90 }
formulas 0:e53b0806a628 91 }
formulas 0:e53b0806a628 92 lcd.SetTextColor(LCD_COLOR_BLACK);
formulas 0:e53b0806a628 93 };
formulas 0:e53b0806a628 94
formulas 0:e53b0806a628 95 void PrintString(char str[],int font,uint16_t StartXPos,uint16_t StartYPos,uint32_t TextColor){
formulas 0:e53b0806a628 96 //pc.printf("Function activated.\n");
formulas 0:e53b0806a628 97 char *a=str;
formulas 0:e53b0806a628 98 int p=0;
formulas 0:e53b0806a628 99 while(a[p]){
formulas 0:e53b0806a628 100 //pc.printf("Searching char: %c\n",a[p]);
formulas 0:e53b0806a628 101 for(int k=0;k<68;k++){
formulas 0:e53b0806a628 102 //pc.printf("Character %c\n",(*font50[k]).name);
formulas 0:e53b0806a628 103 if((*font50[k]).name==a[p]){
formulas 0:e53b0806a628 104 // pc.printf("Found!\n");
formulas 0:e53b0806a628 105 PrintChar(*font50[k],StartXPos,StartYPos,TextColor);
formulas 0:e53b0806a628 106 StartXPos+=(*font50[k]).width;
formulas 0:e53b0806a628 107 k=100;
formulas 0:e53b0806a628 108 };
formulas 0:e53b0806a628 109 };
formulas 0:e53b0806a628 110 //pc.printf("End.\n");
formulas 0:e53b0806a628 111 p++;
formulas 0:e53b0806a628 112 };
formulas 0:e53b0806a628 113 };
formulas 0:e53b0806a628 114
formulas 0:e53b0806a628 115
formulas 0:e53b0806a628 116
formulas 0:e53b0806a628 117
formulas 0:e53b0806a628 118 void ChangeNumber(int num,int num0,int Font,uint16_t StartXPos,uint16_t StartYPos){
formulas 0:e53b0806a628 119 int digit[3],digit0[3];
formulas 0:e53b0806a628 120 CHAR **font;
formulas 0:e53b0806a628 121 digit[0]=num/100;
formulas 0:e53b0806a628 122 digit[1]=num/10-digit[0]*10;
formulas 0:e53b0806a628 123 digit[2]=num%10;
formulas 0:e53b0806a628 124 digit0[0]=num0/100;
formulas 0:e53b0806a628 125 digit0[1]=num0/10-digit0[0]*10;
formulas 0:e53b0806a628 126 digit0[2]=num0%10;
formulas 0:e53b0806a628 127 if (Font==50){
formulas 0:e53b0806a628 128 font=font50;
formulas 0:e53b0806a628 129 }else if (Font=100){
formulas 0:e53b0806a628 130 font=font100;
formulas 0:e53b0806a628 131 };
formulas 0:e53b0806a628 132 uint8_t char_width=(*font[0]).width;
formulas 0:e53b0806a628 133 if(digit[0]!=digit0[0] || num0==0){
formulas 0:e53b0806a628 134 PrintChar(*font[digit[0]],StartXPos,StartYPos,lcd.GetTextColor());
formulas 0:e53b0806a628 135 };
formulas 0:e53b0806a628 136 if(digit[1]!=digit0[1] || num0==0){
formulas 0:e53b0806a628 137 PrintChar(*font[digit[1]],StartXPos+char_width,StartYPos,lcd.GetTextColor());
formulas 0:e53b0806a628 138 };
formulas 0:e53b0806a628 139 if(digit[2]!=digit0[2] || num0==0){
formulas 0:e53b0806a628 140 PrintChar(*font[digit[2]],StartXPos+char_width*2,StartYPos,lcd.GetTextColor());
formulas 0:e53b0806a628 141 };
formulas 0:e53b0806a628 142 };
formulas 0:e53b0806a628 143
formulas 0:e53b0806a628 144
formulas 0:e53b0806a628 145 void DrawRGBImage(IMAGE Image,uint16_t StartXPos,uint16_t StartYPos){
formulas 0:e53b0806a628 146 uint32_t p,q;
formulas 0:e53b0806a628 147 uint32_t BlockBuffer[128];
formulas 0:e53b0806a628 148 uint16_t xpos=0,ypos=0;
formulas 0:e53b0806a628 149 for(p=0;p<Image.width*Image.height/128;p++){
formulas 0:e53b0806a628 150 sd.ReadBlocks(BlockBuffer,Image.START_ADDR+p*512,1,SD_DATATIMEOUT);
formulas 0:e53b0806a628 151 for(q=0;q<128;q++){
formulas 0:e53b0806a628 152 if(ypos<Image.height){
formulas 0:e53b0806a628 153 lcd.DrawPixel(StartXPos+xpos,StartYPos+ypos,BlockBuffer[q]);
formulas 0:e53b0806a628 154 }
formulas 0:e53b0806a628 155 else{
formulas 0:e53b0806a628 156 xpos++;
formulas 0:e53b0806a628 157 ypos=0;
formulas 0:e53b0806a628 158 lcd.DrawPixel(StartXPos+xpos,StartYPos+ypos,BlockBuffer[q]);
formulas 0:e53b0806a628 159 }
formulas 0:e53b0806a628 160 ypos++;
formulas 0:e53b0806a628 161 }
formulas 0:e53b0806a628 162 }
formulas 0:e53b0806a628 163 };
formulas 0:e53b0806a628 164
formulas 0:e53b0806a628 165
formulas 0:e53b0806a628 166 void UpdateSpeedMeter(int V, int dV){
formulas 0:e53b0806a628 167 //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:e53b0806a628 168 //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:e53b0806a628 169 uint32_t OldColor,RewriteColor;
formulas 0:e53b0806a628 170 double THETA1,THETA2;
formulas 0:e53b0806a628 171 uint16_t x1,y1,x2,y2,x3,y3,x4,y4;
formulas 0:e53b0806a628 172 uint16_t startx,starty,leftupx,rightupx,leftdownx,rightdownx,ypos;
formulas 0:e53b0806a628 173
formulas 0:e53b0806a628 174 //Obradjivanje polje po polje. Svako polje prestavlja odredjenu vrednost kmh.
formulas 0:e53b0806a628 175 for(int k=1;k<=abs(dV);k++){
formulas 0:e53b0806a628 176 //Uokviravanje polja koje se trenutno obradjuje. Granice su crne kako bi se jasno razgranicilo polje od ostatka bara.
formulas 0:e53b0806a628 177 lcd.SetTextColor(LCD_COLOR_BLACK);
formulas 0:e53b0806a628 178 THETA1=PHI+((double)V)*ALPHA/Vmax;
formulas 0:e53b0806a628 179 x1=(int)(400-530*cos(THETA1));
formulas 0:e53b0806a628 180 y1=(int)(550-530*sin(THETA1));
formulas 0:e53b0806a628 181 x2=(int)(400-500*cos(THETA1));
formulas 0:e53b0806a628 182 y2=(int)(550-500*sin(THETA1));
formulas 0:e53b0806a628 183 THETA2=PHI+((double)(V+dV/abs(dV)))*ALPHA/Vmax;
formulas 0:e53b0806a628 184 x3=(int)(400-530*cos(THETA2));
formulas 0:e53b0806a628 185 y3=(int)(550-530*sin(THETA2));
formulas 0:e53b0806a628 186 x4=(int)(400-500*cos(THETA2));
formulas 0:e53b0806a628 187 y4=(int)(550-500*sin(THETA2));
formulas 0:e53b0806a628 188 lcd.DrawLine(x1,y1,x2,y2);
formulas 0:e53b0806a628 189 lcd.DrawLine(x3,y3,x4,y4);
formulas 0:e53b0806a628 190 lcd.DrawLine(x1,y1,x3,y3);
formulas 0:e53b0806a628 191 lcd.DrawLine(x2,y2,x4,y4);
formulas 0:e53b0806a628 192
formulas 0:e53b0806a628 193 //Odredjivanje pocetnih koordinata i kojom bojom ce se polje bojiti.
formulas 0:e53b0806a628 194 if(dV>0){
formulas 0:e53b0806a628 195 startx=(x2+x3)/2;
formulas 0:e53b0806a628 196 starty=(y2+y3)/2;
formulas 0:e53b0806a628 197 if(V+1<=50){
formulas 0:e53b0806a628 198 RewriteColor=LCD_COLOR_GREEN;
formulas 0:e53b0806a628 199 }else if (V+1>50 & V+1<=100){
formulas 0:e53b0806a628 200 RewriteColor=LCD_COLOR_BLUE;
formulas 0:e53b0806a628 201 }else{
formulas 0:e53b0806a628 202 RewriteColor=LCD_COLOR_RED;
formulas 0:e53b0806a628 203 };
formulas 0:e53b0806a628 204 OldColor=LCD_COLOR_WHITE;
formulas 0:e53b0806a628 205 }else{
formulas 0:e53b0806a628 206 startx=(x1+x4)/2;
formulas 0:e53b0806a628 207 starty=(y1+y4)/2;
formulas 0:e53b0806a628 208 if(V<=50){
formulas 0:e53b0806a628 209 OldColor=LCD_COLOR_GREEN;
formulas 0:e53b0806a628 210 }else if (V>50 & V<=100){
formulas 0:e53b0806a628 211 OldColor=LCD_COLOR_BLUE;
formulas 0:e53b0806a628 212 }else{
formulas 0:e53b0806a628 213 OldColor=LCD_COLOR_RED;
formulas 0:e53b0806a628 214 };
formulas 0:e53b0806a628 215 RewriteColor=LCD_COLOR_WHITE;
formulas 0:e53b0806a628 216 };
formulas 0:e53b0806a628 217 lcd.SetTextColor(RewriteColor);
formulas 0:e53b0806a628 218
formulas 0:e53b0806a628 219 //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:e53b0806a628 220 //na gore pa zatim od sredine na dole.
formulas 0:e53b0806a628 221 leftupx=startx;
formulas 0:e53b0806a628 222 rightupx=startx+1;
formulas 0:e53b0806a628 223 ypos=starty;
formulas 0:e53b0806a628 224 while(leftupx<rightupx){
formulas 0:e53b0806a628 225
formulas 0:e53b0806a628 226 ypos--;
formulas 0:e53b0806a628 227 if(lcd.ReadPixel(leftupx,ypos)==LCD_COLOR_BLACK){
formulas 0:e53b0806a628 228 while(lcd.ReadPixel(leftupx,ypos)==LCD_COLOR_BLACK){
formulas 0:e53b0806a628 229 leftupx++;
formulas 0:e53b0806a628 230 }
formulas 0:e53b0806a628 231 } else {
formulas 0:e53b0806a628 232 while(lcd.ReadPixel(leftupx,ypos)==OldColor){
formulas 0:e53b0806a628 233 leftupx--;
formulas 0:e53b0806a628 234 };
formulas 0:e53b0806a628 235 leftupx++;
formulas 0:e53b0806a628 236 };
formulas 0:e53b0806a628 237 if(lcd.ReadPixel(rightupx,ypos)==LCD_COLOR_BLACK){
formulas 0:e53b0806a628 238 while(lcd.ReadPixel(rightupx,ypos)==LCD_COLOR_BLACK){
formulas 0:e53b0806a628 239 rightupx--;
formulas 0:e53b0806a628 240 }
formulas 0:e53b0806a628 241 } else {
formulas 0:e53b0806a628 242 while(lcd.ReadPixel(rightupx,ypos)==OldColor){
formulas 0:e53b0806a628 243 rightupx++;
formulas 0:e53b0806a628 244 };
formulas 0:e53b0806a628 245 rightupx--;
formulas 0:e53b0806a628 246 };
formulas 0:e53b0806a628 247
formulas 0:e53b0806a628 248 if (leftupx<=rightupx){
formulas 0:e53b0806a628 249 lcd.DrawLine(leftupx,ypos,rightupx,ypos);
formulas 0:e53b0806a628 250 };
formulas 0:e53b0806a628 251 };
formulas 0:e53b0806a628 252
formulas 0:e53b0806a628 253 leftdownx=startx;
formulas 0:e53b0806a628 254 rightdownx=startx+1;
formulas 0:e53b0806a628 255 ypos=starty-1;
formulas 0:e53b0806a628 256 while(leftdownx<rightdownx){
formulas 0:e53b0806a628 257 ypos++;
formulas 0:e53b0806a628 258 if(lcd.ReadPixel(leftdownx,ypos)==LCD_COLOR_BLACK){
formulas 0:e53b0806a628 259 while(lcd.ReadPixel(leftdownx,ypos)==LCD_COLOR_BLACK){
formulas 0:e53b0806a628 260 leftdownx++;
formulas 0:e53b0806a628 261 }
formulas 0:e53b0806a628 262 } else {
formulas 0:e53b0806a628 263 while(lcd.ReadPixel(leftdownx,ypos)==OldColor){
formulas 0:e53b0806a628 264 leftdownx--;
formulas 0:e53b0806a628 265 };
formulas 0:e53b0806a628 266 leftdownx++;
formulas 0:e53b0806a628 267 };
formulas 0:e53b0806a628 268 if(lcd.ReadPixel(rightdownx,ypos)==LCD_COLOR_BLACK){
formulas 0:e53b0806a628 269 while(lcd.ReadPixel(rightdownx,ypos)==LCD_COLOR_BLACK){
formulas 0:e53b0806a628 270 rightdownx--;
formulas 0:e53b0806a628 271 }
formulas 0:e53b0806a628 272 } else {
formulas 0:e53b0806a628 273 while(lcd.ReadPixel(rightdownx,ypos)==OldColor){
formulas 0:e53b0806a628 274 rightdownx++;
formulas 0:e53b0806a628 275 };
formulas 0:e53b0806a628 276 rightdownx--;
formulas 0:e53b0806a628 277 };
formulas 0:e53b0806a628 278
formulas 0:e53b0806a628 279 if (leftdownx<=rightdownx){
formulas 0:e53b0806a628 280 lcd.DrawLine(leftdownx,ypos,rightdownx,ypos);
formulas 0:e53b0806a628 281 };
formulas 0:e53b0806a628 282 };
formulas 0:e53b0806a628 283
formulas 0:e53b0806a628 284 //Brisanje granicnika. Vodi se racuna ako je granica neki od dekadnih podeoka koji treba da ostane crn.
formulas 0:e53b0806a628 285 if(V%10!=0){
formulas 0:e53b0806a628 286 lcd.DrawLine(x1,y1,x2,y2);
formulas 0:e53b0806a628 287 if (dV<0){
formulas 0:e53b0806a628 288 lcd.DrawPixel(x1,y1,LCD_COLOR_BLACK);
formulas 0:e53b0806a628 289 lcd.DrawPixel(x2,y2,LCD_COLOR_BLACK);
formulas 0:e53b0806a628 290 };
formulas 0:e53b0806a628 291 };
formulas 0:e53b0806a628 292 V+=dV/abs(dV);
formulas 0:e53b0806a628 293 };
formulas 0:e53b0806a628 294 };
formulas 0:e53b0806a628 295
formulas 0:e53b0806a628 296 void UpdateLVDTScale(int D,int D0, uint16_t StartXPos, uint16_t StartYPos){
formulas 0:e53b0806a628 297 int dD;
formulas 0:e53b0806a628 298 uint16_t BarWidth=80,BarHeight=8;
formulas 0:e53b0806a628 299 int YPos;
formulas 0:e53b0806a628 300
formulas 0:e53b0806a628 301 D=D/15;
formulas 0:e53b0806a628 302 D0=D0/15;
formulas 0:e53b0806a628 303 dD=D-D0;
formulas 0:e53b0806a628 304
formulas 0:e53b0806a628 305 if (dD>0){
formulas 0:e53b0806a628 306 lcd.SetTextColor(LCD_COLOR_BLACK);
formulas 0:e53b0806a628 307 YPos=StartYPos-10*(D0+1);
formulas 0:e53b0806a628 308 }else{
formulas 0:e53b0806a628 309 lcd.SetTextColor(LCD_COLOR_WHITE);
formulas 0:e53b0806a628 310 YPos=StartYPos-D0*10;
formulas 0:e53b0806a628 311 };
formulas 0:e53b0806a628 312 for (int k=1;k<=abs(dD);k++){
formulas 0:e53b0806a628 313 lcd.FillRect(StartXPos,YPos,BarWidth,BarHeight);
formulas 0:e53b0806a628 314 YPos-=10*(dD/abs(dD));
formulas 0:e53b0806a628 315 };
formulas 0:e53b0806a628 316 lcd.SetTextColor(LCD_COLOR_BLACK);
formulas 0:e53b0806a628 317 };
formulas 0:e53b0806a628 318
formulas 0:e53b0806a628 319
formulas 0:e53b0806a628 320 void BrakeSignal(int brake,int brake0){
formulas 0:e53b0806a628 321 if(brake!=brake0){
formulas 0:e53b0806a628 322 if (brake==1){
formulas 0:e53b0806a628 323 lcd.SetTextColor(LCD_COLOR_RED);
formulas 0:e53b0806a628 324 lcd.SetBackColor(LCD_COLOR_RED);
formulas 0:e53b0806a628 325 lcd.FillRect(560,340,230,68);
formulas 0:e53b0806a628 326 PrintString("BRAKE",50,575,350,LCD_COLOR_BLACK);
formulas 0:e53b0806a628 327 }else {
formulas 0:e53b0806a628 328 lcd.SetTextColor(LCD_COLOR_DARKRED);
formulas 0:e53b0806a628 329 lcd.SetBackColor(LCD_COLOR_DARKRED);
formulas 0:e53b0806a628 330 lcd.FillRect(560,340,230,68);
formulas 0:e53b0806a628 331 PrintString("BRAKE",50,575,350,LCD_COLOR_BLACK);
formulas 0:e53b0806a628 332 };
formulas 0:e53b0806a628 333 };
formulas 0:e53b0806a628 334 lcd.SetBackColor(LCD_COLOR_WHITE);
formulas 0:e53b0806a628 335 };
formulas 0:e53b0806a628 336
formulas 0:e53b0806a628 337
formulas 0:e53b0806a628 338 void TestFont(){
formulas 0:e53b0806a628 339 uint16_t XPos=0,YPos=120;
formulas 0:e53b0806a628 340 for(int k=0;k<68;k++){
formulas 0:e53b0806a628 341 PrintChar(*font50[k],XPos,YPos,lcd.GetTextColor());
formulas 0:e53b0806a628 342 XPos=XPos+(*font50[k]).width;
formulas 0:e53b0806a628 343 wait(0.1);
formulas 0:e53b0806a628 344 //pc.printf("%d",k);
formulas 0:e53b0806a628 345 };
formulas 0:e53b0806a628 346 };