Robot_tennis / Mbed 2 deprecated cerv0

Dependencies:   mbed

Committer:
terrier_julien
Date:
Thu Jun 09 20:36:50 2022 +0000
Revision:
1:cfb7e4122e21
Parent:
0:c2a70ac44fd7
structure de programme cerveau

Who changed what in which revision?

UserRevisionLine numberNew contents of line
terrier_julien 0:c2a70ac44fd7 1 #include "mbed.h"
terrier_julien 1:cfb7e4122e21 2 #include "autre.h"
terrier_julien 0:c2a70ac44fd7 3 #include "header.h"
terrier_julien 1:cfb7e4122e21 4 float distance_laser[8] = {0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0};
terrier_julien 1:cfb7e4122e21 5 Timer temps_de_jeux;
terrier_julien 1:cfb7e4122e21 6 Timer launch_time;
terrier_julien 1:cfb7e4122e21 7 typedef enum {debut,chasse,ctourne_droite,ctourne_gauche,cvire_gauche,cvire_droite,cavance,vise,tire} type_statut;
terrier_julien 0:c2a70ac44fd7 8
terrier_julien 1:cfb7e4122e21 9 static type_statut statut = debut;
terrier_julien 0:c2a70ac44fd7 10
terrier_julien 1:cfb7e4122e21 11 void cerveau(void)
terrier_julien 1:cfb7e4122e21 12 {
terrier_julien 1:cfb7e4122e21 13 float x;
terrier_julien 1:cfb7e4122e21 14 if(temps_de_jeux.read() < 88)
terrier_julien 1:cfb7e4122e21 15 {
terrier_julien 1:cfb7e4122e21 16 switch (statut)
terrier_julien 0:c2a70ac44fd7 17 {
terrier_julien 1:cfb7e4122e21 18 case debut :
terrier_julien 1:cfb7e4122e21 19 init_moteur_propulsion();
terrier_julien 1:cfb7e4122e21 20 init_moteur_balle();
terrier_julien 1:cfb7e4122e21 21 avancer(1);
terrier_julien 1:cfb7e4122e21 22 prise_avant(0.5);
terrier_julien 1:cfb7e4122e21 23 if(distance_laser[2] < 0.05) statut = vise;
terrier_julien 1:cfb7e4122e21 24 break;
terrier_julien 1:cfb7e4122e21 25
terrier_julien 1:cfb7e4122e21 26 case chasse :
terrier_julien 1:cfb7e4122e21 27 //priorité à droite
terrier_julien 1:cfb7e4122e21 28 prise_avant(0.5);
terrier_julien 1:cfb7e4122e21 29 vire_droite(1);
terrier_julien 1:cfb7e4122e21 30 //si la distance détécté par le laser est bon => case adaptée
terrier_julien 1:cfb7e4122e21 31 if (test_presence(1)) statut = cvire_gauche;
terrier_julien 1:cfb7e4122e21 32 else if (test_presence(2) && test_presence(3)) statut = cavance;
terrier_julien 1:cfb7e4122e21 33 else if (test_presence(4)) statut = cvire_droite;
terrier_julien 1:cfb7e4122e21 34 break;
terrier_julien 1:cfb7e4122e21 35
terrier_julien 1:cfb7e4122e21 36 case cvire_gauche : //trourne fortement à gauche
terrier_julien 1:cfb7e4122e21 37 vire_gauche(1);
terrier_julien 1:cfb7e4122e21 38 if(test_presence(1)) statut = ctourne_gauche;
terrier_julien 1:cfb7e4122e21 39 break;
terrier_julien 1:cfb7e4122e21 40
terrier_julien 1:cfb7e4122e21 41 case cvire_droite : //trourne fortement à droite
terrier_julien 1:cfb7e4122e21 42 vire_droite(1);
terrier_julien 1:cfb7e4122e21 43 if(test_presence(4)) statut = ctourne_droite;
terrier_julien 1:cfb7e4122e21 44 break;
terrier_julien 0:c2a70ac44fd7 45
terrier_julien 1:cfb7e4122e21 46 case cavance :
terrier_julien 1:cfb7e4122e21 47 avancer(1);
terrier_julien 1:cfb7e4122e21 48 if(!test_presence(2)) statut = ctourne_droite;
terrier_julien 1:cfb7e4122e21 49 else if(!test_presence(3)) statut = ctourne_gauche;
terrier_julien 1:cfb7e4122e21 50 else if(distance_laser[2] < 0.05) statut = vise;
terrier_julien 1:cfb7e4122e21 51 break;
terrier_julien 1:cfb7e4122e21 52
terrier_julien 1:cfb7e4122e21 53 case ctourne_droite : //tourne un peu à droite
terrier_julien 1:cfb7e4122e21 54 tourner_droite(1);
terrier_julien 1:cfb7e4122e21 55 if(test_presence(3)) statut = cavance;
terrier_julien 1:cfb7e4122e21 56 else if(distance_laser[2] < 0.05) statut = vise;
terrier_julien 1:cfb7e4122e21 57 break;
terrier_julien 0:c2a70ac44fd7 58
terrier_julien 1:cfb7e4122e21 59 case ctourne_gauche : //tourne un peu à gauche
terrier_julien 1:cfb7e4122e21 60 tourner_gauche(1);
terrier_julien 1:cfb7e4122e21 61 if(test_presence(2)) statut = cavance;
terrier_julien 1:cfb7e4122e21 62 else if(distance_laser[2] < 0.05) statut = vise;
terrier_julien 1:cfb7e4122e21 63 break;
terrier_julien 1:cfb7e4122e21 64
terrier_julien 1:cfb7e4122e21 65 case vise :
terrier_julien 1:cfb7e4122e21 66 stop();
terrier_julien 1:cfb7e4122e21 67 prise_avant(0);
terrier_julien 1:cfb7e4122e21 68 //calcule de math etc
terrier_julien 1:cfb7e4122e21 69 x = 0.5;
terrier_julien 1:cfb7e4122e21 70 //c'est calculé t'inquiète
terrier_julien 1:cfb7e4122e21 71 statut = tire;
terrier_julien 1:cfb7e4122e21 72 break;
terrier_julien 1:cfb7e4122e21 73
terrier_julien 1:cfb7e4122e21 74 case tire :
terrier_julien 1:cfb7e4122e21 75 launch_time.reset();
terrier_julien 1:cfb7e4122e21 76 prise_arriere(x);
terrier_julien 1:cfb7e4122e21 77 if(launch_time.read() > 0.5 ) statut = chasse;
terrier_julien 1:cfb7e4122e21 78 break;
terrier_julien 0:c2a70ac44fd7 79 }
terrier_julien 1:cfb7e4122e21 80 } else
terrier_julien 1:cfb7e4122e21 81 {
terrier_julien 1:cfb7e4122e21 82 stop();
terrier_julien 1:cfb7e4122e21 83 //creve_ballon();
terrier_julien 0:c2a70ac44fd7 84 }
terrier_julien 0:c2a70ac44fd7 85 }
terrier_julien 1:cfb7e4122e21 86
terrier_julien 1:cfb7e4122e21 87 bool test_presence( int num)
terrier_julien 1:cfb7e4122e21 88 {
terrier_julien 1:cfb7e4122e21 89 //calcule_coord laser(distance_laser[num]);
terrier_julien 1:cfb7e4122e21 90 //if ((Xballe < 4000)|| (Xballe > 0) || (Yballe < 4000) || (Yballe > 0)) return 1;
terrier_julien 1:cfb7e4122e21 91 //else return 0;
terrier_julien 1:cfb7e4122e21 92 }
terrier_julien 1:cfb7e4122e21 93