x

Dependencies:   Encodeur Laser Moteur NetworkSocketAPI Robot X_NUCLEO_IDW01M1v2 mbed

Fork of Motor_HelloWorld by Simon Ford

Committer:
PeaceBearer
Date:
Sat May 05 15:29:03 2018 +0000
Revision:
1:92554b556233
Parent:
0:7bbc230e00d6
code;

Who changed what in which revision?

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