x
Dependencies: Encodeur Laser Moteur NetworkSocketAPI Robot X_NUCLEO_IDW01M1v2 mbed
Fork of Motor_HelloWorld by
main.cpp@1:92554b556233, 2018-05-05 (annotated)
- Committer:
- PeaceBearer
- Date:
- Sat May 05 15:29:03 2018 +0000
- Revision:
- 1:92554b556233
- Parent:
- 0:7bbc230e00d6
code;
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| PeaceBearer | 1:92554b556233 | 1 | #include "mbed.h" |
| PeaceBearer | 1:92554b556233 | 2 | #include "iostream" |
| PeaceBearer | 1:92554b556233 | 3 | #include "Moteur.h" |
| PeaceBearer | 1:92554b556233 | 4 | #include "Encodeur.h" |
| PeaceBearer | 1:92554b556233 | 5 | #include "Robot.h" |
| PeaceBearer | 1:92554b556233 | 6 | #include "VL53L0X.h" |
| PeaceBearer | 1:92554b556233 | 7 | #include "SpwfInterface.h" |
| PeaceBearer | 1:92554b556233 | 8 | #include "TCPSocket.h" |
| PeaceBearer | 1:92554b556233 | 9 | |
| PeaceBearer | 1:92554b556233 | 10 | using namespace std; |
| PeaceBearer | 1:92554b556233 | 11 | |
| PeaceBearer | 1:92554b556233 | 12 | Moteur moteurGauche(D3, D12, D4); // pwm, avancer, reculer |
| PeaceBearer | 1:92554b556233 | 13 | Moteur moteurDroit(D11, D13, D5); |
| simon | 0:7bbc230e00d6 | 14 | |
| PeaceBearer | 1:92554b556233 | 15 | Encodeur encodeurGauche(A2); |
| PeaceBearer | 1:92554b556233 | 16 | Encodeur encodeurDroit(A4); |
| PeaceBearer | 1:92554b556233 | 17 | |
| PeaceBearer | 1:92554b556233 | 18 | PwmOut servoMoteur(PC_9); |
| PeaceBearer | 1:92554b556233 | 19 | Serial pc(USBTX, USBRX); |
| simon | 0:7bbc230e00d6 | 20 | |
| PeaceBearer | 1:92554b556233 | 21 | Serial bluetooth(A0, A1); |
| PeaceBearer | 1:92554b556233 | 22 | |
| PeaceBearer | 1:92554b556233 | 23 | DigitalOut shutdown1_pin(PC_6); /*range1_XSHUT*/ |
| PeaceBearer | 1:92554b556233 | 24 | DevI2C devI2c(D14, D15); |
| PeaceBearer | 1:92554b556233 | 25 | VL53L0X laser(&devI2c, &shutdown1_pin, NC); |
| PeaceBearer | 1:92554b556233 | 26 | |
| PeaceBearer | 1:92554b556233 | 27 | SpwfSAInterface spwf(D8, D2, false); |
| PeaceBearer | 1:92554b556233 | 28 | |
| PeaceBearer | 1:92554b556233 | 29 | TCPSocket socket(&spwf); |
| PeaceBearer | 1:92554b556233 | 30 | |
| PeaceBearer | 1:92554b556233 | 31 | void envoie(char buffer[100]); |
| simon | 0:7bbc230e00d6 | 32 | |
| simon | 0:7bbc230e00d6 | 33 | int main() { |
| PeaceBearer | 1:92554b556233 | 34 | |
| PeaceBearer | 1:92554b556233 | 35 | int* tabPortee; |
| PeaceBearer | 1:92554b556233 | 36 | tabPortee = new int[3]; |
| PeaceBearer | 1:92554b556233 | 37 | |
| PeaceBearer | 1:92554b556233 | 38 | tabPortee[0] = 0; |
| PeaceBearer | 1:92554b556233 | 39 | tabPortee[1] = 0; |
| PeaceBearer | 1:92554b556233 | 40 | tabPortee[2] = 0; |
| PeaceBearer | 1:92554b556233 | 41 | |
| PeaceBearer | 1:92554b556233 | 42 | Robot robot(moteurGauche, moteurDroit, &encodeurGauche, &encodeurDroit, servoMoteur, laser, tabPortee); |
| PeaceBearer | 1:92554b556233 | 43 | |
| PeaceBearer | 1:92554b556233 | 44 | int err; |
| PeaceBearer | 1:92554b556233 | 45 | //char * ssid = "Zte-Mobile"; |
| PeaceBearer | 1:92554b556233 | 46 | //char * seckey = "Meximieux01800"; |
| PeaceBearer | 1:92554b556233 | 47 | char * ssid = "Python"; |
| PeaceBearer | 1:92554b556233 | 48 | char * seckey = "pythonserveur"; |
| PeaceBearer | 1:92554b556233 | 49 | |
| PeaceBearer | 1:92554b556233 | 50 | pc.printf("\r\n\n\nPHASE D'INITIALISATION DU ROBOT\n"); |
| PeaceBearer | 1:92554b556233 | 51 | pc.printf("\rConnection a AP...\n"); |
| PeaceBearer | 1:92554b556233 | 52 | |
| PeaceBearer | 1:92554b556233 | 53 | if(spwf.connect(ssid, seckey, NSAPI_SECURITY_WPA2)) { |
| PeaceBearer | 1:92554b556233 | 54 | pc.printf("\rConnecte\n\n"); |
| PeaceBearer | 1:92554b556233 | 55 | } else { |
| PeaceBearer | 1:92554b556233 | 56 | pc.printf("\rErreur de Connection\n\n"); |
| PeaceBearer | 1:92554b556233 | 57 | return -1; |
| PeaceBearer | 1:92554b556233 | 58 | } |
| PeaceBearer | 1:92554b556233 | 59 | |
| PeaceBearer | 1:92554b556233 | 60 | const char *ip = spwf.get_ip_address(); |
| PeaceBearer | 1:92554b556233 | 61 | const char *mac = spwf.get_mac_address(); |
| PeaceBearer | 1:92554b556233 | 62 | |
| PeaceBearer | 1:92554b556233 | 63 | pc.printf("\rIP Addresse : %s\n", (ip) ? ip : "Pas d' IP"); |
| PeaceBearer | 1:92554b556233 | 64 | pc.printf("\rMAC Addresse: %s\n", (mac) ? mac : "Pas de MAC"); |
| PeaceBearer | 1:92554b556233 | 65 | |
| PeaceBearer | 1:92554b556233 | 66 | SocketAddress addr(&spwf, "st.com"); |
| PeaceBearer | 1:92554b556233 | 67 | pc.printf("\rst.com: %s\n", addr.get_ip_address()); |
| PeaceBearer | 1:92554b556233 | 68 | |
| PeaceBearer | 1:92554b556233 | 69 | pc.printf("\rConnecte au serveur\n"); |
| PeaceBearer | 1:92554b556233 | 70 | |
| PeaceBearer | 1:92554b556233 | 71 | //err = socket.connect("192.168.43.68", 8080); |
| PeaceBearer | 1:92554b556233 | 72 | err = socket.connect("192.168.1.101", 8080); |
| PeaceBearer | 1:92554b556233 | 73 | //err = socket.connect("192.168.1.150", 8080); |
| PeaceBearer | 1:92554b556233 | 74 | if(err!=0) { |
| PeaceBearer | 1:92554b556233 | 75 | pc.printf("\rImpossible de se connecter au socket, erreur = %d!!\r\n", err); |
| PeaceBearer | 1:92554b556233 | 76 | return -1; |
| PeaceBearer | 1:92554b556233 | 77 | } else pc.printf("\rConnecte au serveur hote\r\n\n"); |
| PeaceBearer | 1:92554b556233 | 78 | |
| PeaceBearer | 1:92554b556233 | 79 | int boucle(1); |
| PeaceBearer | 1:92554b556233 | 80 | int fin(0); |
| PeaceBearer | 1:92554b556233 | 81 | char commande; |
| PeaceBearer | 1:92554b556233 | 82 | double distanced; |
| PeaceBearer | 1:92554b556233 | 83 | double distanceg; |
| PeaceBearer | 1:92554b556233 | 84 | int distg; |
| PeaceBearer | 1:92554b556233 | 85 | int distd; |
| PeaceBearer | 1:92554b556233 | 86 | int count = 0; |
| PeaceBearer | 1:92554b556233 | 87 | |
| PeaceBearer | 1:92554b556233 | 88 | pc.baud(9600); |
| PeaceBearer | 1:92554b556233 | 89 | bluetooth.baud(9600); |
| PeaceBearer | 1:92554b556233 | 90 | laser.init_sensor(0x56); |
| PeaceBearer | 1:92554b556233 | 91 | |
| PeaceBearer | 1:92554b556233 | 92 | robot.encodeurs_zero(); |
| PeaceBearer | 1:92554b556233 | 93 | |
| PeaceBearer | 1:92554b556233 | 94 | while(fin == 0) { |
| PeaceBearer | 1:92554b556233 | 95 | |
| PeaceBearer | 1:92554b556233 | 96 | cout << "\rEN ATTENTE D'UNE COMMANDE..." << endl; |
| PeaceBearer | 1:92554b556233 | 97 | while (boucle) { |
| PeaceBearer | 1:92554b556233 | 98 | if(bluetooth.readable()) { |
| PeaceBearer | 1:92554b556233 | 99 | commande = bluetooth.getc(); |
| PeaceBearer | 1:92554b556233 | 100 | boucle = 0; |
| PeaceBearer | 1:92554b556233 | 101 | } |
| PeaceBearer | 1:92554b556233 | 102 | } |
| PeaceBearer | 1:92554b556233 | 103 | |
| PeaceBearer | 1:92554b556233 | 104 | boucle = 1; |
| PeaceBearer | 1:92554b556233 | 105 | char buffer[100]; |
| PeaceBearer | 1:92554b556233 | 106 | |
| PeaceBearer | 1:92554b556233 | 107 | switch(commande) { |
| PeaceBearer | 1:92554b556233 | 108 | case '1': |
| PeaceBearer | 1:92554b556233 | 109 | robot.roues_rouler(GO); |
| PeaceBearer | 1:92554b556233 | 110 | cout << "\rGO" << endl; |
| PeaceBearer | 1:92554b556233 | 111 | robot.encodeurs_afficher(); |
| PeaceBearer | 1:92554b556233 | 112 | break; |
| PeaceBearer | 1:92554b556233 | 113 | |
| PeaceBearer | 1:92554b556233 | 114 | case '2': |
| PeaceBearer | 1:92554b556233 | 115 | robot.roues_rouler(BACK); |
| PeaceBearer | 1:92554b556233 | 116 | cout << "\rBACK" << endl; |
| PeaceBearer | 1:92554b556233 | 117 | robot.encodeurs_afficher(); |
| PeaceBearer | 1:92554b556233 | 118 | break; |
| PeaceBearer | 1:92554b556233 | 119 | |
| PeaceBearer | 1:92554b556233 | 120 | case '3': |
| PeaceBearer | 1:92554b556233 | 121 | robot.roues_rouler(GO_GAUCHE); |
| PeaceBearer | 1:92554b556233 | 122 | cout << "\rGO_GAUCHE" << endl; |
| PeaceBearer | 1:92554b556233 | 123 | robot.encodeurs_afficher(); |
| PeaceBearer | 1:92554b556233 | 124 | break; |
| PeaceBearer | 1:92554b556233 | 125 | |
| PeaceBearer | 1:92554b556233 | 126 | case '4': |
| PeaceBearer | 1:92554b556233 | 127 | robot.roues_rouler(GO_DROITE); |
| PeaceBearer | 1:92554b556233 | 128 | cout << "\rGO_DROITE" << endl; |
| PeaceBearer | 1:92554b556233 | 129 | robot.encodeurs_afficher(); |
| PeaceBearer | 1:92554b556233 | 130 | break; |
| PeaceBearer | 1:92554b556233 | 131 | |
| PeaceBearer | 1:92554b556233 | 132 | case '5': |
| PeaceBearer | 1:92554b556233 | 133 | robot.roues_rouler(GAUCHE); |
| PeaceBearer | 1:92554b556233 | 134 | cout << "\rGAUCHE" << endl; |
| PeaceBearer | 1:92554b556233 | 135 | robot.encodeurs_afficher(); |
| PeaceBearer | 1:92554b556233 | 136 | break; |
| PeaceBearer | 1:92554b556233 | 137 | |
| PeaceBearer | 1:92554b556233 | 138 | case '6': |
| PeaceBearer | 1:92554b556233 | 139 | robot.roues_rouler(DROITE); |
| PeaceBearer | 1:92554b556233 | 140 | cout << "\rDROITE" << endl; |
| PeaceBearer | 1:92554b556233 | 141 | robot.encodeurs_afficher(); |
| PeaceBearer | 1:92554b556233 | 142 | break; |
| PeaceBearer | 1:92554b556233 | 143 | |
| PeaceBearer | 1:92554b556233 | 144 | case '7': |
| PeaceBearer | 1:92554b556233 | 145 | robot.roues_rouler(FULLBACK); |
| PeaceBearer | 1:92554b556233 | 146 | cout << "\rFULLBACK" << endl; |
| PeaceBearer | 1:92554b556233 | 147 | robot.encodeurs_afficher(); |
| PeaceBearer | 1:92554b556233 | 148 | break; |
| PeaceBearer | 1:92554b556233 | 149 | |
| PeaceBearer | 1:92554b556233 | 150 | case '8': |
| PeaceBearer | 1:92554b556233 | 151 | cout << "\rBALAYER" << endl; |
| PeaceBearer | 1:92554b556233 | 152 | robot.roues_rouler(BALAYER); |
| PeaceBearer | 1:92554b556233 | 153 | |
| PeaceBearer | 1:92554b556233 | 154 | distanced = robot.distanceDroit(); |
| PeaceBearer | 1:92554b556233 | 155 | distanceg = robot.distanceGauche(); |
| PeaceBearer | 1:92554b556233 | 156 | distd = static_cast<int>(distanced); |
| PeaceBearer | 1:92554b556233 | 157 | distg = static_cast<int>(distanceg); |
| PeaceBearer | 1:92554b556233 | 158 | |
| PeaceBearer | 1:92554b556233 | 159 | sprintf(buffer, "%d", distg); |
| PeaceBearer | 1:92554b556233 | 160 | cout << "\r\nEnvoie de la distance parcourue par la roue gauche" << endl; |
| PeaceBearer | 1:92554b556233 | 161 | envoie(buffer); |
| PeaceBearer | 1:92554b556233 | 162 | |
| PeaceBearer | 1:92554b556233 | 163 | sprintf(buffer, "%d", distd); |
| PeaceBearer | 1:92554b556233 | 164 | cout << "\rEnvoie de la distance parcourue par la roue droite" << endl; |
| PeaceBearer | 1:92554b556233 | 165 | envoie(buffer); |
| PeaceBearer | 1:92554b556233 | 166 | |
| PeaceBearer | 1:92554b556233 | 167 | robot.encodeurs_zero(); |
| PeaceBearer | 1:92554b556233 | 168 | |
| PeaceBearer | 1:92554b556233 | 169 | cout << "\rDISTANCE 1 =" << robot.getTabPortee(0) << endl; |
| PeaceBearer | 1:92554b556233 | 170 | cout << "\rDISTANCE 2 = " << robot.getTabPortee(1) << endl; |
| PeaceBearer | 1:92554b556233 | 171 | cout << "\rDISTANCE 3 = " << robot.getTabPortee(2) << endl; |
| PeaceBearer | 1:92554b556233 | 172 | |
| PeaceBearer | 1:92554b556233 | 173 | sprintf(buffer, "%d", robot.getTabPortee(0)); |
| PeaceBearer | 1:92554b556233 | 174 | cout << "\r\nEnvoie de la distance 1" << endl; |
| PeaceBearer | 1:92554b556233 | 175 | envoie(buffer); |
| PeaceBearer | 1:92554b556233 | 176 | |
| PeaceBearer | 1:92554b556233 | 177 | sprintf(buffer, "%d", robot.getTabPortee(1)); |
| PeaceBearer | 1:92554b556233 | 178 | cout << "\rEnvoie de la distance 2" << endl; |
| PeaceBearer | 1:92554b556233 | 179 | envoie(buffer); |
| PeaceBearer | 1:92554b556233 | 180 | |
| PeaceBearer | 1:92554b556233 | 181 | sprintf(buffer, "%d", robot.getTabPortee(2)); |
| PeaceBearer | 1:92554b556233 | 182 | cout << "\rEnvoie de la distance 3" << endl; |
| PeaceBearer | 1:92554b556233 | 183 | envoie(buffer); |
| PeaceBearer | 1:92554b556233 | 184 | break; |
| PeaceBearer | 1:92554b556233 | 185 | |
| PeaceBearer | 1:92554b556233 | 186 | case '9': |
| PeaceBearer | 1:92554b556233 | 187 | fin = 1; |
| PeaceBearer | 1:92554b556233 | 188 | |
| PeaceBearer | 1:92554b556233 | 189 | pc.printf("\rFermeture du Socket\n"); |
| PeaceBearer | 1:92554b556233 | 190 | socket.close(); |
| PeaceBearer | 1:92554b556233 | 191 | pc.printf ("\rSocket ferme\n"); |
| PeaceBearer | 1:92554b556233 | 192 | sprintf(buffer, "%d", 0); |
| PeaceBearer | 1:92554b556233 | 193 | pc.printf("\rDonnee envoyee\n"); |
| PeaceBearer | 1:92554b556233 | 194 | count = socket.send(buffer, sizeof buffer); |
| PeaceBearer | 1:92554b556233 | 195 | spwf.disconnect(); |
| PeaceBearer | 1:92554b556233 | 196 | printf ("\rWIFI deconnecte...\n\n\n"); |
| PeaceBearer | 1:92554b556233 | 197 | |
| PeaceBearer | 1:92554b556233 | 198 | break; |
| PeaceBearer | 1:92554b556233 | 199 | } |
| PeaceBearer | 1:92554b556233 | 200 | robot.roues_stop(); |
| simon | 0:7bbc230e00d6 | 201 | } |
| simon | 0:7bbc230e00d6 | 202 | } |
| PeaceBearer | 1:92554b556233 | 203 | |
| PeaceBearer | 1:92554b556233 | 204 | void envoie(char buffer[100]) { |
| PeaceBearer | 1:92554b556233 | 205 | int count = 0; |
| PeaceBearer | 1:92554b556233 | 206 | count = socket.send(buffer, sizeof buffer); |
| PeaceBearer | 1:92554b556233 | 207 | |
| PeaceBearer | 1:92554b556233 | 208 | if(count > 0) { |
| PeaceBearer | 1:92554b556233 | 209 | pc.printf("\rDonnee envoyee: "); |
| PeaceBearer | 1:92554b556233 | 210 | buffer [count]='\0'; |
| PeaceBearer | 1:92554b556233 | 211 | printf("%s\n\n", buffer); |
| PeaceBearer | 1:92554b556233 | 212 | } |
| PeaceBearer | 1:92554b556233 | 213 | |
| PeaceBearer | 1:92554b556233 | 214 | else pc.printf("\rImpossible d'envoyer la donnee\n\n"); |
| PeaceBearer | 1:92554b556233 | 215 | } |
| PeaceBearer | 1:92554b556233 | 216 | |
| PeaceBearer | 1:92554b556233 | 217 |
