AresENSEA-CDF2020
/
AresCDFMainCode
Code principal du projet
main.cpp@26:bb2b778bd351, 2020-11-03 (annotated)
- Committer:
- Nanaud
- Date:
- Tue Nov 03 16:29:13 2020 +0000
- Revision:
- 26:bb2b778bd351
- Parent:
- 25:869b1c1f51a7
UI
Who changed what in which revision?
User | Revision | Line number | New 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 | } |