Code principal du projet

Dependencies:   mbed DRV8825

Committer:
Nanaud
Date:
Tue Nov 03 16:29:13 2020 +0000
Revision:
26:bb2b778bd351
Parent:
25:869b1c1f51a7
UI

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Nanaud 22:f891c2bce091 1 /* Équipe : Ares ENSEA
Nanaud 22:f891c2bce091 2 * Coupe de France de robotique 2020
Nanaud 22:f891c2bce091 3 */
Nanaud 22:f891c2bce091 4
Nanaud 22:f891c2bce091 5
Nanaud 22:f891c2bce091 6 /* #include */
Nanaud 0:dc036b67c87c 7 #include "pins.h"
Nanaud 0:dc036b67c87c 8
Nanaud 6:ea6b30c4bb01 9
Nanaud 22:f891c2bce091 10 /* Variables globales */
Nanaud 22:f891c2bce091 11 Ticker TickerGlobal; // Comptage du temps écoulé
Nanaud 22:f891c2bce091 12 int cptGlobal = 0;
Nanaud 22:f891c2bce091 13 bool match = 0; // Match == 1 => Le match est en cours
Nanaud 26:bb2b778bd351 14 //bool toggledSwitch = 0;
Nanaud 20:7d206773f39e 15
Nanaud 22:f891c2bce091 16
Nanaud 22:f891c2bce091 17 /* Prototypes */
Nanaud 22:f891c2bce091 18 void btnBlueIT();
Nanaud 22:f891c2bce091 19 void globalCounterIT();
Nanaud 19:c419033c0967 20
Nanaud 20:7d206773f39e 21
Nanaud 4:ad9b7355332e 22 int main()
Nanaud 4:ad9b7355332e 23 {
Nanaud 22:f891c2bce091 24 pc.printf("\r\nAresCDF2020\r\n");
Nanaud 22:f891c2bce091 25 bt.printf("\r\nAresCDF2020\r\n");
Nanaud 22:f891c2bce091 26
Nanaud 22:f891c2bce091 27 /* Initialisation des drivers */
Nanaud 22:f891c2bce091 28 drv_init();
Nanaud 20:7d206773f39e 29
Nanaud 22:f891c2bce091 30 /* Initialisation des codeurs */
Nanaud 22:f891c2bce091 31 cdgA.rise(&cdgaRise);
Nanaud 22:f891c2bce091 32 cddA.rise(&cddaRise);
Nanaud 22:f891c2bce091 33 cdgA.mode(PullUp);
Nanaud 22:f891c2bce091 34 cddA.mode(PullUp);
Nanaud 6:ea6b30c4bb01 35
Nanaud 22:f891c2bce091 36 /* Initialisation des broches */
Nanaud 22:f891c2bce091 37 Tirette.mode(PullDown);
Nanaud 22:f891c2bce091 38
Nanaud 22:f891c2bce091 39 /* Initialisation des pavillons */
Nanaud 22:f891c2bce091 40 FlagGOTO(90);
Nanaud 6:ea6b30c4bb01 41
Nanaud 22:f891c2bce091 42 /* Timers & tickers */
Nanaud 22:f891c2bce091 43 TickerGlobal.attach(&globalCounterIT, 1.0);
Nanaud 22:f891c2bce091 44 TimUS.start();
Nanaud 4:ad9b7355332e 45
Nanaud 22:f891c2bce091 46 TickUS_actu.attach(&captUS_trig,0.2);
Nanaud 22:f891c2bce091 47 Ticker_asserv.attach(&asserv,0.015);
Nanaud 22:f891c2bce091 48 //Ticker_affUS.attach(&affUltrasons,1.0);
Nanaud 22:f891c2bce091 49
Nanaud 22:f891c2bce091 50 /* Initialisation des capteurs à ultrasons */
Nanaud 22:f891c2bce091 51 echo1.rise(&echoRise1); // Interruptions pour les capteurs à ultrasons
Nanaud 0:dc036b67c87c 52 echo1.fall(&echoFall1);
Nanaud 0:dc036b67c87c 53 echo2.rise(&echoRise2);
Nanaud 0:dc036b67c87c 54 echo2.fall(&echoFall2);
Nanaud 0:dc036b67c87c 55 echo3.rise(&echoRise3);
Nanaud 0:dc036b67c87c 56 echo3.fall(&echoFall3);
Nanaud 0:dc036b67c87c 57 echo4.rise(&echoRise4);
Nanaud 0:dc036b67c87c 58 echo4.fall(&echoFall4);
Nanaud 0:dc036b67c87c 59 echo5.rise(&echoRise5);
Nanaud 0:dc036b67c87c 60 echo5.fall(&echoFall5);
Nanaud 0:dc036b67c87c 61 echo6.rise(&echoRise6);
Nanaud 0:dc036b67c87c 62 echo6.fall(&echoFall6);
Nanaud 4:ad9b7355332e 63
Nanaud 22:f891c2bce091 64 /* debug */
Nanaud 22:f891c2bce091 65 pc.attach(&serialIT); // Interruption liaison série
Nanaud 22:f891c2bce091 66 bt.attach(&bluetoothIT); // Interruption bluetooth
Nanaud 22:f891c2bce091 67 pc.baud(9600);
Nanaud 22:f891c2bce091 68 pc.format(8,SerialBase::None,1);
Nanaud 22:f891c2bce091 69 bt.baud(9600);
Nanaud 22:f891c2bce091 70 bt.format(8,SerialBase::None,1);
Nanaud 4:ad9b7355332e 71
Nanaud 22:f891c2bce091 72 /* Autres */
Nanaud 22:f891c2bce091 73 //btnBlue.rise(&boutonBleu);
Nanaud 4:ad9b7355332e 74
Nanaud 26:bb2b778bd351 75 if (SwitchStrategie == 1) {
Nanaud 26:bb2b778bd351 76 stratX_select = objX_bleu;
Nanaud 26:bb2b778bd351 77 x = x_init_bleu;
Nanaud 26:bb2b778bd351 78 y = y_init;
Nanaud 26:bb2b778bd351 79 O = O_init_bleu;
Nanaud 26:bb2b778bd351 80 Led = 1;
Nanaud 26:bb2b778bd351 81 } else {
Nanaud 26:bb2b778bd351 82 stratX_select = objX_jaune;
Nanaud 26:bb2b778bd351 83 x = x_init_jaune;
Nanaud 26:bb2b778bd351 84 y = y_init;
Nanaud 26:bb2b778bd351 85 O = O_init_jaune;
Nanaud 26:bb2b778bd351 86 Led = 0;
Nanaud 26:bb2b778bd351 87 }
Nanaud 26:bb2b778bd351 88
Nanaud 22:f891c2bce091 89 /* Boucle infinie */
Nanaud 14:dd3c756c6d48 90 while(1) {
Nanaud 22:f891c2bce091 91 if (Tirette == 1 && match == 0) { // Stand-by
Nanaud 22:f891c2bce091 92 // Le match n'a pas encore commencé
Nanaud 22:f891c2bce091 93 // Le compteur du match reste à 0
Nanaud 26:bb2b778bd351 94 //Led = 1;
Nanaud 22:f891c2bce091 95 match = 0;
Nanaud 22:f891c2bce091 96 cptGlobal=0;
Nanaud 26:bb2b778bd351 97
Nanaud 26:bb2b778bd351 98 if (SwitchStrategie == 1) {
Nanaud 26:bb2b778bd351 99 stratX_select = objX_bleu;
Nanaud 26:bb2b778bd351 100 x = x_init_bleu;
Nanaud 26:bb2b778bd351 101 y = y_init;
Nanaud 26:bb2b778bd351 102 O = O_init_bleu;
Nanaud 26:bb2b778bd351 103 Led = 1;
Nanaud 26:bb2b778bd351 104 } else {
Nanaud 26:bb2b778bd351 105 stratX_select = objX_jaune;
Nanaud 26:bb2b778bd351 106 x = x_init_jaune;
Nanaud 26:bb2b778bd351 107 y = y_init;
Nanaud 26:bb2b778bd351 108 O = O_init_jaune;
Nanaud 26:bb2b778bd351 109 Led = 0;
Nanaud 26:bb2b778bd351 110 }
Nanaud 22:f891c2bce091 111 }
Nanaud 22:f891c2bce091 112
Nanaud 22:f891c2bce091 113 else if (Tirette == 0 && match == 0) { // Début du match
Nanaud 22:f891c2bce091 114 // Le match débute
Nanaud 22:f891c2bce091 115 // La LED s'éteind
Nanaud 26:bb2b778bd351 116 //Led = 0;
Nanaud 22:f891c2bce091 117 match = 1;
Nanaud 22:f891c2bce091 118 cptGlobal = 0;
Nanaud 26:bb2b778bd351 119
Nanaud 25:869b1c1f51a7 120 indiceStrategie = 1;
Nanaud 25:869b1c1f51a7 121 action = objEtape[indiceStrategie];
Nanaud 26:bb2b778bd351 122 xC = stratX_select[indiceStrategie];
Nanaud 25:869b1c1f51a7 123 yC = objY[indiceStrategie];
Nanaud 20:7d206773f39e 124 }
Nanaud 20:7d206773f39e 125
Nanaud 25:869b1c1f51a7 126 if (indiceStrategie >= NbObj) {
Nanaud 25:869b1c1f51a7 127 action = 0;
Nanaud 19:c419033c0967 128 }
Nanaud 14:dd3c756c6d48 129 }
Nanaud 0:dc036b67c87c 130 }
Nanaud 22:f891c2bce091 131
Nanaud 22:f891c2bce091 132 void btnBlueIT()
Nanaud 22:f891c2bce091 133 {
Nanaud 22:f891c2bce091 134 /* Rien */
Nanaud 22:f891c2bce091 135 }
Nanaud 22:f891c2bce091 136
Nanaud 22:f891c2bce091 137 void globalCounterIT()
Nanaud 22:f891c2bce091 138 {
Nanaud 22:f891c2bce091 139 cptGlobal++;
Nanaud 22:f891c2bce091 140
Nanaud 22:f891c2bce091 141 if(cptGlobal==95) { // Le drapeau doit être hissé à 95sec
Nanaud 22:f891c2bce091 142 FlagGOTO(0);
Nanaud 22:f891c2bce091 143 }
Nanaud 22:f891c2bce091 144
Nanaud 22:f891c2bce091 145 if(cptGlobal>=100) { // Le robot doit s'arrêter à 100sec
Nanaud 25:869b1c1f51a7 146 action=0;
Nanaud 22:f891c2bce091 147 }
Nanaud 22:f891c2bce091 148 }