AREM - CDFR 2019 / Mbed 2 deprecated Actionneur_v30_05

Dependencies:   mbed Servo ascenseur_Lib

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?

UserRevisionLine numberNew 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 }