Pour Marc la mignonne

Dependencies:   BSP_DISCO_F429ZI LCD_DISCO_F429ZI TS_DISCO_F429ZI mbed

Committer:
Alex_mln
Date:
Thu May 31 06:11:25 2018 +0000
Revision:
0:fcce18d01987
Tiens pd

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Alex_mln 0:fcce18d01987 1 #include "fonctions.h"
Alex_mln 0:fcce18d01987 2 #include "Touchescreen.h"
Alex_mln 0:fcce18d01987 3
Alex_mln 0:fcce18d01987 4 typedef int liste [6];
Alex_mln 0:fcce18d01987 5 liste blanc;
Alex_mln 0:fcce18d01987 6 liste noir;
Alex_mln 0:fcce18d01987 7 liste seuil;
Alex_mln 0:fcce18d01987 8 liste mesure;
Alex_mln 0:fcce18d01987 9
Alex_mln 0:fcce18d01987 10
Alex_mln 0:fcce18d01987 11 //Premiere rangée de capteur
Alex_mln 0:fcce18d01987 12 //AnalogIn capt11(PF_7);
Alex_mln 0:fcce18d01987 13 AnalogIn capt12(PF_8);
Alex_mln 0:fcce18d01987 14 AnalogIn capt11(PC_3);
Alex_mln 0:fcce18d01987 15 //AnalogIn capt13(PF_9);
Alex_mln 0:fcce18d01987 16
Alex_mln 0:fcce18d01987 17 //Deuxieme rangée de capteur
Alex_mln 0:fcce18d01987 18 AnalogIn capt21(PC_4);
Alex_mln 0:fcce18d01987 19 AnalogIn capt22(PC_1);
Alex_mln 0:fcce18d01987 20 //AnalogIn capt23(PC_2);
Alex_mln 0:fcce18d01987 21
Alex_mln 0:fcce18d01987 22 //Troisième rangée de capteur
Alex_mln 0:fcce18d01987 23
Alex_mln 0:fcce18d01987 24 AnalogIn capt31(PA_7);
Alex_mln 0:fcce18d01987 25 AnalogIn capt32(PC_5);
Alex_mln 0:fcce18d01987 26
Alex_mln 0:fcce18d01987 27
Alex_mln 0:fcce18d01987 28 LCD_DISCO_F429ZI lcd2;
Alex_mln 0:fcce18d01987 29 TS_DISCO_F429ZI ts2;
Alex_mln 0:fcce18d01987 30 TS_StateTypeDef tsState2;
Alex_mln 0:fcce18d01987 31 uint16_t xc, yc;
Alex_mln 0:fcce18d01987 32
Alex_mln 0:fcce18d01987 33
Alex_mln 0:fcce18d01987 34
Alex_mln 0:fcce18d01987 35
Alex_mln 0:fcce18d01987 36 void interface_noir(){
Alex_mln 0:fcce18d01987 37 lcd2.Clear(LCD_COLOR_WHITE);
Alex_mln 0:fcce18d01987 38
Alex_mln 0:fcce18d01987 39 lcd2.SetTextColor(LCD_COLOR_BLUE);
Alex_mln 0:fcce18d01987 40 lcd2.FillRect(40,25,150,40);
Alex_mln 0:fcce18d01987 41 lcd2.SetBackColor(LCD_COLOR_BLUE);
Alex_mln 0:fcce18d01987 42 lcd2.SetTextColor(LCD_COLOR_WHITE);
Alex_mln 0:fcce18d01987 43 lcd2.DisplayStringAt(0, LINE(2), (uint8_t *)"Calibrage", CENTER_MODE);
Alex_mln 0:fcce18d01987 44
Alex_mln 0:fcce18d01987 45 lcd2.SetBackColor(LCD_COLOR_WHITE);
Alex_mln 0:fcce18d01987 46 lcd2.SetTextColor(LCD_COLOR_BLACK);
Alex_mln 0:fcce18d01987 47 lcd2.DisplayStringAt(0, LINE(7), (uint8_t *)"Mesure du noir", CENTER_MODE);
Alex_mln 0:fcce18d01987 48
Alex_mln 0:fcce18d01987 49 lcd2.SetTextColor(LCD_COLOR_BLUE);
Alex_mln 0:fcce18d01987 50 lcd2.FillCircle(120,235,50);
Alex_mln 0:fcce18d01987 51 lcd2.SetBackColor(LCD_COLOR_BLUE);
Alex_mln 0:fcce18d01987 52 lcd2.SetTextColor(LCD_COLOR_BLACK);
Alex_mln 0:fcce18d01987 53 lcd2.DisplayStringAt(0, 230, (uint8_t *)" OK", CENTER_MODE);
Alex_mln 0:fcce18d01987 54 }
Alex_mln 0:fcce18d01987 55
Alex_mln 0:fcce18d01987 56
Alex_mln 0:fcce18d01987 57
Alex_mln 0:fcce18d01987 58 void interface_blanc(){
Alex_mln 0:fcce18d01987 59 lcd2.Clear(LCD_COLOR_WHITE);
Alex_mln 0:fcce18d01987 60
Alex_mln 0:fcce18d01987 61 lcd2.SetTextColor(LCD_COLOR_BLUE);
Alex_mln 0:fcce18d01987 62 lcd2.FillRect(40,25,150,40);
Alex_mln 0:fcce18d01987 63 lcd2.SetBackColor(LCD_COLOR_BLUE);
Alex_mln 0:fcce18d01987 64 lcd2.SetTextColor(LCD_COLOR_WHITE);
Alex_mln 0:fcce18d01987 65 lcd2.DisplayStringAt(0, LINE(2), (uint8_t *)"Calibrage", CENTER_MODE);
Alex_mln 0:fcce18d01987 66
Alex_mln 0:fcce18d01987 67 lcd2.SetBackColor(LCD_COLOR_WHITE);
Alex_mln 0:fcce18d01987 68 lcd2.SetTextColor(LCD_COLOR_BLACK);
Alex_mln 0:fcce18d01987 69 lcd2.DisplayStringAt(0, LINE(7), (uint8_t *)"Mesure du blanc", CENTER_MODE);
Alex_mln 0:fcce18d01987 70
Alex_mln 0:fcce18d01987 71 lcd2.SetTextColor(LCD_COLOR_BLUE);
Alex_mln 0:fcce18d01987 72 lcd2.FillCircle(120,235,50);
Alex_mln 0:fcce18d01987 73 lcd2.SetBackColor(LCD_COLOR_BLUE);
Alex_mln 0:fcce18d01987 74 lcd2.SetTextColor(LCD_COLOR_BLACK);
Alex_mln 0:fcce18d01987 75 lcd2.DisplayStringAt(0, 230, (uint8_t *)" OK", CENTER_MODE);
Alex_mln 0:fcce18d01987 76 }
Alex_mln 0:fcce18d01987 77
Alex_mln 0:fcce18d01987 78
Alex_mln 0:fcce18d01987 79
Alex_mln 0:fcce18d01987 80 void detectionc(){
Alex_mln 0:fcce18d01987 81 xc = tsState2.X;
Alex_mln 0:fcce18d01987 82 yc = tsState2.Y;
Alex_mln 0:fcce18d01987 83 uint8_t text[7];
Alex_mln 0:fcce18d01987 84 sprintf((char*)text, "%d; %d", xc, yc);
Alex_mln 0:fcce18d01987 85 lcd2.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); }
Alex_mln 0:fcce18d01987 86
Alex_mln 0:fcce18d01987 87
Alex_mln 0:fcce18d01987 88 int noir11,noir12,noir13,noir21,noir22,noir23,noir31,noir32,noir33;
Alex_mln 0:fcce18d01987 89 int blanc11,blanc12,blanc13,blanc21,blanc22,blanc23,blanc31,blanc32,blanc33;
Alex_mln 0:fcce18d01987 90
Alex_mln 0:fcce18d01987 91
Alex_mln 0:fcce18d01987 92 int * pointeur = (int*)malloc(3*sizeof(int));
Alex_mln 0:fcce18d01987 93
Alex_mln 0:fcce18d01987 94 void calibrage(){
Alex_mln 0:fcce18d01987 95 uint8_t status2= ts2.Init(lcd2.GetXSize(), lcd2.GetYSize());
Alex_mln 0:fcce18d01987 96 ts2.GetState(&tsState2);
Alex_mln 0:fcce18d01987 97
Alex_mln 0:fcce18d01987 98
Alex_mln 0:fcce18d01987 99 interface_noir(); //Mesure du noir
Alex_mln 0:fcce18d01987 100
Alex_mln 0:fcce18d01987 101 while((xc<72 || xc>172) || (yc>295 || yc<195)){ //Attente de la position
Alex_mln 0:fcce18d01987 102 ts2.GetState(&tsState2);
Alex_mln 0:fcce18d01987 103 detectionc();
Alex_mln 0:fcce18d01987 104 wait(0.05);}
Alex_mln 0:fcce18d01987 105
Alex_mln 0:fcce18d01987 106 noir[0]=capt11.read()*1000;
Alex_mln 0:fcce18d01987 107 noir[1]=capt11.read()*1000;
Alex_mln 0:fcce18d01987 108 // noir[2]=capt13.read()*1000;
Alex_mln 0:fcce18d01987 109
Alex_mln 0:fcce18d01987 110 noir[2]=capt21.read()*1000;
Alex_mln 0:fcce18d01987 111 noir[3]=capt22.read()*1000;
Alex_mln 0:fcce18d01987 112 // noir[5]=capt23.read()*1000;
Alex_mln 0:fcce18d01987 113
Alex_mln 0:fcce18d01987 114 noir[4]=capt31.read()*1000;
Alex_mln 0:fcce18d01987 115 noir[5]=capt32.read()*1000;
Alex_mln 0:fcce18d01987 116 /// noir[8]=capt33.read()*1000;
Alex_mln 0:fcce18d01987 117
Alex_mln 0:fcce18d01987 118 wait(0.1);
Alex_mln 0:fcce18d01987 119
Alex_mln 0:fcce18d01987 120 lcd2.Clear(LCD_COLOR_WHITE); //Passage au prochain
Alex_mln 0:fcce18d01987 121 lcd2.FillRect(50,50,150,50);
Alex_mln 0:fcce18d01987 122 lcd2.SetBackColor(LCD_COLOR_BLACK);
Alex_mln 0:fcce18d01987 123 lcd2.SetTextColor(LCD_COLOR_WHITE);
Alex_mln 0:fcce18d01987 124 lcd2.DisplayStringAt(0, LINE(4), (uint8_t *)"Next ->", CENTER_MODE);
Alex_mln 0:fcce18d01987 125
Alex_mln 0:fcce18d01987 126
Alex_mln 0:fcce18d01987 127
Alex_mln 0:fcce18d01987 128 while((xc<47 || xc>205) || (yc>100 || yc<50)){
Alex_mln 0:fcce18d01987 129 ts2.GetState(&tsState2);
Alex_mln 0:fcce18d01987 130 detectionc();
Alex_mln 0:fcce18d01987 131 wait(0.05);}
Alex_mln 0:fcce18d01987 132
Alex_mln 0:fcce18d01987 133
Alex_mln 0:fcce18d01987 134 wait(0.01);
Alex_mln 0:fcce18d01987 135 interface_blanc(); //Mesure du blanc
Alex_mln 0:fcce18d01987 136
Alex_mln 0:fcce18d01987 137 while((xc<72 || xc>172) || (yc>295 || yc<195)){ //Attente de la position
Alex_mln 0:fcce18d01987 138 ts2.GetState(&tsState2);
Alex_mln 0:fcce18d01987 139 detectionc();
Alex_mln 0:fcce18d01987 140 wait(0.05);}
Alex_mln 0:fcce18d01987 141
Alex_mln 0:fcce18d01987 142
Alex_mln 0:fcce18d01987 143 blanc[0]=capt11.read()*1000;
Alex_mln 0:fcce18d01987 144 blanc[1]=capt11.read()*1000;
Alex_mln 0:fcce18d01987 145 // blanc[2]=capt13.read()*1000;
Alex_mln 0:fcce18d01987 146
Alex_mln 0:fcce18d01987 147 blanc[2]=capt21.read()*1000;
Alex_mln 0:fcce18d01987 148 blanc[3]=capt22.read()*1000;
Alex_mln 0:fcce18d01987 149 // blanc[5]=capt23.read()*1000;
Alex_mln 0:fcce18d01987 150
Alex_mln 0:fcce18d01987 151 blanc[4]=capt31.read()*1000;
Alex_mln 0:fcce18d01987 152 blanc[5]=capt32.read()*1000;
Alex_mln 0:fcce18d01987 153 // blanc[8]=capt33.read()*1000;
Alex_mln 0:fcce18d01987 154
Alex_mln 0:fcce18d01987 155 wait(0.01);
Alex_mln 0:fcce18d01987 156
Alex_mln 0:fcce18d01987 157
Alex_mln 0:fcce18d01987 158 for(int k=0;k<6;k++){ //Traduction sous forme d'un pointeur pour le renvoi et calcul du seuil
Alex_mln 0:fcce18d01987 159 seuil[k]=(blanc[k]+noir[k])/2;}
Alex_mln 0:fcce18d01987 160 }
Alex_mln 0:fcce18d01987 161
Alex_mln 0:fcce18d01987 162
Alex_mln 0:fcce18d01987 163
Alex_mln 0:fcce18d01987 164 int* detectionLigne(){
Alex_mln 0:fcce18d01987 165 for(int k=0;k<3;k++){
Alex_mln 0:fcce18d01987 166 *(pointeur+k)=0; }
Alex_mln 0:fcce18d01987 167 mesure[0]=capt11.read()*1000;
Alex_mln 0:fcce18d01987 168 mesure[1]=capt11.read()*1000;
Alex_mln 0:fcce18d01987 169 // mesure[2]=capt13.read()*1000;
Alex_mln 0:fcce18d01987 170
Alex_mln 0:fcce18d01987 171 mesure[2]=capt21.read()*1000;
Alex_mln 0:fcce18d01987 172 mesure[3]=capt22.read()*1000;
Alex_mln 0:fcce18d01987 173 // mesure[5]=capt23.read()*1000;
Alex_mln 0:fcce18d01987 174
Alex_mln 0:fcce18d01987 175 mesure[4]=capt31.read()*1000;
Alex_mln 0:fcce18d01987 176 mesure[5]=capt32.read()*1000;
Alex_mln 0:fcce18d01987 177 // mesure[8]=capt33.read()*1000;
Alex_mln 0:fcce18d01987 178
Alex_mln 0:fcce18d01987 179 for(int k=0;k<6;k++){
Alex_mln 0:fcce18d01987 180 affichage(mesure[k],k); }
Alex_mln 0:fcce18d01987 181
Alex_mln 0:fcce18d01987 182 for(int k=0;k<6;k++){
Alex_mln 0:fcce18d01987 183 if(mesure[k]<seuil[k]){
Alex_mln 0:fcce18d01987 184 //*(pointeur+(k/2))=*(pointeur+(k/2))+1;
Alex_mln 0:fcce18d01987 185 if(k==1 || k==0){
Alex_mln 0:fcce18d01987 186 *pointeur=*pointeur + 1;}
Alex_mln 0:fcce18d01987 187 else if(k==2 || k==3){
Alex_mln 0:fcce18d01987 188 *(pointeur+1)=*(pointeur+1) + 1;}
Alex_mln 0:fcce18d01987 189 else if(k==4 || k==5){
Alex_mln 0:fcce18d01987 190 *(pointeur+2)=*(pointeur+2) + 1;}
Alex_mln 0:fcce18d01987 191 }}
Alex_mln 0:fcce18d01987 192 for(int k=0;k<3;k++){
Alex_mln 0:fcce18d01987 193 if(*(pointeur+k)>=1){
Alex_mln 0:fcce18d01987 194 *(pointeur+k)=1; }
Alex_mln 0:fcce18d01987 195 else{
Alex_mln 0:fcce18d01987 196 *(pointeur+k)=0;}}
Alex_mln 0:fcce18d01987 197 return(pointeur);
Alex_mln 0:fcce18d01987 198 }
Alex_mln 0:fcce18d01987 199
Alex_mln 0:fcce18d01987 200
Alex_mln 0:fcce18d01987 201
Alex_mln 0:fcce18d01987 202
Alex_mln 0:fcce18d01987 203
Alex_mln 0:fcce18d01987 204
Alex_mln 0:fcce18d01987 205
Alex_mln 0:fcce18d01987 206
Alex_mln 0:fcce18d01987 207
Alex_mln 0:fcce18d01987 208
Alex_mln 0:fcce18d01987 209
Alex_mln 0:fcce18d01987 210
Alex_mln 0:fcce18d01987 211
Alex_mln 0:fcce18d01987 212