Commit 79b06698b8607f496d3b30bb5bb6b87ca5809cd7

Authored by sblas
1 parent c78b2b72

Mise à jour des commentaires du programme maitre

Showing 1 changed file with 53 additions and 8 deletions   Show diff stats
Programme_arduino_maitre
1 -  
2 #include <SoftwareSerial.h> 1 #include <SoftwareSerial.h>
3 2
4 -SoftwareSerial soft1(10,11);  
5 -SoftwareSerial soft2(8,9); 3 +//Déclaration des deux liaisons série.
  4 +//Soft1 correspond au lien avec la première brique
  5 +//Soft2 correspond au lien avec le module bluetooth
  6 +SoftwareSerial soft1(10,11); //Rx,Tx
  7 +SoftwareSerial soft2(8,9); //Rx,Tx
6 8
  9 +//Pins pour le handshake de la liaison soft1
7 const int in1 = A0; 10 const int in1 = A0;
8 const int out1 = A1; 11 const int out1 = A1;
9 12
  13 +//Vérfie que le premier message à bien été envoyé
10 int envoi = 0; 14 int envoi = 0;
  15 +
  16 +//Message à envoyer au robot via bluetooth
11 String msg=""; 17 String msg="";
  18 +
  19 +//Permet de faire en sorte que le programme ne soit executé qu'une seule fois
12 int fin1=0; 20 int fin1=0;
13 21
14 void setup() 22 void setup()
15 { 23 {
  24 +
  25 + //Liaison série avec l'ordinateur pour débuggage
16 Serial.begin(9600); 26 Serial.begin(9600);
  27 + //Liaison avec la brique, fonctionnent toutes à 9600 baud
17 soft1.begin(9600); 28 soft1.begin(9600);
  29 + //Liaison avec le bluetooth, le hc-05 fonctionne à 38400 baud
18 soft2.begin(38400); 30 soft2.begin(38400);
  31 +
  32 + //Mettre les pins du handshake en input/output
19 pinMode(in1,INPUT); 33 pinMode(in1,INPUT);
20 pinMode(out1,OUTPUT); 34 pinMode(out1,OUTPUT);
  35 +
  36 + //Mettre par défaut le handshake en low, pour pas de demande de communication
21 digitalWrite(out1,LOW); 37 digitalWrite(out1,LOW);
22 } 38 }
23 39
24 void loop() 40 void loop()
25 { 41 {
  42 + //Chaque message reçu est stocké temporaire dans cette chaine
26 String msg_tmp=""; 43 String msg_tmp="";
27 - String prim = "+\n"; 44 +
  45 + //Premier message envoyé à la première brique
  46 + String prim = "\n";
  47 +
  48 + //Variable où est stocké chaque octet reçu
28 char inByte = 'a'; 49 char inByte = 'a';
  50 +
  51 + //Pour les délais
29 int tps,tps2; 52 int tps,tps2;
30 int timeout=0,timeout2=0; 53 int timeout=0,timeout2=0;
31 - int validation = 0; 54 +
  55 + //Permet de déterminer quand arrêter d'écouter et envoyer le message en comptant le nombre de if
  56 + int nb_if = 0;
  57 +
  58 + //En cas de premier envoi
32 if(fin1==0){ 59 if(fin1==0){
  60 +
  61 + //Tant que la brique n'a pas accepté la communication, on tente d'envoyer un premier message
33 while(envoi==0){ 62 while(envoi==0){
  63 +
  64 + //Début du protocole d'envoi via une liaison série
34 digitalWrite(out1,HIGH); 65 digitalWrite(out1,HIGH);
35 if(digitalRead(in1)==HIGH){ 66 if(digitalRead(in1)==HIGH){
36 soft1.print(prim); 67 soft1.print(prim);
37 soft1.flush(); 68 soft1.flush();
38 envoi = 1; 69 envoi = 1;
39 - Serial.println("rogt");  
40 } 70 }
  71 + //Fin du protocole d'envoi
  72 +
41 } 73 }
42 74
43 digitalWrite(out1,LOW); 75 digitalWrite(out1,LOW);
44 tps =millis(); 76 tps =millis();
45 - while(timeout <10000){ 77 +
  78 + //Tant que le message n'a pas été reçu en entier, on écoute
  79 + while(nb_if>=0){
  80 +
  81 + //Début du protocole d'écoute via la liaison série
46 timeout = millis() - tps; 82 timeout = millis() - tps;
47 if(digitalRead(in1)==HIGH){ 83 if(digitalRead(in1)==HIGH){
48 digitalWrite(out1,HIGH); 84 digitalWrite(out1,HIGH);
@@ -56,8 +92,13 @@ void loop() @@ -56,8 +92,13 @@ void loop()
56 delay(10); 92 delay(10);
57 if(inByte != '\n'){ 93 if(inByte != '\n'){
58 msg_tmp += inByte; 94 msg_tmp += inByte;
59 - if(inByte == 0x7A){ 95 + if((inByte & 0x70) == 0x70){
60 msg += msg_tmp; 96 msg += msg_tmp;
  97 + nb_if --;
  98 + Serial.println("fin");
  99 + }
  100 + if((inByte & 0x60) == 0x60){
  101 + nb_if ++;
61 } 102 }
62 } 103 }
63 } 104 }
@@ -65,9 +106,13 @@ void loop() @@ -65,9 +106,13 @@ void loop()
65 } 106 }
66 } 107 }
67 } 108 }
  109 + //On a fini de recevoir une chaine, on reset alors msg_tmp, puis on attend la chaine suivante
68 msg_tmp=""; 110 msg_tmp="";
69 digitalWrite(out1, LOW); 111 digitalWrite(out1, LOW);
70 } 112 }
  113 + //Fin de l'écoute
  114 +
  115 + //Le message a été reçu, et est envoyé via bluetooth
71 msg += "\n\n\r"; 116 msg += "\n\n\r";
72 Serial.println("blorp"); 117 Serial.println("blorp");
73 Serial.print(msg); 118 Serial.print(msg);