Pour Marc la mignonne
Dependencies: BSP_DISCO_F429ZI LCD_DISCO_F429ZI TS_DISCO_F429ZI mbed
Diff: automatique.cpp
- Revision:
- 0:fcce18d01987
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/automatique.cpp Thu May 31 06:11:25 2018 +0000 @@ -0,0 +1,83 @@ +#include "mbed.h" +#include "LCD_DISCO_F429ZI.h" +#include "commandes.h" +#include "TS_DISCO_F429ZI.h" +#include <stdlib.h> +#include "screen.h" +#include "automatique.h" +#include "Capteurs.h" + +//typedef int tab[3]; +int capteur1,capteur2,capteur3; //gauche, centre, droit +//tab ligne; +float delai=1.0; + + +LCD_DISCO_F429ZI lcda; +TS_DISCO_F429ZI tsa; +TS_StateTypeDef tsStatea; +uint16_t xa, ya; + + + +void detectiona(){ + xa = tsStatea.X; + ya = tsStatea.Y; + int8_t text[7]; + sprintf((char*)text, "%d; %d", xa, ya); + lcda.DisplayStringAt(0, LINE(0), (uint8_t *)&text, LEFT_MODE); +} + + +void traitement(){ + if(capteur1==0 && capteur2==1 && capteur3==0){ + avancer(); + wait(delai); + } + else if(capteur1==1 && capteur2==0 && capteur3==0){ + tournerDroitVite(); + wait(delai); + } + else if(capteur1==1 && capteur2==1 && capteur3==0){ + tourner_droite(); + wait(delai); + } + else if(capteur1==0 && capteur2==0 && capteur3==1){ + tournerGaucheVite(); + wait(delai); + } + else if(capteur1==0 && capteur2==1 && capteur3==1){ + tourner_gauche(); + wait(delai); + } + else if(capteur1==1 && capteur2==1 && capteur3==1){ + arreter(); + wait(delai); + } +} + +void go_automatique(){ + + uint8_t status = tsa.Init(lcda.GetXSize(), lcda.GetYSize()); + tsa.GetState(&tsStatea); + detectiona(); + + + while((xa>225 || xa<12) || (ya<78-20 || ya>288-20)){ + tsa.GetState(&tsStatea); + detectiona(); + int* ligne=detectionLigne(); + capteur1=*ligne; + capteur2=*(ligne+1); + capteur3=*(ligne+2); + traitement(); + wait(delai); + } +} + + + + + + + \ No newline at end of file