Pour Marc la mignonne
Dependencies: BSP_DISCO_F429ZI LCD_DISCO_F429ZI TS_DISCO_F429ZI mbed
Capteurs.cpp
- Committer:
- Alex_mln
- Date:
- 2018-05-31
- Revision:
- 0:fcce18d01987
File content as of revision 0:fcce18d01987:
#include "fonctions.h" #include "Touchescreen.h" typedef int liste [6]; liste blanc; liste noir; liste seuil; liste mesure; //Premiere rangée de capteur //AnalogIn capt11(PF_7); AnalogIn capt12(PF_8); AnalogIn capt11(PC_3); //AnalogIn capt13(PF_9); //Deuxieme rangée de capteur AnalogIn capt21(PC_4); AnalogIn capt22(PC_1); //AnalogIn capt23(PC_2); //Troisième rangée de capteur AnalogIn capt31(PA_7); AnalogIn capt32(PC_5); LCD_DISCO_F429ZI lcd2; TS_DISCO_F429ZI ts2; TS_StateTypeDef tsState2; uint16_t xc, yc; void interface_noir(){ lcd2.Clear(LCD_COLOR_WHITE); lcd2.SetTextColor(LCD_COLOR_BLUE); lcd2.FillRect(40,25,150,40); lcd2.SetBackColor(LCD_COLOR_BLUE); lcd2.SetTextColor(LCD_COLOR_WHITE); lcd2.DisplayStringAt(0, LINE(2), (uint8_t *)"Calibrage", CENTER_MODE); lcd2.SetBackColor(LCD_COLOR_WHITE); lcd2.SetTextColor(LCD_COLOR_BLACK); lcd2.DisplayStringAt(0, LINE(7), (uint8_t *)"Mesure du noir", CENTER_MODE); lcd2.SetTextColor(LCD_COLOR_BLUE); lcd2.FillCircle(120,235,50); lcd2.SetBackColor(LCD_COLOR_BLUE); lcd2.SetTextColor(LCD_COLOR_BLACK); lcd2.DisplayStringAt(0, 230, (uint8_t *)" OK", CENTER_MODE); } void interface_blanc(){ lcd2.Clear(LCD_COLOR_WHITE); lcd2.SetTextColor(LCD_COLOR_BLUE); lcd2.FillRect(40,25,150,40); lcd2.SetBackColor(LCD_COLOR_BLUE); lcd2.SetTextColor(LCD_COLOR_WHITE); lcd2.DisplayStringAt(0, LINE(2), (uint8_t *)"Calibrage", CENTER_MODE); lcd2.SetBackColor(LCD_COLOR_WHITE); lcd2.SetTextColor(LCD_COLOR_BLACK); lcd2.DisplayStringAt(0, LINE(7), (uint8_t *)"Mesure du blanc", CENTER_MODE); lcd2.SetTextColor(LCD_COLOR_BLUE); lcd2.FillCircle(120,235,50); lcd2.SetBackColor(LCD_COLOR_BLUE); lcd2.SetTextColor(LCD_COLOR_BLACK); lcd2.DisplayStringAt(0, 230, (uint8_t *)" OK", CENTER_MODE); } void detectionc(){ xc = tsState2.X; yc = tsState2.Y; uint8_t text[7]; sprintf((char*)text, "%d; %d", xc, yc); lcd2.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); } int noir11,noir12,noir13,noir21,noir22,noir23,noir31,noir32,noir33; int blanc11,blanc12,blanc13,blanc21,blanc22,blanc23,blanc31,blanc32,blanc33; int * pointeur = (int*)malloc(3*sizeof(int)); void calibrage(){ uint8_t status2= ts2.Init(lcd2.GetXSize(), lcd2.GetYSize()); ts2.GetState(&tsState2); interface_noir(); //Mesure du noir while((xc<72 || xc>172) || (yc>295 || yc<195)){ //Attente de la position ts2.GetState(&tsState2); detectionc(); wait(0.05);} noir[0]=capt11.read()*1000; noir[1]=capt11.read()*1000; // noir[2]=capt13.read()*1000; noir[2]=capt21.read()*1000; noir[3]=capt22.read()*1000; // noir[5]=capt23.read()*1000; noir[4]=capt31.read()*1000; noir[5]=capt32.read()*1000; /// noir[8]=capt33.read()*1000; wait(0.1); lcd2.Clear(LCD_COLOR_WHITE); //Passage au prochain lcd2.FillRect(50,50,150,50); lcd2.SetBackColor(LCD_COLOR_BLACK); lcd2.SetTextColor(LCD_COLOR_WHITE); lcd2.DisplayStringAt(0, LINE(4), (uint8_t *)"Next ->", CENTER_MODE); while((xc<47 || xc>205) || (yc>100 || yc<50)){ ts2.GetState(&tsState2); detectionc(); wait(0.05);} wait(0.01); interface_blanc(); //Mesure du blanc while((xc<72 || xc>172) || (yc>295 || yc<195)){ //Attente de la position ts2.GetState(&tsState2); detectionc(); wait(0.05);} blanc[0]=capt11.read()*1000; blanc[1]=capt11.read()*1000; // blanc[2]=capt13.read()*1000; blanc[2]=capt21.read()*1000; blanc[3]=capt22.read()*1000; // blanc[5]=capt23.read()*1000; blanc[4]=capt31.read()*1000; blanc[5]=capt32.read()*1000; // blanc[8]=capt33.read()*1000; wait(0.01); for(int k=0;k<6;k++){ //Traduction sous forme d'un pointeur pour le renvoi et calcul du seuil seuil[k]=(blanc[k]+noir[k])/2;} } int* detectionLigne(){ for(int k=0;k<3;k++){ *(pointeur+k)=0; } mesure[0]=capt11.read()*1000; mesure[1]=capt11.read()*1000; // mesure[2]=capt13.read()*1000; mesure[2]=capt21.read()*1000; mesure[3]=capt22.read()*1000; // mesure[5]=capt23.read()*1000; mesure[4]=capt31.read()*1000; mesure[5]=capt32.read()*1000; // mesure[8]=capt33.read()*1000; for(int k=0;k<6;k++){ affichage(mesure[k],k); } for(int k=0;k<6;k++){ if(mesure[k]<seuil[k]){ //*(pointeur+(k/2))=*(pointeur+(k/2))+1; if(k==1 || k==0){ *pointeur=*pointeur + 1;} else if(k==2 || k==3){ *(pointeur+1)=*(pointeur+1) + 1;} else if(k==4 || k==5){ *(pointeur+2)=*(pointeur+2) + 1;} }} for(int k=0;k<3;k++){ if(*(pointeur+k)>=1){ *(pointeur+k)=1; } else{ *(pointeur+k)=0;}} return(pointeur); }