Aujourd'hui j'ai un petit projet en tête - construire un robot suiveur de ligne noir avec Arduino.
En fait c'est pour mon petit frère de 12 ans qui aime bien regarder ce que je fais , je veux donc lui donner gout a la robotique en lui proposant de construire quelque chose de simple et ludique pour lui. Donc pour faire simple je ne veux pas lui faire faire des circuit avec des capteur IR , des LED IR , des résistance, des condensateurs et des transistor , ect ....
beaucoup trop compliquer pour son age.
Je pensais utiliser deux/trois petit capteurs grove seeestudio a connecter directement sur l' Arduino , deux moteur DC et un L293D.
Donc je viens ici pour vous demander un petit peu d'aide
Alors voila comme je l'ai dit je vais utiliser :
_ Deux/trois petit capteurs "grove seeestudio" - lien
_ connecteur du capteur - lien
_ Moteur à engrenages Pololu - lien
_ Deux support moteurs - lien
_ Deux roues - lien
_ Un L293D (Double pont en H)
_ Carte Arduino(J'ai une mega2560 , donc je vais l'utiliser pour les test)
donc je dois acheter les capteurs et les moteurs , le reste j'ai deja.
Maintenant mon problème c'est au niveau des capteurs. Combien de capteurs me faut il ? 2 ou 3 ?
je pensais mettre un a droite et un a gauche pour qu'il détectent le fond blanc et quand un des deux détecte la ligne noir il se repositionne. Ou alors mettre un 3eme au centre pour qu'il détecte la ligne noir et si il détecte du blanc il se repositionne.
Donc la je demande votre avis.
Pour le câblage des moteurs avec le L293D voir image ci dessous -
je connecte les EN (enable) ensemble et les connecte sur un pin de l' Arduino
je connecte les PMW chacun sur un pin différent de l' Arduino
les GND sur le GND de l'Arduino
les 9V sur le + de la pile 9 volt
Pour le code je viens de le faire (pour 2 capteurs seulement) et je ne sais pas ce qu'il manque , si quelqu'un peut m'éclairer
int signalPin_Gauche = 2; //capteur de ligne grove seeedstudio
int signalPin_Droite = 3; //capteur de ligne grove seeedstudio
int Motor1 = 4; // L293D - premier moteur pin 1 (Gauche)
int Motor2 = 5; // L293D - premier moteur pin 2 (Gauche)
int Motor3 = 6; // L293D - second moteur pin 1 (Droite)
int Motor4 = 7; // L293D - second moteur pin 2 (Droite)
int Enable1_2 = 8; // L293D - les 2 pins enable
void setup() {
pinMode(signalPin_Gauche, INPUT);
pinMode(signalPin_Droite, INPUT);
pinMode(Motor1, OUTPUT); // Gauche
pinMode(Motor2, OUTPUT); // Gauche
pinMode(Motor3, OUTPUT); // Droite
pinMode(Motor4, OUTPUT); // Droite
pinMode(Enable1_2 , OUTPUT);
digitalWrite(Enable1_2, HIGH);
Serial.begin(9600);
}
void loop()
{
if(HIGH == digitalRead(signalPin_Gauche)) // si le capteur de gauche se met en etat HIGH le robot doit se deplacer ver la droite
{
digitalWrite(Motor3, LOW); // Droite eteint
digitalWrite(Motor4, LOW); // Droite eteint
digitalWrite(Motor1, HIGH); // Gauche allumer
digitalWrite(Motor2, HIGH); // Gauche allumer
}
else // sinon on allume les 2 moteurs et le robot va tout droit
{
digitalWrite(Motor1, HIGH); // Droite allumer
digitalWrite(Motor2, HIGH); // Droite allumer
digitalWrite(Motor3, HIGH); //Gauche allumer
digitalWrite(Motor4, HIGH); //Gauche allumer
}
if(HIGH == digitalRead(signalPin_Droite)) // si le capteur de droite se met en etat HIGH le robot doit se deplacer ver la gauche
{
digitalWrite(Motor3, HIGH); // Droite allumer
digitalWrite(Motor4, HIGH); // Droite allumer
digitalWrite(Motor1, LOW); //Gauche eteint
digitalWrite(Motor2, LOW); //Gauche eteint
}
else // sinon on allume les 2 moteurs et le robot va tout droit
{
digitalWrite(Motor1, HIGH); // Droite allumer
digitalWrite(Motor2, HIGH); // Droite allumer
digitalWrite(Motor3, HIGH); //Gauche allumer
digitalWrite(Motor4, HIGH); //Gauche allumer
}
}
En tout cas merci de m'avoir lu et merci d'avance de votre aide.















