Dans ce tutoriel nous allons voir comment marche un suiveur de ligne quelles capteurs utiliser et comment le réaliser.
Un Suiveur de ligne c’est quoi ?
Un robot suiveur de ligne est un robot qui a pour but de suivre une ligne (comme son nom l’indique), ce type de robot est utilisé dans les industries et sur les véhicules sans chauffeur qui doivent suivre un chemin bien défini.
Comment marche un suiveur de ligne ?
Le robot suit une ligne noir sur un arrière plan blanc tracé au sol qui représente le chemin a suivre, et pour faire cela le robot a besoin de deux capteurs infrarouges qui distingues la ligne noir de l’arrière plan blanc, Tant que les deux capteurs ne détectent pas la ligne, le robot avance (situation 0). Lorsqu’un des deux capteurs détecte la ligne, le robot doit tourner dans la direction de ce dernier pour se mettre au milieu de la ligne (situation 1 et 2).
Matériel pour fabriquer un robot suiveur de ligne Arduino
- Arduino Uno ( Disponible ici)
- Chassis Voiture (2 roues) ( Disponible ici)
- Module Infrarouge ( Disponible ici)
- Des Jumpers ( Disponible ici)
- Shield Moteur ( Disponible ici) ou vous pouvez utiliser un L293D ( Tutoriel Disponible ici)
- Support 4 Piles AA ( Disponible ici)
Montage du suiveur de ligne Arduino
- On monte le shield moteur sur l’Arduino :
- On branche les deux moteurs et l’alimentation au shield moteur.
Pour l’alimentation j’ai mis en série 2 supports de 4 piles chacun ce qui me fait 8 Piles AA en série
- On branche le module infrarouge avec le shield Moteur
***************************************
*Module Infrarouge | Shield Arduino *
* VCC | 3.3V *
* Gnd | Gnd *
* In1 | Pin 4 *
* In2 | Pin 5 *
***************************************
- On branche les deux capteurs infrarouges avec le module infrarouge :
- On monte le tout dans le châssis
Code du suiveur de ligne Arduino
Il faut savoir que quand le capteur détecte la ligne il va envoyer 1 et quand il ne la détecte pas il enverra 0 :
int IN1 = 4; //Pin pour Le Capteur Gauche
int IN4 = 5; //Pin pour Le Capteur Droite
int GA=12,GB=3,DA=13,DB=11; //Pin pour Deux moteurs (GA et GB pour le moteur Gauche, DA et DB pour le moteur de droite)
void setup()
{
Serial.begin(9550);
pinMode(IN1,INPUT);
pinMode(IN4,INPUT);
pinMode(DA,OUTPUT);
pinMode(DB,OUTPUT);
pinMode(GA,OUTPUT);
pinMode(GB,OUTPUT);
}
//on Crée Les Fonctions
void d() //Fonction qui permet au robot de tourner a droite
{
digitalWrite(DA,LOW);
analogWrite(DB,55);
analogWrite(GA,55);
digitalWrite(GB,LOW);
}
void g() //Fonction qui permet au robot de tourner a gauche
{
analogWrite(DA,55);
digitalWrite(DB,LOW);
digitalWrite(GA,LOW);
analogWrite(GB,55);
}
void av() //Fonction qui permet au robot de continuer tout droit
{
digitalWrite(DA,LOW);
analogWrite(DB,55);
digitalWrite(GA,LOW);
analogWrite(GB,55);
}
void loop()
{
int in1_val = digitalRead(IN1);
int in4_val = digitalRead(IN4);
if ((in1_val) && (!in4_val)) //S'il y a du noir à gauche et du blanc à droite, tourner à gauche
{
Serial.println("Tourner à gauche");
g();
}
else if ((!in1_val) && (in4_val)) //S'il y a du blanc à gauche et du noir à droite, tourner à droite
{
Serial.println("Tourner à droite");
d();
}
else //Si les conditions plus haut ne s'appliquent pas, continuer tout droit
{
Serial.println("Continuer tout droit");
av();
}
}