// 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);}