Vous êtes sur la page 1sur 2

#include <Servo.

h> // bibliotheque servo


// capteurs
int capteurDDroite = A2; // analog pin 2
int capteurDroite = A3; // analog pin 3
int capteurGauche = A4; // analog pin 4
int capteurGGauche = A5; // analog pin 5
// valeurs des capteurs
int droite = 0;
int gauche = 0;
int ddroite = 0;
int ggauche = 0;
int seuil = 450; // seuil de d�tection de la bande noire, � r�gler en fonction de
la
luminosit� ambiante
Un suiveur de ligne (encore avec Arduino) - Brico bidules
http://www.bricobidules.com/index.php?post/2012/02/21/Un-suiveur-d...
3 sur 9 31/07/2014 23:08
// servos
Servo myservo1; // cr�ation de l'objet servo droit
Servo myservo2; // cr�ation de l'objet servo gauche
// vitesses
int avance = 110; // avance normale
int ralenti = 95; // vitesse pour tourner lentement
int stoppe = 90; // arret
void setup(){
// Serial.begin(9600); // d�marrage port s�rie
// servo
myservo1.attach(9); // servo droite sur le pin 9
myservo2.attach(10); // servo gauche sur le pin 10
myservo1.write(stoppe); // on arrete les servos
myservo2.write(stoppe);
delay(5000); // petit d�lai avant d�marrage
}
void loop(){
lecture();
while ((gauche <=seuil && droite <= seuil && ddroite <= seuil && ggauche <=
seuil)){
// si tout est ok on avance
tourne(avance,avance);
lecture();
}
if(gauche >= seuil && droite >= seuil && ddroite >= seuil && ggauche >= seuil){ //
croisement
while (ddroite >= seuil || ggauche >= seuil){ // on attend que les capteurs
extremes soient � nouveau dans le blanc
tourne(avance,avance);
lecture();
}
}
if (ggauche > seuil){ // si capteur extreme gauche on tourne a fond jusqu'� ce que
le
capteur central gauche ait r�cup�r� la ligne
while (gauche < seuil) {
tourne(stoppe,avance);
gauche = analogRead(capteurGauche);
}
}
if (ddroite > seuil){ // // si capteur extreme droit on tourne a fond jusqu'� ce
que
le capteur central droit ait r�cup�r� la ligne
while (droite < seuil) {
tourne(avance,stoppe);
droite = analogRead(capteurDroite);
}
}
if (gauche > seuil && ggauche <= seuil && ddroite <= seuil){ // si le capteur
centre
gauche et lui seul voit la ligne on tourne doucement
tourne(ralenti,avance);
Un suiveur de ligne (encore avec Arduino) - Brico bidules
http://www.bricobidules.com/index.php?post/2012/02/21/Un-suiveur-d...
4 sur 9 31/07/2014 23:08
}
if(droite > seuil && ggauche <= seuil && ddroite <= seuil){ // si capteur centre
droit
on tourne doucement
tourne(avance,ralenti);
}
}
void tourne(int vitesseGauche, int vitesseDroite) { // on transmet la vitesse de
rotation aux servos
vitesseDroite=map(vitesseDroite,180,0,0,180); // on inverse le sens de rotation du
servo droit
myservo1.write(vitesseDroite);
myservo2.write(vitesseGauche);
// Serial.print(vitesseGauche);
// Serial.print("\t");
// Serial.println(vitesseDroite);
}
void lecture(){ // on lit les capteurs
ggauche = analogRead(capteurGGauche);
droite = analogRead(capteurDroite);
gauche = analogRead(capteurGauche);
ddroite = analogRead(capteurDDroite);}

Vous aimerez peut-être aussi