x
Dependencies: Encodeur Laser Moteur NetworkSocketAPI Robot X_NUCLEO_IDW01M1v2 mbed
Fork of Motor_HelloWorld by
main.cpp
- Committer:
- PeaceBearer
- Date:
- 2018-05-05
- Revision:
- 1:92554b556233
- Parent:
- 0:7bbc230e00d6
File content as of revision 1:92554b556233:
#include "mbed.h" #include "iostream" #include "Moteur.h" #include "Encodeur.h" #include "Robot.h" #include "VL53L0X.h" #include "SpwfInterface.h" #include "TCPSocket.h" using namespace std; Moteur moteurGauche(D3, D12, D4); // pwm, avancer, reculer Moteur moteurDroit(D11, D13, D5); Encodeur encodeurGauche(A2); Encodeur encodeurDroit(A4); PwmOut servoMoteur(PC_9); Serial pc(USBTX, USBRX); Serial bluetooth(A0, A1); DigitalOut shutdown1_pin(PC_6); /*range1_XSHUT*/ DevI2C devI2c(D14, D15); VL53L0X laser(&devI2c, &shutdown1_pin, NC); SpwfSAInterface spwf(D8, D2, false); TCPSocket socket(&spwf); void envoie(char buffer[100]); int main() { int* tabPortee; tabPortee = new int[3]; tabPortee[0] = 0; tabPortee[1] = 0; tabPortee[2] = 0; Robot robot(moteurGauche, moteurDroit, &encodeurGauche, &encodeurDroit, servoMoteur, laser, tabPortee); int err; //char * ssid = "Zte-Mobile"; //char * seckey = "Meximieux01800"; char * ssid = "Python"; char * seckey = "pythonserveur"; pc.printf("\r\n\n\nPHASE D'INITIALISATION DU ROBOT\n"); pc.printf("\rConnection a AP...\n"); if(spwf.connect(ssid, seckey, NSAPI_SECURITY_WPA2)) { pc.printf("\rConnecte\n\n"); } else { pc.printf("\rErreur de Connection\n\n"); return -1; } const char *ip = spwf.get_ip_address(); const char *mac = spwf.get_mac_address(); pc.printf("\rIP Addresse : %s\n", (ip) ? ip : "Pas d' IP"); pc.printf("\rMAC Addresse: %s\n", (mac) ? mac : "Pas de MAC"); SocketAddress addr(&spwf, "st.com"); pc.printf("\rst.com: %s\n", addr.get_ip_address()); pc.printf("\rConnecte au serveur\n"); //err = socket.connect("192.168.43.68", 8080); err = socket.connect("192.168.1.101", 8080); //err = socket.connect("192.168.1.150", 8080); if(err!=0) { pc.printf("\rImpossible de se connecter au socket, erreur = %d!!\r\n", err); return -1; } else pc.printf("\rConnecte au serveur hote\r\n\n"); int boucle(1); int fin(0); char commande; double distanced; double distanceg; int distg; int distd; int count = 0; pc.baud(9600); bluetooth.baud(9600); laser.init_sensor(0x56); robot.encodeurs_zero(); while(fin == 0) { cout << "\rEN ATTENTE D'UNE COMMANDE..." << endl; while (boucle) { if(bluetooth.readable()) { commande = bluetooth.getc(); boucle = 0; } } boucle = 1; char buffer[100]; switch(commande) { case '1': robot.roues_rouler(GO); cout << "\rGO" << endl; robot.encodeurs_afficher(); break; case '2': robot.roues_rouler(BACK); cout << "\rBACK" << endl; robot.encodeurs_afficher(); break; case '3': robot.roues_rouler(GO_GAUCHE); cout << "\rGO_GAUCHE" << endl; robot.encodeurs_afficher(); break; case '4': robot.roues_rouler(GO_DROITE); cout << "\rGO_DROITE" << endl; robot.encodeurs_afficher(); break; case '5': robot.roues_rouler(GAUCHE); cout << "\rGAUCHE" << endl; robot.encodeurs_afficher(); break; case '6': robot.roues_rouler(DROITE); cout << "\rDROITE" << endl; robot.encodeurs_afficher(); break; case '7': robot.roues_rouler(FULLBACK); cout << "\rFULLBACK" << endl; robot.encodeurs_afficher(); break; case '8': cout << "\rBALAYER" << endl; robot.roues_rouler(BALAYER); distanced = robot.distanceDroit(); distanceg = robot.distanceGauche(); distd = static_cast<int>(distanced); distg = static_cast<int>(distanceg); sprintf(buffer, "%d", distg); cout << "\r\nEnvoie de la distance parcourue par la roue gauche" << endl; envoie(buffer); sprintf(buffer, "%d", distd); cout << "\rEnvoie de la distance parcourue par la roue droite" << endl; envoie(buffer); robot.encodeurs_zero(); cout << "\rDISTANCE 1 =" << robot.getTabPortee(0) << endl; cout << "\rDISTANCE 2 = " << robot.getTabPortee(1) << endl; cout << "\rDISTANCE 3 = " << robot.getTabPortee(2) << endl; sprintf(buffer, "%d", robot.getTabPortee(0)); cout << "\r\nEnvoie de la distance 1" << endl; envoie(buffer); sprintf(buffer, "%d", robot.getTabPortee(1)); cout << "\rEnvoie de la distance 2" << endl; envoie(buffer); sprintf(buffer, "%d", robot.getTabPortee(2)); cout << "\rEnvoie de la distance 3" << endl; envoie(buffer); break; case '9': fin = 1; pc.printf("\rFermeture du Socket\n"); socket.close(); pc.printf ("\rSocket ferme\n"); sprintf(buffer, "%d", 0); pc.printf("\rDonnee envoyee\n"); count = socket.send(buffer, sizeof buffer); spwf.disconnect(); printf ("\rWIFI deconnecte...\n\n\n"); break; } robot.roues_stop(); } } void envoie(char buffer[100]) { int count = 0; count = socket.send(buffer, sizeof buffer); if(count > 0) { pc.printf("\rDonnee envoyee: "); buffer [count]='\0'; printf("%s\n\n", buffer); } else pc.printf("\rImpossible d'envoyer la donnee\n\n"); }