code de la carte IHM avant les bugs et avant le travail effectué avec Melchior
Dependencies: mbed SerialHalfDuplex SDFileSystem liaison_Bluetooth ident_crac DISCO-F469NI_portrait
Diff: IHM/ihm.cpp
- Revision:
- 24:1a13c998c7ac
- Parent:
- 22:c7763a7ec6c7
- Child:
- 27:ff70537a7619
diff -r c7763a7ec6c7 -r 1a13c998c7ac IHM/ihm.cpp --- a/IHM/ihm.cpp Fri Jun 26 13:08:54 2020 +0000 +++ b/IHM/ihm.cpp Wed Jul 08 08:19:16 2020 +0000 @@ -1,7 +1,6 @@ #include "global.h" #define VERT 0xFF00FF00 -#define VERT_F 0xFF00C400 #define ROUGE 0xFFFF0000 #define BLEU 0xFF0000FF #define JAUNE 0xFFFDD835//FEFE00 @@ -46,12 +45,9 @@ Button FORCE_LAUNCH(0, 600, 400, 100, "Force Launch"); Button SUIVANT(0,380,200,100,"Suivant"); //////////////////////////////////////////////////////////// -unsigned char flag_sd =0; + signed char Bouton_Strat (void); -void DrawC (int l,int h,int x, int y, unsigned char fill); -void DrawR (int l,int h,int x, int y, unsigned char fill); -void DrawA (int l,int h,int x, int y, unsigned char fill); -void DrawCheck (int l,int h,int x, int y, int cochage); + void SelectionStrat (unsigned char numeroStrat); /****************************************************************************************/ @@ -69,22 +65,41 @@ } ts.GetState(&TS_State); switch (strat_etat_s) { - case INIT : + case INIT : //intialise l'écran et passe à l'attente d'initialisation des cartes ts.GetState(&TS_State); - wait(0.15); - strat_etat_s=INIT2; - break; - case INIT2 : canProcessRx(); - FORCE_LAUNCH.Draw(BLEU, 0); - while(strat_etat_s == INIT2) { - canProcessRx(); - if(FORCE_LAUNCH.Touched() || (flag_check_carte1 && flag_check_carte2 && flag_sd)) { - strat_etat_s = CHOIX; - while(FORCE_LAUNCH.Touched()); - } + lcd.SetBackColor(LCD_COLOR_WHITE); + lcd.SetTextColor(LCD_COLOR_BLACK); + lcd.Clear (LCD_COLOR_WHITE); + wait(0.15); + lcd.DisplayStringAt(0, 10, (uint8_t *)"Verification des cartes", LEFT_MODE); + //cartes non verifiées//////////////// + lcd.SetTextColor(DIY_GREY); + lcd.FillRect(0,400,400,150); //carte moteur + lcd.FillRect(0,600,400,150); //Balise + lcd.SetTextColor(LCD_COLOR_BLACK); + lcd.SetBackColor(DIY_GREY); + lcd.DisplayStringAt(80, 450, (uint8_t *)"Carte Moteur", LEFT_MODE); + lcd.DisplayStringAt(110,650, (uint8_t *)"Balise", LEFT_MODE); + //////////////////////////////////////// + FORCE_LAUNCH.Draw(0xFFFF0000, 0); + + strat_etat_s=ATT; + break; + + case ATT : //Si les cartes sont présentes passe directement à choix sinon attente de force Launch (cette partie est encore buggée mais les cartes affichent bien leur présence donc faut juste force launch tout le temps...) + if (flag_check_carte==1) { + strat_etat_s = CHOIX; + gameEtat = ETAT_CONFIG; + } else if (FORCE_LAUNCH.Touched()) { + strat_etat_s = CHOIX; + gameEtat = ETAT_CONFIG; + while(FORCE_LAUNCH.Touched()); } + break; + + case CHOIX : //Match ou DEMO lcd.SetBackColor(LCD_COLOR_WHITE); lcd.SetTextColor(LCD_COLOR_BLACK); @@ -146,8 +161,8 @@ } } break; - - case DEMO2 : + + case DEMO2 : lcd.SetBackColor(LCD_COLOR_WHITE); lcd.SetTextColor(LCD_COLOR_BLACK); lcd.Clear (LCD_COLOR_WHITE); @@ -173,7 +188,57 @@ strat_etat_s = CHOIX; } } - break; + break; + + case TEST_ASSERVE: + lcd.SetBackColor(LCD_COLOR_WHITE); + lcd.SetTextColor(LCD_COLOR_BLACK); + lcd.Clear (LCD_COLOR_WHITE); + lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"Asservissements", LEFT_MODE); + RETOUR.Draw(0xFFFF0000,0); + TEST_A.Draw(BLEU, BLANC); + TEST_B.Draw(BLEU, BLANC); + while(strat_etat_s==TEST_ASSERVE) { + if(RETOUR.Touched()) { + while (RETOUR.Touched()); + strat_etat_s=DEMO2; + } else if(TEST_A.Touched()) { + while (TEST_A.Touched()); + GoToPosition(2000,0,0,0); + TEST_A.Draw(BLEU, BLANC); + } else if(TEST_B.Touched()) { + while (TEST_B.Touched()); + Rotate(3599); + TEST_B.Draw(BLEU, BLANC); + } + } + break; + + case TEST_DIVE: + + while(strat_etat_s==TEST_DIVE) { + canProcessRx(); + lcd.SetBackColor(LCD_COLOR_WHITE); + lcd.SetTextColor(LCD_COLOR_BLACK); + lcd.Clear (LCD_COLOR_WHITE); + lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"Coordonnees", LEFT_MODE); + RETOUR.Draw(0xFFFF0000,0); + sprintf(toto,"%hd",x_robot); + lcd.DisplayStringAt(0, LINE(10), (unsigned char *)"X :", LEFT_MODE); + lcd.DisplayStringAt(50, LINE(10), (unsigned char *)toto, LEFT_MODE); + sprintf(toto,"%hd",y_robot); + lcd.DisplayStringAt(0, LINE(11), (unsigned char *)"Y :", LEFT_MODE); + lcd.DisplayStringAt(50, LINE(11), (unsigned char *)toto, LEFT_MODE); + sprintf(toto,"%hd",theta_robot); + lcd.DisplayStringAt(0, LINE(12), (unsigned char *)"T :", LEFT_MODE); + lcd.DisplayStringAt(50, LINE(12), (unsigned char *) toto, LEFT_MODE); + if(RETOUR.Touched()) { + while (RETOUR.Touched()); + strat_etat_s=DEMO2; + } + wait(0.2); + } + break; case TEST_VENTOUSE: lcd.SetBackColor(LCD_COLOR_WHITE); @@ -239,7 +304,7 @@ } break; - case TEST_DIVE: + case TEST_ELECTROV: lcd.SetBackColor(LCD_COLOR_WHITE); lcd.SetTextColor(LCD_COLOR_BLACK); lcd.Clear (LCD_COLOR_WHITE); @@ -248,10 +313,10 @@ RETOUR.Draw(0xFFFF0000,0); TEST_A.Draw(BLEU, BLANC); TEST_B.Draw(BLEU, BLANC); - while(strat_etat_s==TEST_DIVE) { + while(strat_etat_s==TEST_ELECTROV) { if(RETOUR.Touched()) { while (RETOUR.Touched()); - strat_etat_s=DEMO2; + strat_etat_s=DEMO; } else if(TEST_A.Touched()) { while (TEST_A.Touched()); //SendRawId(TEST_ELECTROV_A); @@ -263,30 +328,7 @@ } } break; - case TEST_ASSERVE: - lcd.SetBackColor(LCD_COLOR_WHITE); - lcd.SetTextColor(LCD_COLOR_BLACK); - lcd.Clear (LCD_COLOR_WHITE); - lcd.Clear (LCD_COLOR_WHITE); - lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"Asservissements", LEFT_MODE); - RETOUR.Draw(0xFFFF0000,0); - TEST_A.Draw(BLEU, BLANC); - TEST_B.Draw(BLEU, BLANC); - while(strat_etat_s==TEST_ASSERVE) { - if(RETOUR.Touched()) { - while (RETOUR.Touched()); - strat_etat_s=DEMO2; - } else if(TEST_A.Touched()) { - while (TEST_A.Touched()); - //SendRawId(TEST_ELECTROV_A); - TEST_A.Draw(BLEU, BLANC); - } else if(TEST_B.Touched()) { - while (TEST_B.Touched()); - //SendRawId(TEST_ELECTROV_A); - TEST_B.Draw(BLEU, BLANC); - } - } - break; + case TEST_AUD: lcd.SetBackColor(LCD_COLOR_WHITE); @@ -411,12 +453,32 @@ case TEST_COULEUR: lcd.Clear (LCD_COLOR_WHITE); lcd.DisplayStringAt(0, LINE(0), (uint8_t *)"Test Couleur", LEFT_MODE); + TEST_A.Draw(BLEU, BLANC); + TEST_B.Draw(BLEU, BLANC); + TEST_C.Draw(BLEU, BLANC); + TEST_D.Draw(BLEU, BLANC); RETOUR.Draw(0xFFFF0000,0); while(strat_etat_s==TEST_COULEUR) { if(RETOUR.Touched()) { while (RETOUR.Touched()); strat_etat_s=DEMO; lcd.Clear (LCD_COLOR_WHITE); + }else if(TEST_A.Touched()) { + while (TEST_A.Touched()); + SendRawId(TEST_BRAS_A); + TEST_A.Draw(BLEU, BLANC); + } else if(TEST_B.Touched()) { + while (TEST_B.Touched()); + SendRawId(TEST_BRAS_B); + TEST_B.Draw(BLEU, BLANC); + } else if(TEST_C.Touched()) { + while (TEST_C.Touched()); + SendRawId(TEST_BRAS_C); + TEST_C.Draw(BLEU, BLANC); + } else if(TEST_D.Touched()) { + while (TEST_D.Touched()); + SendRawId(TEST_BRAS_D); + TEST_D.Draw(BLEU, BLANC); } } break; @@ -461,7 +523,6 @@ while (strat_etat_s == SELECT_SIDE) { canProcessRx(); if(COTE_JAUNE.Touched()) { - Cote = 0x0; InversStrat = Cote; strat_etat_s = TACTIQUE; @@ -775,85 +836,4 @@ lcd.DisplayStringAt(150,0, (uint8_t *)strat_sd[Strategie], LEFT_MODE); break; } -} -void demarrage(unsigned char num){ - switch(num){ - case 0: - lcd.SetBackColor(DIY_GREY); - lcd.SetTextColor(NOIR); - lcd.Clear (DIY_GREY); - DrawC(95,150,0,50,0); - DrawR(95,150,105,50,0); - DrawA(95,150,210,50,0); - DrawC(95,150,315,50,0); - DrawCheck(30,30,50,243,0); - DrawCheck(30,30,50,293,0); - DrawCheck(30,30,50,343,0); - DrawCheck(30,30,50,393,0); - lcd.DisplayStringAt(100, 250, (uint8_t *)"Init CAN", LEFT_MODE); - lcd.DisplayStringAt(100, 300, (uint8_t *)"Micro SD", LEFT_MODE); - lcd.DisplayStringAt(100, 350, (uint8_t *)"Carte Moteur", LEFT_MODE); - lcd.DisplayStringAt(100, 400, (uint8_t *)"Balise IR", LEFT_MODE); - break; - case 1://can - DrawCheck(30,30,50,250,1); - break; - case 2://SD - DrawCheck(30,30,50,300,1); - flag_sd=1; - break; - case 3://moteur - DrawCheck(30,30,50,350,1); - break; - case 4://balise - DrawCheck(30,30,50,400,1); - break; - default: - break; -} -} -void DrawC (int l,int h,int x, int y, unsigned char fill){ - Point c[8]={{l,0},{l,h/6},{l/5,h/3},{l/5,2*(h/3)},{l,5*(h/6)},{l,h},{0,5*(h/6)},{0,h/6}}; - for(int a=0;a<8;a++){ - c[a].X+=x; - c[a].Y+=y; - } - lcd.DrawPolygon(c, 8); - -} -void DrawR (int l,int h,int x, int y, unsigned char fill){ - Point r[10]={{0,0},{5*(l/6),0},{l,h/3},{5*(l/6),h/2},{l/2,h/2},{l,h},{2*(l/3),h},{l/4,h/2},{l/4,h},{0,h}}; - for(int a=0;a<10;a++){ - r[a].X+=x; - r[a].Y+=y; - } - lcd.DrawPolygon(r, 10); -} -void DrawA (int l,int h,int x, int y, unsigned char fill){ - Point a[8]={{l/4,0},{3*(l/4),0},{l,h},{5*(l/6),h},{4*(l/6),h/2},{2*(l/6),h/2},{l/6,h},{0,h}}; - for(int z=0;z<8;z++){ - a[z].X+=x; - a[z].Y+=y; - } - lcd.DrawPolygon(a, 8); -} -void DrawCheck (int l,int h,int x, int y, int cochage){ - if(x<3)x=3; - if(cochage == 1){ - lcd.SetTextColor(VERT_F); - lcd.DrawLine(x,y-(h/2),x+l/2,y+h/2); - lcd.DrawLine(x-1,y-(h/2),x+l/2,y+h/2+1); - lcd.DrawLine(x-2,y-(h/2),x+l/2,y+h/2+2); - lcd.DrawLine(x+l/2,y+h/2,x+(4*(l/3)),y); - lcd.DrawLine(x+l/2,y+h/2+1,x+(4*(l/3))+1,y); - lcd.DrawLine(x+l/2,y+h/2+2,x+(4*(l/3))+2,y); - lcd.SetTextColor(NOIR); - } else { - Point a[4]={{0,0},{l,0},{l,h},{0,h}}; - for(int z=0;z<8;z++){ - a[z].X+=x; - a[z].Y+=y; - } - lcd.DrawPolygon(a, 4); - } } \ No newline at end of file