Commit 79b06698b8607f496d3b30bb5bb6b87ca5809cd7
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); |