Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
fonction.cpp@1:cfb7e4122e21, 2022-06-09 (annotated)
- 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?
User | Revision | Line number | New 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 |