Commit c78b2b728f7b20d2920d0df34bfc10848a611e1c

Authored by sblas
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;
... ...