diff --git a/electronics/robot-soudure-composants-v2.png b/electronics/robot-soudure-composants-v2.png
new file mode 100644
index 0000000..3e63bbe
Binary files /dev/null and b/electronics/robot-soudure-composants-v2.png differ
diff --git a/electronics/robot-soudure-composants-v2.svg b/electronics/robot-soudure-composants-v2.svg
new file mode 100644
index 0000000..7b09d4c
--- /dev/null
+++ b/electronics/robot-soudure-composants-v2.svg
@@ -0,0 +1,11660 @@
+
+
+
+
diff --git a/electronics/robot-soudure-composants.png b/electronics/robot-soudure-composants.png
new file mode 100644
index 0000000..a01e6cc
Binary files /dev/null and b/electronics/robot-soudure-composants.png differ
diff --git a/electronics/robot-soudure-composants.svg b/electronics/robot-soudure-composants.svg
index 51014cd..e75e4ce 100644
--- a/electronics/robot-soudure-composants.svg
+++ b/electronics/robot-soudure-composants.svg
@@ -15,523 +15,553 @@
viewBox="0 0 300 420"
version="1.1"
id="svg8"
- inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
- sodipodi:docname="robot-suiveur-de-ligne.svg">
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="robot-soudure-composants.svg"
+ inkscape:export-filename="/home/fred/Documents/dev/Arduino/lineFollowerBot/electronics/robot-soudure-composants.svg.png"
+ inkscape:export-xdpi="78"
+ inkscape:export-ydpi="78">
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ id="defs2">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ transform="translate(30,-27)"
+ sodipodi:insensitive="true">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/lineFollowerBot/lineFollowerBot.ino b/lineFollowerBot/lineFollowerBot.ino
index 5f3fa77..4e2f5c5 100644
--- a/lineFollowerBot/lineFollowerBot.ino
+++ b/lineFollowerBot/lineFollowerBot.ino
@@ -50,11 +50,16 @@ int seuil_droite = 200;
// Son rôle consiste à configurer l’Arduino pour un usage précis, dans le cas
// présent pour un robot suiveur de ligne.
void setup() {
- // Configure les broches des moteurs en sortie numérique.
+ // Configure les broches des moteurs en sortie numérique. Ces broches seront
+ // soit à 0 volt, soit à 5 volts. Les broches de l’Arduino ne sont pas faites
+ // pour alimenter un moteur, elles serviront à piloter des transistors qui,
+ // eux, alimenteront les moteurs.
pinMode(MOTEUR_GAUCHE, OUTPUT);
pinMode(MOTEUR_DROITE, OUTPUT);
// Configure les broches des leds de suivi d’étalonnage en sortie numérique.
+ // Les leds consomment très peu d’énergie, elles seront directement pilotées
+ // par les broches de l’Arduino.
pinMode(ETALONNAGE_LED_GAUCHE, OUTPUT);
pinMode(ETALONNAGE_LED_DROITE, OUTPUT);
@@ -73,6 +78,10 @@ void setup() {
// Attend jusqu’à ce que le bouton d’étalonnage soit enfoncé ou relaché.
// Le paramètre etat peut prendre 2 valeurs : BOUTON_PRESSE et BOUTON_RELEVE.
+// Si la fonction est appelée avec BOUTON_PRESSE, elle ne laissera le programme
+// continuer que si le bouton est enfoncé. Si elle est appelée avec
+// BOUTON_RELEVE, elle ne laissera le programme continuer que si le bouton est
+// relevé.
void continuer_si(int etat) {
while(digitalRead(ETALONNAGE_BOUTON) != etat) delay(1);
}
@@ -92,14 +101,14 @@ void clignoter() {
digitalWrite(ETALONNAGE_LED_GAUCHE, HIGH);
digitalWrite(ETALONNAGE_LED_DROITE, HIGH);
- // Attend 0,2 secondes.
+ // Attend 0,2 secondes (200 millisecondes).
delay(200);
// Éteint les leds d’étalonnage (les broches sont réglées à 0 volt).
digitalWrite(ETALONNAGE_LED_GAUCHE, LOW);
digitalWrite(ETALONNAGE_LED_DROITE, LOW);
- // Attend 0,2 secondes.
+ // Attend 0,2 secondes (200 millisecondes).
delay(200);
}
}
@@ -120,7 +129,8 @@ void eteindre() {
// Étalonne les capteurs pour établir la différence entre la ligne et le sol.
void etalonnage() {
// Variables qui vont recevoir les valeurs minimales et maximales des capteurs
- // gauche et droite. L’unité importe peu.
+ // gauche et droite (L’unité importe peu). Elles permettent de garder en
+ // mémoire l’état du capteur afin de pouvoir effectuer des calculs plus tard.
int min_gauche;
int min_droite;
int max_gauche;
@@ -196,7 +206,9 @@ void moteur_avance() {
//
// =============================================================================
-// La fonction loop est appelée en boucle par l’Arduino.
+// La fonction loop est appelée en boucle par l’Arduino. Un Arduino est prévu
+// pour ce genre de tâche : exclusive et répétitive.
+// Le programme considère que le robot démarre la ligne entre les deux capteurs.
void loop() {
// Variables qui vont recevoir les valeurs des capteurs.
int valeur_gauche;
@@ -216,7 +228,9 @@ void loop() {
}
// Tourne à droite si le capteur de gauche identifie le sol et le capteur de
- // droite identifie la ligne.
+ // droite identifie la ligne. Cela veut dire que le robot dévie à gauche par
+ // rapport à la ligne qu’il doit suivre. On corrige en tournant à droite
+ // jusqu’à ce que la ligne soit à nouveau entre les deux capteurs.
if((valeur_gauche < seuil_gauche) && (valeur_droite > seuil_droite)) {
moteur_droite();
@@ -227,7 +241,9 @@ void loop() {
}
// Tourne à gauche si le capteur de gauche identifie la ligne et le capteur de
- // droite identifie le sol.
+ // droite identifie le sol. Cela veut dire que le robot dévie à droite par
+ // rapport à la ligne qu’il doit suivre. On corrige en tournant à gauche
+ // jusqu’à ce que la ligne soit à nouveau entre les deux capteurs.
if((valeur_gauche > seuil_gauche) && (valeur_droite < seuil_droite)) {
moteur_gauche();