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 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 10 const int in1 = A0;
8 11 const int out1 = A1;
9 12  
  13 +//Vérfie que le premier message à bien été envoyé
10 14 int envoi = 0;
  15 +
  16 +//Message à envoyer au robot via bluetooth
11 17 String msg="";
  18 +
  19 +//Permet de faire en sorte que le programme ne soit executé qu'une seule fois
12 20 int fin1=0;
13 21  
14 22 void setup()
15 23 {
  24 +
  25 + //Liaison série avec l'ordinateur pour débuggage
16 26 Serial.begin(9600);
  27 + //Liaison avec la brique, fonctionnent toutes à 9600 baud
17 28 soft1.begin(9600);
  29 + //Liaison avec le bluetooth, le hc-05 fonctionne à 38400 baud
18 30 soft2.begin(38400);
  31 +
  32 + //Mettre les pins du handshake en input/output
19 33 pinMode(in1,INPUT);
20 34 pinMode(out1,OUTPUT);
  35 +
  36 + //Mettre par défaut le handshake en low, pour pas de demande de communication
21 37 digitalWrite(out1,LOW);
22 38 }
23 39  
24 40 void loop()
25 41 {
  42 + //Chaque message reçu est stocké temporaire dans cette chaine
26 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 49 char inByte = 'a';
  50 +
  51 + //Pour les délais
29 52 int tps,tps2;
30 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 59 if(fin1==0){
  60 +
  61 + //Tant que la brique n'a pas accepté la communication, on tente d'envoyer un premier message
33 62 while(envoi==0){
  63 +
  64 + //Début du protocole d'envoi via une liaison série
34 65 digitalWrite(out1,HIGH);
35 66 if(digitalRead(in1)==HIGH){
36 67 soft1.print(prim);
37 68 soft1.flush();
38 69 envoi = 1;
39   - Serial.println("rogt");
40 70 }
  71 + //Fin du protocole d'envoi
  72 +
41 73 }
42 74  
43 75 digitalWrite(out1,LOW);
44 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 82 timeout = millis() - tps;
47 83 if(digitalRead(in1)==HIGH){
48 84 digitalWrite(out1,HIGH);
... ... @@ -56,8 +92,13 @@ void loop()
56 92 delay(10);
57 93 if(inByte != '\n'){
58 94 msg_tmp += inByte;
59   - if(inByte == 0x7A){
  95 + if((inByte & 0x70) == 0x70){
60 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 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 110 msg_tmp="";
69 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 116 msg += "\n\n\r";
72 117 Serial.println("blorp");
73 118 Serial.print(msg);
... ...