4. Suivre la ligne¶
La voiture est équipée d’un module de suivi de ligne, qui peut être utilisé pour faire suivre à la voiture une ligne noire.
Lorsque le module de suivi de ligne détecte la ligne noire, le moteur droit tourne tandis que le moteur gauche reste immobile, permettant ainsi à la voiture de se déplacer d’un pas vers l’avant gauche. Au fur et à mesure que la voiture se déplace, le module de ligne sera déplacé hors de la ligne, puis le moteur gauche tourne et le moteur droit ne tourne pas, la voiture se déplace d’un pas vers la droite pour revenir sur la ligne. En répétant les deux étapes ci-dessus, la voiture peut se déplacer le long de la ligne noire.
Avant de commencer le projet, vous devez construire une carte de courbe avec du ruban adhésif noir pour ligne, la largeur de ligne recommandée est entre 0,8-1,5 cm et l’angle du virage ne doit pas être inférieur à 90 degrés.
Composants requis
Dans ce projet, nous avons besoin des composants suivants.
Il est certainement pratique d’acheter un kit complet, voici le lien :
Nom |
ARTICLES DANS CE KIT |
LIEN |
---|---|---|
3 in 1 Starter Kit |
380+ |
Vous pouvez également les acheter séparément via les liens ci-dessous.
INTRODUCTION DES COMPOSANTS |
LIEN D’ACHAT |
---|---|
- |
|
- |
|
Câblage
C’est un module numérique de suivi de ligne, lorsqu’une ligne noire est détectée, il émet 1 ; lorsqu’une ligne blanche est détectée, il émet une valeur de 0. De plus, vous pouvez ajuster sa distance de détection grâce au potentiomètre sur le module.
Construisez le circuit selon le schéma suivant.
Module de suivi de ligne |
Carte R3 |
---|---|
S |
2 |
V+ |
5V |
G |
GND |
Ajuster le module
Avant de commencer le projet, vous devez ajuster la sensibilité du module.
Câblez selon le schéma ci-dessus, puis alimentez la carte R3 (soit directement dans le câble USB soit dans le câble du bouton de la batterie 9V), sans télécharger le code.
Collez un ruban électrique noir sur la table et placez la voiture dessus.
Observez la LED de signal sur le module pour vous assurer qu’elle s’allume sur la table blanche et s’éteint sur le ruban noir.
Si ce n’est pas le cas, vous devez ajuster le potentiomètre sur le module, afin qu’il puisse faire l’effet ci-dessus.
Code
Note
Ouvrez le fichier
4.follow_the_line.ino
sous le chemin de3in1-kit\car_project\4.follow_the_line
.Ou copiez ce code dans Arduino IDE.
Ou téléchargez le code via le Arduino Web Editor.
Après avoir téléchargé le code sur la carte R3, alignez le module de suivi de ligne sous la voiture avec la ligne noire, et vous verrez la voiture suivre la ligne.
Comment ça fonctionne ?
Dans ce code, il permet aux deux moteurs de micro-tourner à gauche et à droite en fonction de la valeur du module de suivi de ligne, afin que vous puissiez voir la voiture suivre la ligne noire.
Ajoutez la définition de pin pour le module de suivi de ligne, ici il est réglé sur
INPUT
. Initialisez également le moniteur série et réglez le débit en bauds à 9600bps.... const int lineTrack = 2; Serial.begin(9600); void setup() { ... pinMode(lineTrack, INPUT); }
Lisez la valeur du module de suivi de ligne, si elle est 1, alors laissez la voiture aller vers l’avant gauche ; sinon, aller vers l’avant droite. Vous pouvez également ouvrir le moniteur série en cliquant sur l’icône de la loupe dans le coin supérieur droit pour voir le changement de la valeur du module de suivi de ligne sur la ligne noire et blanche avant de débrancher le câble USB.
void loop() { int speed = 150; int lineColor = digitalRead(lineTrack); // 0:white 1:black Serial.println(lineColor); if (lineColor) { moveLeft(speed); } else { moveRight(speed); } }
À propos des fonctions
moveLeft()
etmoveRight()
.Contrairement à la fonction de virage gauche-droite dans le projet 2. Mouvement par Code, seuls de petits virages gauche-droite sont nécessaires ici, donc vous n’avez besoin d’ajuster la valeur de
A_1A
ouB_1B
à chaque fois. Par exemple, si vous vous déplacez vers l’avant gauche (moveLeft()
), vous devez uniquement régler la vitesse surA_1A
et toutes les autres à 0, ce qui fera tourner le moteur droit dans le sens des aiguilles d’une montre et le moteur gauche immobile.void moveLeft(int speed) { analogWrite(A_1B, 0); analogWrite(A_1A, speed); analogWrite(B_1B, 0); analogWrite(B_1A, 0); } void moveRight(int speed) { analogWrite(A_1B, 0); analogWrite(A_1A, 0); analogWrite(B_1B, speed); analogWrite(B_1A, 0); }
-
Utilisé pour la communication entre la carte Arduino et un ordinateur ou d’autres appareils.
Serial.begin()
: Définit le taux de données en bits par seconde (baud) pour la transmission de données série.Serial.println()
: Imprime des données sur le port série sous forme de texte ASCII lisible par l’homme suivi d’un caractère de retour chariot (ASCII 13, ou “r”) et d’un caractère de saut de ligne (ASCII 10, ou “n”).
-
Le
if else
permet un contrôle plus grand sur le flux de code que la simple instruction if, en permettant de regrouper plusieurs tests.