Le suiveur de ligne

capteur suiveur de ligne

Le suiveur de ligne dispose de deux capteurs capables de détecter une surface blanche (dans la plage de 1 à 2 cm). Cela fonctionne en émettant des IR (jenfraRed) la lumière et l’enregistrement de la quantité réfléchie. Si une pièce est réfléchie, on peut conclure qu’elle est proche d’une surface blanche. Si un peu est réfléchi, on peut conclure que la surface est noire ou que le capteur n’est pas proche d’une surface.

Une surface lumineuse réfléchit beaucoup de lumière infrarouge vers le récepteur:

lumière réfléchie

Une surface sombre ne renvoie qu’un peu de lumière vers le récepteur:

peu de lumière réfléchie

Dans mBlock, deux blocs sont associés au suiveur de ligne:

bloc suiveur de ligne

Le premier bloc renvoie un nombre entre 0 et 3 basé sur les valeurs suivantes:

Graphique

Le deuxième bloc revient également VRAI ou faux.

Utilisez le bloc « Line Follower » pour programmer:

Si nous voulons que notre robot suive une ligne noire, nous avons le pseudocode suivant:


If( line follower = 0)
---- Go forward
Else if (line follower = 1)
---- Turn Left
Else if(line follower = 2)
---- Turn Right
Else if(line follower = 3)
---- Aaargh!! Help!! Where is the line?

Alors maintenant, mettons-le dans le code mBlock:

programme suiveur de ligne

Et cela ne fonctionne pas – le robot sort souvent de la piste. C’est parce que ce programme s’exécute à partir de mBlock IDE. N’oubliez pas qu’il faut du temps pour que les signaux et les commandes soient envoyés du robot à l’ordinateur et inversement. Dans ce cas, ce délai interfère avec la façon dont le robot exécute la ligne qui suit. Nous devons télécharger ce programme sur la carte pour réduire ce délai. Ensuite, le programme fonctionne. Pour mBot nous utilisons le bloc « programme mBot », passons en mode Arduino et « Upload to Arduino »:

programme mbot

Maintenant, le robot suit avec succès la ligne.

Utilisez le bloc « Line Follower (port) (side) Ice (Black / White) » pour programmer:

En utilisant ce bloc:


If((Right is black) AND (Left is black))
---- Go forward
Else if((Right is white) AND (Left is black))
---- Turn Left
Else ((Right is black) AND (Left is white))
---- Turn Right
Else ((Right is white) AND (Left is white))
---- Aaargh!! I’m lost AGAIN?!?

Donc, pour cela, nous avons besoin d’un bloc « et » pour combiner les deux instructions conditionnelles:

et bloquer

Le code final ressemble donc à ceci:

programme-avec-bloc-booléen

Défi:

  1. Le robot se déplace ne tourne pas en douceur. Pourquoi est-ce comme ça? Pouvez-vous le cuisiner?
  2. Pouvez-vous écrire un programme pour que le robot se déplace autour d’une table (blanche) de manière aléatoire sans tomber? (N’oubliez pas que le capteur de suivi de ligne détecte si la lumière est réfléchie – ou non réfléchie)
  3. Pouvez-vous écrire un programme qui suit une ligne ET évite les objets – si un obstacle est détecté, le robot doit arrêter les moteurs et attendre que l’objet soit retiré.

Construisez vos rêves!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *