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 Servo ascenseur_Lib
main.cpp@0:e80f8fc78d33, 2019-05-29 (annotated)
- Committer:
- Antoine_
- Date:
- Wed May 29 11:14:47 2019 +0000
- Revision:
- 0:e80f8fc78d33
main de la carte actionneur
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Antoine_ | 0:e80f8fc78d33 | 1 | #include "mbed.h" |
Antoine_ | 0:e80f8fc78d33 | 2 | #include "Ascenseur.h" |
Antoine_ | 0:e80f8fc78d33 | 3 | #include "pinMap.hpp" |
Antoine_ | 0:e80f8fc78d33 | 4 | |
Antoine_ | 0:e80f8fc78d33 | 5 | |
Antoine_ | 0:e80f8fc78d33 | 6 | #define TAILLE_RX 11 |
Antoine_ | 0:e80f8fc78d33 | 7 | #define TAILLE_TX 7 |
Antoine_ | 0:e80f8fc78d33 | 8 | #define VIOLET 1 |
Antoine_ | 0:e80f8fc78d33 | 9 | #define JAUNE 0 |
Antoine_ | 0:e80f8fc78d33 | 10 | |
Antoine_ | 0:e80f8fc78d33 | 11 | |
Antoine_ | 0:e80f8fc78d33 | 12 | char bufferOrdre[TAILLE_RX-1]; |
Antoine_ | 0:e80f8fc78d33 | 13 | char bufferAcquitement[TAILLE_TX] = "fini\n\r"; |
Antoine_ | 0:e80f8fc78d33 | 14 | bool newOrdre = false; |
Antoine_ | 0:e80f8fc78d33 | 15 | bool mvtFini; |
Antoine_ | 0:e80f8fc78d33 | 16 | bool init_match = true; |
Antoine_ | 0:e80f8fc78d33 | 17 | bool couleur = VIOLET ; |
Antoine_ | 0:e80f8fc78d33 | 18 | |
Antoine_ | 0:e80f8fc78d33 | 19 | Serial pc(SERIAL_TX, SERIAL_RX,115200); |
Antoine_ | 0:e80f8fc78d33 | 20 | Serial serial(PIN_TX, PIN_RX, 115200); |
Antoine_ | 0:e80f8fc78d33 | 21 | event_callback_t ordreRaspiCallback; |
Antoine_ | 0:e80f8fc78d33 | 22 | |
Antoine_ | 0:e80f8fc78d33 | 23 | Ascenseur *ascenseur; |
Antoine_ | 0:e80f8fc78d33 | 24 | |
Antoine_ | 0:e80f8fc78d33 | 25 | //init actionneurs |
Antoine_ | 0:e80f8fc78d33 | 26 | const char hydro[TAILLE_RX] = "TEShydro\n\r"; |
Antoine_ | 0:e80f8fc78d33 | 27 | const char serbg[TAILLE_RX] = "TESserbg\n\r"; |
Antoine_ | 0:e80f8fc78d33 | 28 | const char serbd[TAILLE_RX] = "TESserbd\n\r"; |
Antoine_ | 0:e80f8fc78d33 | 29 | const char ascdr[TAILLE_RX] = "TESascdr\n\r"; |
Antoine_ | 0:e80f8fc78d33 | 30 | const char ascga[TAILLE_RX] = "TESascga\n\r"; |
Antoine_ | 0:e80f8fc78d33 | 31 | //init objet match |
Antoine_ | 0:e80f8fc78d33 | 32 | const char initJaune[TAILLE_RX] = "MATJinit\n\r"; |
Antoine_ | 0:e80f8fc78d33 | 33 | const char initViolet[TAILLE_RX] = "MATVinit\n\r"; |
Antoine_ | 0:e80f8fc78d33 | 34 | |
Antoine_ | 0:e80f8fc78d33 | 35 | //ordres possibles |
Antoine_ | 0:e80f8fc78d33 | 36 | const char take4[TAILLE_RX] = "MATtake4\n\r"; |
Antoine_ | 0:e80f8fc78d33 | 37 | const char accelerateurHaute[TAILLE_RX] = "MAThaute\n\r"; |
Antoine_ | 0:e80f8fc78d33 | 38 | const char accelerateurBasse[TAILLE_RX] = "MATbasse\n\r"; |
Antoine_ | 0:e80f8fc78d33 | 39 | const char lacherQuatre[TAILLE_RX] = "MAT4gacc\n\r"; |
Antoine_ | 0:e80f8fc78d33 | 40 | const char lacherTroisGrand[TAILLE_RX] = "MAT3gacc\n\r"; |
Antoine_ | 0:e80f8fc78d33 | 41 | const char lacherBleuGrandPente[TAILLE_RX] = "MATbgpen\n\r"; |
Antoine_ | 0:e80f8fc78d33 | 42 | const char take3[TAILLE_RX] = "MATtake3\n\r"; |
Antoine_ | 0:e80f8fc78d33 | 43 | const char lacherBleuPetitPente[TAILLE_RX] = "MATbppen\n\r"; |
Antoine_ | 0:e80f8fc78d33 | 44 | const char take2[TAILLE_RX] = "MATtake2\n\r"; |
Antoine_ | 0:e80f8fc78d33 | 45 | const char take2GrandBalance[TAILLE_RX] = "MAT2gacc\n\r"; |
Antoine_ | 0:e80f8fc78d33 | 46 | const char finMatch[TAILLE_RX] = "MATfinir\n\r"; |
Antoine_ | 0:e80f8fc78d33 | 47 | |
Antoine_ | 0:e80f8fc78d33 | 48 | void recupererOrdre(int events); |
Antoine_ | 0:e80f8fc78d33 | 49 | |
Antoine_ | 0:e80f8fc78d33 | 50 | int main() { |
Antoine_ | 0:e80f8fc78d33 | 51 | |
Antoine_ | 0:e80f8fc78d33 | 52 | //creer des objets de base violet et jaune pour les tests |
Antoine_ | 0:e80f8fc78d33 | 53 | ascenseur = new Ascenseur(PIN_SERVO_ASCENSEUR_DROIT, PIN_SERVO_ASCENSEUR_GAUCHE, PIN_FIN_DE_COURSE_DROIT, PIN_FIN_DE_COURSE_GAUCHE, VIOLET); |
Antoine_ | 0:e80f8fc78d33 | 54 | ascenseur->init(); |
Antoine_ | 0:e80f8fc78d33 | 55 | ordreRaspiCallback.attach(recupererOrdre); |
Antoine_ | 0:e80f8fc78d33 | 56 | serial.read((uint8_t*)bufferOrdre, TAILLE_RX-1, ordreRaspiCallback, SERIAL_EVENT_RX_COMPLETE); |
Antoine_ | 0:e80f8fc78d33 | 57 | pc.printf("debut\n\r"); |
Antoine_ | 0:e80f8fc78d33 | 58 | while(init_match == true) |
Antoine_ | 0:e80f8fc78d33 | 59 | { |
Antoine_ | 0:e80f8fc78d33 | 60 | if(newOrdre == true) |
Antoine_ | 0:e80f8fc78d33 | 61 | { |
Antoine_ | 0:e80f8fc78d33 | 62 | newOrdre = false; |
Antoine_ | 0:e80f8fc78d33 | 63 | if(strcmp(bufferOrdre, hydro) == 0) |
Antoine_ | 0:e80f8fc78d33 | 64 | { |
Antoine_ | 0:e80f8fc78d33 | 65 | pc.printf("Activation de l'hydrolique init \n\r"); |
Antoine_ | 0:e80f8fc78d33 | 66 | ascenseur->test_pompe(); |
Antoine_ | 0:e80f8fc78d33 | 67 | } |
Antoine_ | 0:e80f8fc78d33 | 68 | else if(strcmp(bufferOrdre, serbg) == 0) |
Antoine_ | 0:e80f8fc78d33 | 69 | { |
Antoine_ | 0:e80f8fc78d33 | 70 | pc.printf("Servo bras gauche\n\r"); |
Antoine_ | 0:e80f8fc78d33 | 71 | ascenseur->test_servo_G(); |
Antoine_ | 0:e80f8fc78d33 | 72 | } |
Antoine_ | 0:e80f8fc78d33 | 73 | else if(strcmp(bufferOrdre, serbd) == 0) |
Antoine_ | 0:e80f8fc78d33 | 74 | { |
Antoine_ | 0:e80f8fc78d33 | 75 | pc.printf("Servo bras droit\n\r"); |
Antoine_ | 0:e80f8fc78d33 | 76 | ascenseur->test_servo_D(); |
Antoine_ | 0:e80f8fc78d33 | 77 | } |
Antoine_ | 0:e80f8fc78d33 | 78 | else if(strcmp(bufferOrdre, ascga) == 0) |
Antoine_ | 0:e80f8fc78d33 | 79 | { |
Antoine_ | 0:e80f8fc78d33 | 80 | pc.printf("Ascenseur gauche\n\r"); |
Antoine_ | 0:e80f8fc78d33 | 81 | ascenseur->test_ascenseur_G(); |
Antoine_ | 0:e80f8fc78d33 | 82 | } |
Antoine_ | 0:e80f8fc78d33 | 83 | else if(strcmp(bufferOrdre, ascdr) == 0) |
Antoine_ | 0:e80f8fc78d33 | 84 | { |
Antoine_ | 0:e80f8fc78d33 | 85 | pc.printf("Ascenseur droit\n\r"); |
Antoine_ | 0:e80f8fc78d33 | 86 | ascenseur->test_ascenseur_D(); |
Antoine_ | 0:e80f8fc78d33 | 87 | } |
Antoine_ | 0:e80f8fc78d33 | 88 | else |
Antoine_ | 0:e80f8fc78d33 | 89 | { |
Antoine_ | 0:e80f8fc78d33 | 90 | //pc.printf("%s", bufferOrdre); |
Antoine_ | 0:e80f8fc78d33 | 91 | } |
Antoine_ | 0:e80f8fc78d33 | 92 | } |
Antoine_ | 0:e80f8fc78d33 | 93 | if(mvtFini){ |
Antoine_ | 0:e80f8fc78d33 | 94 | mvtFini = false; |
Antoine_ | 0:e80f8fc78d33 | 95 | serial.printf("%s", bufferAcquitement); |
Antoine_ | 0:e80f8fc78d33 | 96 | } |
Antoine_ | 0:e80f8fc78d33 | 97 | } |
Antoine_ | 0:e80f8fc78d33 | 98 | while(1) |
Antoine_ | 0:e80f8fc78d33 | 99 | { |
Antoine_ | 0:e80f8fc78d33 | 100 | if(newOrdre == true) |
Antoine_ | 0:e80f8fc78d33 | 101 | { |
Antoine_ | 0:e80f8fc78d33 | 102 | newOrdre = false; |
Antoine_ | 0:e80f8fc78d33 | 103 | |
Antoine_ | 0:e80f8fc78d33 | 104 | if(strcmp(bufferOrdre, take4) == 0) |
Antoine_ | 0:e80f8fc78d33 | 105 | { |
Antoine_ | 0:e80f8fc78d33 | 106 | pc.printf("Prendre 4 palets \n\r"); |
Antoine_ | 0:e80f8fc78d33 | 107 | ascenseur->prendre_4_palets_dist(); |
Antoine_ | 0:e80f8fc78d33 | 108 | } |
Antoine_ | 0:e80f8fc78d33 | 109 | else if(strcmp(bufferOrdre, accelerateurHaute) == 0) |
Antoine_ | 0:e80f8fc78d33 | 110 | { |
Antoine_ | 0:e80f8fc78d33 | 111 | pc.printf("Positionner l'accelerateur en haut \n\r"); |
Antoine_ | 0:e80f8fc78d33 | 112 | ascenseur->go_accelerateur(); |
Antoine_ | 0:e80f8fc78d33 | 113 | } |
Antoine_ | 0:e80f8fc78d33 | 114 | //Match jaune stratégie |
Antoine_ | 0:e80f8fc78d33 | 115 | else if(strcmp(bufferOrdre, accelerateurBasse) == 0) |
Antoine_ | 0:e80f8fc78d33 | 116 | { |
Antoine_ | 0:e80f8fc78d33 | 117 | pc.printf("Positionner l'accelerateur en bas \n\r"); |
Antoine_ | 0:e80f8fc78d33 | 118 | ascenseur->go_distributeur(); |
Antoine_ | 0:e80f8fc78d33 | 119 | } |
Antoine_ | 0:e80f8fc78d33 | 120 | else if(strcmp(bufferOrdre, lacherQuatre) == 0) |
Antoine_ | 0:e80f8fc78d33 | 121 | { |
Antoine_ | 0:e80f8fc78d33 | 122 | pc.printf("Lacher les 4 palets du grand distributeur \n\r"); |
Antoine_ | 0:e80f8fc78d33 | 123 | ascenseur->lacher_4_palets_acc(); |
Antoine_ | 0:e80f8fc78d33 | 124 | } |
Antoine_ | 0:e80f8fc78d33 | 125 | else if(strcmp(bufferOrdre, lacherTroisGrand) == 0) |
Antoine_ | 0:e80f8fc78d33 | 126 | { |
Antoine_ | 0:e80f8fc78d33 | 127 | pc.printf("Lacher trois palets du grand distributeur \n\r"); |
Antoine_ | 0:e80f8fc78d33 | 128 | ascenseur->lacher_3_palets_acc(); //plus utilisé |
Antoine_ | 0:e80f8fc78d33 | 129 | } |
Antoine_ | 0:e80f8fc78d33 | 130 | else if(strcmp(bufferOrdre, lacherBleuGrandPente) == 0) |
Antoine_ | 0:e80f8fc78d33 | 131 | { |
Antoine_ | 0:e80f8fc78d33 | 132 | pc.printf("Poser le bleu du grand distributeur dans la pente \n\r"); |
Antoine_ | 0:e80f8fc78d33 | 133 | ascenseur->lacher_bleu_gr_dist(); //plus utilisé |
Antoine_ | 0:e80f8fc78d33 | 134 | } |
Antoine_ | 0:e80f8fc78d33 | 135 | //Match violet stratégie |
Antoine_ | 0:e80f8fc78d33 | 136 | else if(strcmp(bufferOrdre, take3) == 0) |
Antoine_ | 0:e80f8fc78d33 | 137 | { |
Antoine_ | 0:e80f8fc78d33 | 138 | pc.printf("Prendre trois palets sur le petit distributeur \n\r"); |
Antoine_ | 0:e80f8fc78d33 | 139 | ascenseur->prendre_3_petit_dist(); |
Antoine_ | 0:e80f8fc78d33 | 140 | } |
Antoine_ | 0:e80f8fc78d33 | 141 | else if(strcmp(bufferOrdre, lacherBleuPetitPente) == 0) |
Antoine_ | 0:e80f8fc78d33 | 142 | { |
Antoine_ | 0:e80f8fc78d33 | 143 | pc.printf("Poser le bleu du petit dristributeur dans la pente \n\r"); |
Antoine_ | 0:e80f8fc78d33 | 144 | ascenseur->lacher_bleu_petit_dist(); |
Antoine_ | 0:e80f8fc78d33 | 145 | } |
Antoine_ | 0:e80f8fc78d33 | 146 | else if(strcmp(bufferOrdre, take2) == 0) |
Antoine_ | 0:e80f8fc78d33 | 147 | { |
Antoine_ | 0:e80f8fc78d33 | 148 | pc.printf("Prendre les deux derniers du grand distributeur\n\r"); |
Antoine_ | 0:e80f8fc78d33 | 149 | ascenseur->prendre_2_palets_gr_dist(); |
Antoine_ | 0:e80f8fc78d33 | 150 | } |
Antoine_ | 0:e80f8fc78d33 | 151 | else if(strcmp(bufferOrdre, take2GrandBalance) == 0) |
Antoine_ | 0:e80f8fc78d33 | 152 | { |
Antoine_ | 0:e80f8fc78d33 | 153 | pc.printf("Prendre les deux palets les plus proche de la balance du grand distributeur\n\r"); |
Antoine_ | 0:e80f8fc78d33 | 154 | ascenseur->prendre_2_palets_gr_dist_balance(); |
Antoine_ | 0:e80f8fc78d33 | 155 | } |
Antoine_ | 0:e80f8fc78d33 | 156 | else if(strcmp(bufferOrdre, finMatch) == 0) |
Antoine_ | 0:e80f8fc78d33 | 157 | { |
Antoine_ | 0:e80f8fc78d33 | 158 | pc.printf("Fin de match il faut stop ascenseur et la pompe \n\r"); |
Antoine_ | 0:e80f8fc78d33 | 159 | ascenseur->fin_match(); |
Antoine_ | 0:e80f8fc78d33 | 160 | } |
Antoine_ | 0:e80f8fc78d33 | 161 | |
Antoine_ | 0:e80f8fc78d33 | 162 | else |
Antoine_ | 0:e80f8fc78d33 | 163 | { |
Antoine_ | 0:e80f8fc78d33 | 164 | pc.printf("%s\n\r",bufferOrdre); |
Antoine_ | 0:e80f8fc78d33 | 165 | } |
Antoine_ | 0:e80f8fc78d33 | 166 | } |
Antoine_ | 0:e80f8fc78d33 | 167 | |
Antoine_ | 0:e80f8fc78d33 | 168 | if(mvtFini){ |
Antoine_ | 0:e80f8fc78d33 | 169 | mvtFini = false; |
Antoine_ | 0:e80f8fc78d33 | 170 | serial.printf("%s", bufferAcquitement); |
Antoine_ | 0:e80f8fc78d33 | 171 | } |
Antoine_ | 0:e80f8fc78d33 | 172 | } |
Antoine_ | 0:e80f8fc78d33 | 173 | } |
Antoine_ | 0:e80f8fc78d33 | 174 | |
Antoine_ | 0:e80f8fc78d33 | 175 | |
Antoine_ | 0:e80f8fc78d33 | 176 | void recupererOrdre(int events) |
Antoine_ | 0:e80f8fc78d33 | 177 | { |
Antoine_ | 0:e80f8fc78d33 | 178 | pc.printf("Buffer de reception : %s \n\r", bufferOrdre); |
Antoine_ | 0:e80f8fc78d33 | 179 | newOrdre = true; |
Antoine_ | 0:e80f8fc78d33 | 180 | if(strcmp(bufferOrdre, initJaune) == 0) |
Antoine_ | 0:e80f8fc78d33 | 181 | { |
Antoine_ | 0:e80f8fc78d33 | 182 | couleur = JAUNE ; |
Antoine_ | 0:e80f8fc78d33 | 183 | init_match = false; |
Antoine_ | 0:e80f8fc78d33 | 184 | delete ascenseur; |
Antoine_ | 0:e80f8fc78d33 | 185 | ascenseur = ascenseur = new Ascenseur(PIN_SERVO_ASCENSEUR_DROIT, PIN_SERVO_ASCENSEUR_GAUCHE, PIN_FIN_DE_COURSE_DROIT, PIN_FIN_DE_COURSE_GAUCHE, JAUNE); |
Antoine_ | 0:e80f8fc78d33 | 186 | //serial.printf("%s", bufferAcquitement); |
Antoine_ | 0:e80f8fc78d33 | 187 | } |
Antoine_ | 0:e80f8fc78d33 | 188 | else if(strcmp(bufferOrdre, initViolet) == 0) |
Antoine_ | 0:e80f8fc78d33 | 189 | { |
Antoine_ | 0:e80f8fc78d33 | 190 | couleur = VIOLET; |
Antoine_ | 0:e80f8fc78d33 | 191 | init_match = false ; |
Antoine_ | 0:e80f8fc78d33 | 192 | //serial.printf("%s", bufferAcquitement); |
Antoine_ | 0:e80f8fc78d33 | 193 | } |
Antoine_ | 0:e80f8fc78d33 | 194 | serial.read((uint8_t*)bufferOrdre, TAILLE_RX-1, ordreRaspiCallback, SERIAL_EVENT_RX_COMPLETE); |
Antoine_ | 0:e80f8fc78d33 | 195 | } |