Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème capteur ultrason et capteur IR arduino

    9 janvier 2019 à 15:34:11

    Bonjour,

    Je suis étudiant et avec des camarades de classe on à crée une voiture en arduino.

    Nous utilisons une carte mega sur laquelle nous avons trois capteurs ultrason pour la détection d'obstacle et un capteur infrarouge pour la détection de chute.

    Nous arrivons à faire fonctionner la détection d'obstacle ou la détection de chute, mais quand nous mettons à la fois les capteurs ultrason pour les obstacle et ir pour la chut la détection de chute se fait plus tard et donc la voiture tombe.

    voici notre code sur la partie demi-tour pouvez vous nous aidés ? à résoudre notre problème

     //Bibliothèques

      #include  <AFMotor.h>

      #include <SharpIR.h> // Capteur IR

    //Définir les capteurs Ultrason Avant

      //Droite

        #define trig_AVD 23

        #define echo_AVD 22

      //Milieu

        #define trig_AVM 25

        #define echo_AVM 24

      //Gauche

        #define trig_AVG 27

        #define echo_AVG 26

    //Définir capteurs IR

      //Avant

       SharpIR SharpIR(SharpIR::GP2Y0A41SK0F, A7);

    //Définir les variables des Capteurs Ultrasons

      long lecture_dureeU_AVD, lecture_distanceU_AVD;

      long lecture_dureeU_AVM, lecture_distanceU_AVM;

      long lecture_dureeU_AVG, lecture_distanceU_AVG;

    //Déclaration des moteur

      AF_DCMotor  moteur1(1);//avant Droite 

      AF_DCMotor  moteur2(2);//avant Gauche 

      AF_DCMotor  moteur3(3);//arrière Gauche 

      AF_DCMotor  moteur4(4);//arrière Droite

    void  setup(){

    //Debut de communication

      Serial.begin(9600); 

      Serial.println("Teste Communication");

    //Défini le trig en sortie (emet) et le echo en entrée (reçoit)

      pinMode(trig_AVD, OUTPUT);

      pinMode(echo_AVD, INPUT); 

      pinMode(trig_AVM, OUTPUT);

      pinMode(echo_AVM, INPUT);

      pinMode(trig_AVG, OUTPUT);

      pinMode(echo_AVG, INPUT);  

    }

    void  loop(){

    //définir la vitesse des moteurs au max (0 - 255)

     moteur1.setSpeed(200);

     moteur2.setSpeed(200);

     moteur3.setSpeed(200);

     moteur4.setSpeed(200);

    //Variables Capteurs Infrarouges

     int lecture_distanceIR = SharpIR.getDistance();

     Serial.print("Distance du capteur Infrarouge en cm : ");

     Serial.println(lecture_distanceIR);

    //Scan de la distance

     //Capteur ultrason avant droit

       digitalWrite(trig_AVD, LOW); 

       delayMicroseconds(2); // un délais est nécéssaire pour recevoir une bonne opération.

       digitalWrite(trig_AVD, HIGH);

       delayMicroseconds(10);// ce délai est également requis!

       digitalWrite(trig_AVD, LOW);

       lecture_dureeU_AVD = pulseIn(echo_AVD, HIGH); 

       lecture_distanceU_AVD = lecture_dureeU_AVD / 58; // lecture_echo*340/(2*10000)

       Serial.print("Distance du capteur AVD en cm : "); 

       Serial.println(lecture_distanceU_AVD);

     //Capteur ultrason avant milieu

       digitalWrite(trig_AVM, LOW); 

       delayMicroseconds(2); // un délais est nécéssaire pour recevoir une bonne opération.

       digitalWrite(trig_AVM, HIGH);

       delayMicroseconds(10);// ce délai est également requis!

       digitalWrite(trig_AVM, LOW);

       lecture_dureeU_AVM = pulseIn(echo_AVM, HIGH); 

       lecture_distanceU_AVM = lecture_dureeU_AVM / 58; // lecture_echo*340/(2*10000)

       Serial.print("Distance du capteur AVM en cm : "); 

       Serial.println(lecture_distanceU_AVM);

     //Capteur ultrason avant gauche

       digitalWrite(trig_AVG, LOW); 

       delayMicroseconds(2); // un délais est nécéssaire pour recevoir une bonne opération.

       digitalWrite(trig_AVG, HIGH);

       delayMicroseconds(10);// ce délai est également requis!

       digitalWrite(trig_AVG, LOW);

       lecture_dureeU_AVG = pulseIn(echo_AVG, HIGH); 

       lecture_distanceU_AVG = lecture_dureeU_AVG / 58; // lecture_echo*340/(2*10000)

       Serial.print("Distance du capteur AVG en cm : "); 

       Serial.println(lecture_distanceU_AVG);

    //Fin des scans

    //Code Demi-tour Ultrason (détection d'obstacle)

     if ((lecture_distanceU_AVM>0 && lecture_distanceU_AVM<40)|| (lecture_distanceU_AVG>0 && lecture_distanceU_AVG<40)){ //cette condistion va définir une distance entre 0 à 30 cm la voiture devra faire demitour

       Serial.println("Obstacle detecté à moins de 30cm"); 

       Serial.print("Mesure capteur milieu: ");

       Serial.print(lecture_distanceU_AVM);

       Serial.print("Mesure capteur gauche: "); 

       Serial.print(lecture_distanceU_AVG); 

       Serial.print("cm"); 

       Serial.print("La voiture fait demi-tour");

       moteur1.run(BACKWARD);

       moteur2.run(FORWARD);

       moteur3.run(FORWARD);

       moteur4.run(BACKWARD);

       delay(850);

     }

     else if (lecture_distanceU_AVD>0 && lecture_distanceU_AVD<40){ //cette condistion va définir une distance entre 0 à 30 cm la voiture devra faire demitour

       Serial.println("Obstacle detecté à moins de 30cm"); 

       Serial.print("La voiture se situe à : ");

       Serial.print(lecture_distanceU_AVD); 

       Serial.print("cm"); 

       Serial.print("La voiture fait demi-tour");

       moteur1.run(FORWARD);

       moteur2.run(BACKWARD);

       moteur3.run(BACKWARD);

       moteur4.run(FORWARD);

       delay(850);

     }

      //Demi-tour IR détection de chute

     if (lecture_distanceIR > 20){

       Serial.println("Vide detecté"); 

       Serial.print("En effet, la voiture mesure un vide de : ");

       Serial.print(lecture_distanceIR); 

       Serial.print("cm"); 

       Serial.print("La voiture recule");

       moteur1.run (RELEASE);  

       moteur2.run (RELEASE);

       moteur3.run (RELEASE);

       moteur4.run (RELEASE);

       delay (500); 

       moteur1.run (BACKWARD);  

       moteur2.run (BACKWARD);

       moteur3.run (BACKWARD);

       moteur4.run (BACKWARD);

       delay (500); 

       moteur1.run (FORWARD);  

       moteur2.run (BACKWARD);

       moteur3.run (BACKWARD);

       moteur4.run (FORWARD); 

       delay(1130);

     }

    //Moteur droit qui tourne

    //Fin des demi-tour ultrason et IR

     else {

       Serial.println("Aucun Obstacle detecté"); 

       moteur1.run(FORWARD);

       moteur2.run(FORWARD);

       moteur3.run(FORWARD);

       moteur4.run(FORWARD);

     }

    }

    • Partager sur Facebook
    • Partager sur Twitter
      18 janvier 2019 à 22:06:49

      Met le code dans la balise de code stp, la c'est impossible à lire

      -
      Edité par Antoinnneee 18 janvier 2019 à 22:06:55

      • Partager sur Facebook
      • Partager sur Twitter

      Problème capteur ultrason et capteur IR arduino

      × 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