Commit c78b2b728f7b20d2920d0df34bfc10848a611e1c
1 parent
58056f07
Mise à jour des commentaires du programme de décryptage
Showing
1 changed file
with
36 additions
and
9 deletions
Show diff stats
Programme_arduino_robot
1 | 1 | #include <SoftwareSerial.h> |
2 | 2 | |
3 | +//Liaison série pour le module bluetooth | |
3 | 4 | SoftwareSerial soft2(8,9); |
4 | 5 | |
6 | +//Tous les pins nécessaires à l'utilisation du contrôleur moteur | |
5 | 7 | int pwma = 10; |
6 | 8 | int pwmb = 11; |
7 | 9 | int ain1 = 7; |
... | ... | @@ -9,23 +11,36 @@ int ain2 = 6; |
9 | 11 | int bin1 = 5; |
10 | 12 | int bin2 = 4; |
11 | 13 | int stby = 3; |
14 | + | |
15 | +//Pins pour le détecteur ultrasons de l'arduino | |
12 | 16 | int TRIG = A1; |
13 | 17 | int ECHO = A0; |
18 | + | |
19 | +//Distance mesurée par le robot | |
14 | 20 | long cm; |
21 | +//Valeur renvoyée par le capteur ultrasons | |
15 | 22 | long lect_echo; |
16 | - int envoi=0; | |
23 | +//Variable indiquant si le chemin à déjà été reçu ou non | |
24 | +int envoi=0; | |
25 | +//Variable pour stocker chaque octet reçu | |
17 | 26 | char inByte='a'; |
18 | 27 | |
19 | 28 | void setup() { |
29 | + //Initialiser les liaisons série, 9600 hard pour le debug, 38400 soft2 pour le module bluetooth | |
20 | 30 | Serial.begin(9600); |
21 | 31 | soft2.begin(38400); |
22 | - pinMode(TRIG,OUTPUT); | |
23 | -digitalWrite(TRIG, LOW); | |
24 | -pinMode(ECHO,INPUT); | |
32 | + | |
33 | + //Setup par défaut des pins du capteur ultrasons | |
34 | + pinMode(TRIG,OUTPUT); | |
35 | + digitalWrite(TRIG, LOW); | |
36 | + pinMode(ECHO,INPUT); | |
25 | 37 | } |
26 | 38 | |
27 | 39 | void loop() { |
40 | + //Stocker le message reçu via bluetooth | |
28 | 41 | String msg; |
42 | + | |
43 | + //Variables diverses utilisées par la suite | |
29 | 44 | int i = 0; |
30 | 45 | int nb_if = 0; |
31 | 46 | char id_sauv; |
... | ... | @@ -34,21 +49,25 @@ void loop() { |
34 | 49 | char id_boucles[6]; |
35 | 50 | int boucle_rec = 0; |
36 | 51 | int capteur; |
52 | + | |
37 | 53 | //boucle dans une boucle gérée |
38 | 54 | |
55 | + //écouter sur le port série du module bluetooth, jusqu'à recevoir un chemin | |
39 | 56 | soft2.listen(); |
40 | 57 | while(soft2.available()>0 && inByte !='\n'){ |
41 | 58 | inByte=soft2.read(); |
42 | - msg+=inByte; | |
43 | - delay(10); | |
44 | - i++; | |
45 | - envoi=1; | |
59 | + msg+=inByte; | |
60 | + delay(10); | |
61 | + i++; | |
62 | + envoi=1; | |
46 | 63 | } |
47 | - | |
64 | + | |
48 | 65 | //++a01z++a++z test if |
49 | 66 | //++B 1Q+z test while (executé 32 fois) |
50 | 67 | //++B 1B +Q1Q+z test while dans un while |
51 | 68 | if(envoi==1){ |
69 | + | |
70 | + //Aller tout droit | |
52 | 71 | for(int k=0;k<i;k++){ |
53 | 72 | if((msg.charAt(k) & 0xF0) ==0x10){ |
54 | 73 | Serial.print("tout droit\n\r"); |
... | ... | @@ -62,6 +81,7 @@ void loop() { |
62 | 81 | delay(1000); |
63 | 82 | } |
64 | 83 | |
84 | + //Tourner à gauche | |
65 | 85 | else if((msg.charAt(k) & 0xF0) ==0x20){ |
66 | 86 | Serial.print("à gauche\n\r"); |
67 | 87 | digitalWrite(stby,HIGH); |
... | ... | @@ -74,6 +94,7 @@ void loop() { |
74 | 94 | delay(900); |
75 | 95 | } |
76 | 96 | |
97 | + //Tourner à droite | |
77 | 98 | else if((msg.charAt(k) & 0xF0) ==0x30){ |
78 | 99 | Serial.print("à droite\n\r"); |
79 | 100 | digitalWrite(stby,HIGH); |
... | ... | @@ -86,6 +107,7 @@ void loop() { |
86 | 107 | delay(900); |
87 | 108 | } |
88 | 109 | |
110 | + //Début boucle while | |
89 | 111 | else if((msg.charAt(k) & 0xF0) ==0x40){ |
90 | 112 | Serial.print("début while\n\r"); |
91 | 113 | k++; |
... | ... | @@ -94,7 +116,9 @@ void loop() { |
94 | 116 | boucle_rec++; |
95 | 117 | } |
96 | 118 | |
119 | + //Fin boucle while | |
97 | 120 | else if((msg.charAt(k) & 0xF0) ==0x50){ |
121 | + //LEs deux tableaux suivants stockent les différentes id des instructions while, et permettent donc de gérer le cas d'un while dans un while | |
98 | 122 | nb_boucles[boucle_rec-1]--; |
99 | 123 | if(nb_boucles[boucle_rec-1]!=0){ |
100 | 124 | k--; |
... | ... | @@ -109,7 +133,9 @@ void loop() { |
109 | 133 | } |
110 | 134 | } |
111 | 135 | |
136 | + //IF | |
112 | 137 | else if((msg.charAt(k) & 0xF0) ==0x60){ |
138 | + //Pour le if, on compare la valeur du deuxième octet à la valeur lue par la capteur, puis soit on continue le chemin actuel, soit on saute jusqu'au prochain if ayant la même id que le if actuel. | |
113 | 139 | Serial.print("if\n\r"); |
114 | 140 | digitalWrite(TRIG, HIGH); |
115 | 141 | delayMicroseconds(50); |
... | ... | @@ -154,6 +180,7 @@ void loop() { |
154 | 180 | } |
155 | 181 | } |
156 | 182 | |
183 | + //Fin de parcours | |
157 | 184 | else if((msg.charAt(k) & 0xF0) ==0x70){ |
158 | 185 | Serial.print("fin parcours\n\r"); |
159 | 186 | envoi=2; | ... | ... |