Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur introuvable code robot suiveur de ligne

    6 mai 2019 à 20:53:40

    Bonsoir a tous,

    Voici mon problème , je dois réaliser un programme permettant le contrôle d'un robot suiveur de ligne , pour apprendre comment fonctionne le module QTR 8A Pololu, j'ai installer sur l'IDE Arduino la librairie de celui-ci, et je me suis basé sur l'exemple donnée avec cette librairie pour faire tourner la roue droite lorsque les l'un des 3 capteur droit reçois un signal signalant une bande noir et de meme pour la roue gauche.

    Cependant le servo gauche ne tourne que lorsque le capteur numéro 5 (sachant qu'il n'y a que les 6 capteur sur 8 de connectée) est actif et uniquement lorsque celui est actif, ou les 2 roue tourne lorsque tout les capteurs sont actif. Je n'arrive pas a comprendre d'où vient le problème sachant que les servo moteurs et le module Pololu sont correctement branché.

    Voici le code :

    #include <QTRSensors.h>
    #include <Servo.h>
    
    // This example is designed for use with six analog QTR sensors. These
    // reflectance sensors should be connected to analog pins A0 to A5. The
    // sensors' emitter control pin (CTRL or LEDON) can optionally be connected to
    // digital pin 2, or you can leave it disconnected and remove the call to
    // setEmitterPin().
    //
    // The main loop of the example reads the raw sensor values (uncalibrated). You
    // can test this by taping a piece of 3/4" black electrical tape to a piece of
    // white paper and sliding the sensor across it. It prints the sensor values to
    // the serial monitor as numbers from 0 (maximum reflectance) to 1023 (minimum
    // reflectance).
    
    QTRSensors qtr;
    
    const uint8_t SensorCount = 6;
    uint16_t sensorValues[SensorCount];
    Servo myservo;
    Servo myservo1;
    
    void setup()
    {
      // configure the sensors
      qtr.setTypeAnalog();
      qtr.setSensorPins((const uint8_t[]){A0, A1, A2, A3, A4, A5}, SensorCount);
      qtr.setEmitterPin(2);
      Serial.begin(9600);
    }
    
    
    void loop()
    {
      myservo.attach(5);
      myservo1.attach(3);
      // read raw sensor values
      qtr.read(sensorValues);
    
      // print the sensor values as numbers from 0 to 1023, where 0 means maximum
      // reflectance and 1023 means minimum reflectance
      for (uint8_t i = 0; i < SensorCount; i++)
      {
        Serial.print(sensorValues[i]);
        Serial.print('\t');
        
        if(sensorValues[i]<200){
          if(i<3 && i>=0){
            myservo1.write(0);
            Serial.println(i);
          }
          else if(i>2 && i<6) {
            myservo.write(0);
            Serial.println(i);
          }
          else{
          myservo.write(90);
          myservo1.write(90);
          }
        }
        else{
          myservo.write(90);
          myservo1.write(90);
          }
      }
      Serial.println();
    
      delay(250);
    }

    Ici mes servos sont calibrée a 90 pour signalée l'arrêt !

    Voici aussi un lien pour une vidéo montrant le probléme : 

    https://drive.google.com/file/d/1Q0QBrMegjYhs-1nJOWUsB--nxJjluur-/view?usp=sharing

    Merci d'avance !

    • Partager sur Facebook
    • Partager sur Twitter
      15 mai 2019 à 10:10:15

      Bonjour,

      Il y a plusieurs chose qui me choque.

      pour commencer en ligne 35 et 36 tu déclare tes PIN servo à chaque loop. Passe ces deux ligne dans le setup ça serra plus logique

       A mon avis le soucis vient de ta commande de if car tes deux roue de peuvent pas tourner en même temps si je lit ton code.

      essaye a la ligne 52 de laisser uniquement un if en lieu et place d un else if et vire les ligne 56 a 59.

      tien nous au courant.

      bonne journée 

      • Partager sur Facebook
      • Partager sur Twitter
      Celui qui déplacera la montagne est celui qui commence par déplacer les petites pierres. Confucius

      Erreur introuvable code robot suiveur de ligne

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
      • Editeur
      • Markdown