diff --git a/Programme_arduino_maitre b/Programme_arduino_maitre index f61e4bf..51b0787 100644 --- a/Programme_arduino_maitre +++ b/Programme_arduino_maitre @@ -1,48 +1,84 @@ - #include -SoftwareSerial soft1(10,11); -SoftwareSerial soft2(8,9); +//Déclaration des deux liaisons série. +//Soft1 correspond au lien avec la première brique +//Soft2 correspond au lien avec le module bluetooth +SoftwareSerial soft1(10,11); //Rx,Tx +SoftwareSerial soft2(8,9); //Rx,Tx +//Pins pour le handshake de la liaison soft1 const int in1 = A0; const int out1 = A1; +//Vérfie que le premier message à bien été envoyé int envoi = 0; + +//Message à envoyer au robot via bluetooth String msg=""; + +//Permet de faire en sorte que le programme ne soit executé qu'une seule fois int fin1=0; void setup() { + + //Liaison série avec l'ordinateur pour débuggage Serial.begin(9600); + //Liaison avec la brique, fonctionnent toutes à 9600 baud soft1.begin(9600); + //Liaison avec le bluetooth, le hc-05 fonctionne à 38400 baud soft2.begin(38400); + + //Mettre les pins du handshake en input/output pinMode(in1,INPUT); pinMode(out1,OUTPUT); + + //Mettre par défaut le handshake en low, pour pas de demande de communication digitalWrite(out1,LOW); } void loop() { + //Chaque message reçu est stocké temporaire dans cette chaine String msg_tmp=""; - String prim = "+\n"; + + //Premier message envoyé à la première brique + String prim = "\n"; + + //Variable où est stocké chaque octet reçu char inByte = 'a'; + + //Pour les délais int tps,tps2; int timeout=0,timeout2=0; - int validation = 0; + + //Permet de déterminer quand arrêter d'écouter et envoyer le message en comptant le nombre de if + int nb_if = 0; + + //En cas de premier envoi if(fin1==0){ + + //Tant que la brique n'a pas accepté la communication, on tente d'envoyer un premier message while(envoi==0){ + + //Début du protocole d'envoi via une liaison série digitalWrite(out1,HIGH); if(digitalRead(in1)==HIGH){ soft1.print(prim); soft1.flush(); envoi = 1; - Serial.println("rogt"); } + //Fin du protocole d'envoi + } digitalWrite(out1,LOW); tps =millis(); - while(timeout <10000){ + + //Tant que le message n'a pas été reçu en entier, on écoute + while(nb_if>=0){ + + //Début du protocole d'écoute via la liaison série timeout = millis() - tps; if(digitalRead(in1)==HIGH){ digitalWrite(out1,HIGH); @@ -56,8 +92,13 @@ void loop() delay(10); if(inByte != '\n'){ msg_tmp += inByte; - if(inByte == 0x7A){ + if((inByte & 0x70) == 0x70){ msg += msg_tmp; + nb_if --; + Serial.println("fin"); + } + if((inByte & 0x60) == 0x60){ + nb_if ++; } } } @@ -65,9 +106,13 @@ void loop() } } } + //On a fini de recevoir une chaine, on reset alors msg_tmp, puis on attend la chaine suivante msg_tmp=""; digitalWrite(out1, LOW); } + //Fin de l'écoute + + //Le message a été reçu, et est envoyé via bluetooth msg += "\n\n\r"; Serial.println("blorp"); Serial.print(msg); -- libgit2 0.21.2