![](/media/cache/group/default_image.jpg.50x50_q85.jpg)
Pour Marc la mignonne
Dependencies: BSP_DISCO_F429ZI LCD_DISCO_F429ZI TS_DISCO_F429ZI mbed
Capteurs.cpp@0:fcce18d01987, 2018-05-31 (annotated)
- Committer:
- Alex_mln
- Date:
- Thu May 31 06:11:25 2018 +0000
- Revision:
- 0:fcce18d01987
Tiens pd
Who changed what in which revision?
User | Revision | Line number | New 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 |