Florian Fillol / Mbed 2 deprecated FILLOL_STOLTZ_MAILLET

Dependencies:   Encodeur Laser Moteur NetworkSocketAPI Robot X_NUCLEO_IDW01M1v2 mbed

Fork of Motor_HelloWorld by Simon Ford

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "iostream"
00003 #include "Moteur.h"
00004 #include "Encodeur.h"
00005 #include "Robot.h"
00006 #include "VL53L0X.h"
00007 #include "SpwfInterface.h"
00008 #include "TCPSocket.h"
00009 
00010 using namespace std;
00011 
00012 Moteur moteurGauche(D3, D12, D4); // pwm, avancer, reculer
00013 Moteur moteurDroit(D11, D13, D5); 
00014 
00015 Encodeur encodeurGauche(A2);
00016 Encodeur encodeurDroit(A4);
00017 
00018 PwmOut servoMoteur(PC_9);
00019 Serial pc(USBTX, USBRX);
00020 
00021 Serial bluetooth(A0, A1); 
00022  
00023 DigitalOut shutdown1_pin(PC_6); /*range1_XSHUT*/
00024 DevI2C devI2c(D14, D15); 
00025 VL53L0X laser(&devI2c, &shutdown1_pin, NC);
00026 
00027 SpwfSAInterface spwf(D8, D2, false);
00028 
00029 TCPSocket socket(&spwf);
00030 
00031 void envoie(char buffer[100]);
00032 
00033 int main() {
00034     
00035     int* tabPortee;
00036     tabPortee = new int[3];
00037 
00038     tabPortee[0] = 0;
00039     tabPortee[1] = 0;
00040     tabPortee[2] = 0;
00041 
00042     Robot robot(moteurGauche, moteurDroit, &encodeurGauche, &encodeurDroit, servoMoteur, laser, tabPortee);
00043     
00044     int err;    
00045     //char * ssid = "Zte-Mobile";
00046     //char * seckey = "Meximieux01800";  
00047     char * ssid = "Python";
00048     char * seckey = "pythonserveur";  
00049        
00050     pc.printf("\r\n\n\nPHASE D'INITIALISATION DU ROBOT\n");
00051     pc.printf("\rConnection a AP...\n");
00052             
00053     if(spwf.connect(ssid, seckey, NSAPI_SECURITY_WPA2)) {      
00054         pc.printf("\rConnecte\n\n");
00055     } else {
00056         pc.printf("\rErreur de Connection\n\n");
00057         return -1;
00058     }   
00059 
00060     const char *ip = spwf.get_ip_address();
00061     const char *mac = spwf.get_mac_address();
00062     
00063     pc.printf("\rIP Addresse : %s\n", (ip) ? ip : "Pas d' IP");
00064     pc.printf("\rMAC Addresse: %s\n", (mac) ? mac : "Pas de MAC");    
00065     
00066     SocketAddress addr(&spwf, "st.com");   
00067     pc.printf("\rst.com: %s\n", addr.get_ip_address());    
00068 
00069     pc.printf("\rConnecte au serveur\n");
00070     
00071     //err = socket.connect("192.168.43.68", 8080);
00072     err = socket.connect("192.168.1.101", 8080);
00073     //err = socket.connect("192.168.1.150", 8080);
00074     if(err!=0) {
00075       pc.printf("\rImpossible de se connecter au socket, erreur = %d!!\r\n", err); 
00076       return -1;
00077     } else pc.printf("\rConnecte au serveur hote\r\n\n"); 
00078     
00079     int boucle(1);
00080     int fin(0);
00081     char commande;
00082     double distanced;
00083     double distanceg;
00084     int distg;
00085     int distd;
00086     int count = 0;
00087     
00088     pc.baud(9600);
00089     bluetooth.baud(9600);
00090     laser.init_sensor(0x56);
00091     
00092     robot.encodeurs_zero();
00093     
00094     while(fin == 0) {
00095     
00096        cout << "\rEN ATTENTE D'UNE COMMANDE..." << endl;
00097        while (boucle) { 
00098             if(bluetooth.readable()) {
00099                 commande = bluetooth.getc();
00100                 boucle = 0;
00101             }
00102         }
00103                 
00104         boucle = 1;
00105         char buffer[100];
00106         
00107         switch(commande) { 
00108             case '1': 
00109                 robot.roues_rouler(GO);
00110                 cout << "\rGO" << endl;
00111                 robot.encodeurs_afficher();
00112                 break;
00113                 
00114             case '2': 
00115                 robot.roues_rouler(BACK); 
00116                 cout << "\rBACK" << endl;
00117                 robot.encodeurs_afficher();
00118                 break;
00119                 
00120             case '3': 
00121                 robot.roues_rouler(GO_GAUCHE); 
00122                 cout << "\rGO_GAUCHE" << endl;
00123                 robot.encodeurs_afficher();
00124                 break;
00125                 
00126             case '4': 
00127                 robot.roues_rouler(GO_DROITE); 
00128                 cout << "\rGO_DROITE" << endl;
00129                 robot.encodeurs_afficher();
00130                 break;
00131                 
00132             case '5': 
00133                 robot.roues_rouler(GAUCHE); 
00134                 cout << "\rGAUCHE" << endl;
00135                 robot.encodeurs_afficher();
00136                 break;
00137                 
00138             case '6': 
00139                 robot.roues_rouler(DROITE); 
00140                 cout << "\rDROITE" << endl;
00141                 robot.encodeurs_afficher();
00142                 break;
00143                 
00144             case '7': 
00145                 robot.roues_rouler(FULLBACK); 
00146                 cout << "\rFULLBACK" << endl;
00147                 robot.encodeurs_afficher();
00148                 break;
00149                 
00150             case '8': 
00151                 cout << "\rBALAYER" << endl;
00152                 robot.roues_rouler(BALAYER);
00153                 
00154                 distanced = robot.distanceDroit();
00155                 distanceg = robot.distanceGauche();
00156                 distd = static_cast<int>(distanced);
00157                 distg = static_cast<int>(distanceg);
00158                         
00159                 sprintf(buffer, "%d", distg);
00160                 cout << "\r\nEnvoie de la distance parcourue par la roue gauche" << endl;
00161                 envoie(buffer);
00162                         
00163                 sprintf(buffer, "%d", distd);
00164                 cout << "\rEnvoie de la distance parcourue par la roue droite" << endl;
00165                 envoie(buffer);
00166                 
00167                 robot.encodeurs_zero();
00168                 
00169                 cout << "\rDISTANCE 1 =" << robot.getTabPortee(0) << endl;
00170                 cout << "\rDISTANCE 2 = " << robot.getTabPortee(1) << endl;
00171                 cout << "\rDISTANCE 3 = " << robot.getTabPortee(2) << endl;
00172                 
00173                 sprintf(buffer, "%d", robot.getTabPortee(0));
00174                 cout << "\r\nEnvoie de la distance 1" << endl;
00175                 envoie(buffer);
00176                 
00177                 sprintf(buffer, "%d", robot.getTabPortee(1));
00178                 cout << "\rEnvoie de la distance 2" << endl;
00179                 envoie(buffer);
00180                 
00181                 sprintf(buffer, "%d", robot.getTabPortee(2));
00182                 cout << "\rEnvoie de la distance 3" << endl;
00183                 envoie(buffer);
00184                  break;
00185                  
00186             case '9': 
00187                 fin = 1; 
00188                 
00189                 pc.printf("\rFermeture du Socket\n");
00190                 socket.close();
00191                 pc.printf ("\rSocket ferme\n");
00192                 sprintf(buffer, "%d", 0);
00193                 pc.printf("\rDonnee envoyee\n"); 
00194                 count = socket.send(buffer, sizeof buffer);
00195                 spwf.disconnect();
00196                 printf ("\rWIFI deconnecte...\n\n\n");
00197                 
00198                 break;
00199         }
00200         robot.roues_stop();
00201     }
00202 }
00203 
00204 void envoie(char buffer[100]) {
00205         int count = 0;
00206         count = socket.send(buffer, sizeof buffer);
00207                 
00208         if(count > 0) {
00209         pc.printf("\rDonnee envoyee: ");
00210         buffer [count]='\0';
00211         printf("%s\n\n", buffer);  
00212         }
00213         
00214         else pc.printf("\rImpossible d'envoyer la donnee\n\n");
00215 }
00216 
00217