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 | 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); | ... | ... |