Pour Marc la mignonne
Dependencies: BSP_DISCO_F429ZI LCD_DISCO_F429ZI TS_DISCO_F429ZI mbed
Diff: Capteurs.cpp
- Revision:
- 0:fcce18d01987
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Capteurs.cpp Thu May 31 06:11:25 2018 +0000 @@ -0,0 +1,212 @@ +#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); + } + + + + + + + + + + + + + + \ No newline at end of file