Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de résultat

Programmation Arduino/Romeo

Sujet résolu
    24 mai 2022 à 19:46:48

    Besoin d'aide,

    Bonjour, je suis en première STI2D et je travaille sur un projet de robot autonome qui doit sortir d'un labyrinthe avec des capteur à ultra sons, la carte qu'on utilise est une Romeo BLE voici sa fiche technique : 

    lien : https://wiki.dfrobot.com/RoMeo_BLE__SKU_DFR0305_

    mon code consiste à une logique simple au début je met les moteur en marche une fois obstacle repérer par capteur on arrête les moteurs . simple et efficace ça marche mais juste avec un seul moteur et c'est le M2 dans ma variable dans le code suivant le M1 marche pas au tout début 

    // Arduino
    // Code final
    
    // Déclarer les varibale Moteur 
    
    int E1 = 4;     //M1 Speed Control
    int E2 = 7;     //M2 Speed Control
    int M1 = 5;    //M1 Direction Control
    int M2 = 6;    //M1 Direction Control
    
    
    // Déclarer Les variable Capteurs
    // CAPTEUR
    // Capteur Droit 
    int trigRight = 2;
    int echoRight = 3;
    
    // Capteur central 
    int trigCentral = 5;
    int echoCentral = 6;
    
    // Capteur Gauche 
    int trigLeft = 8;
    int echoLeft = 9;
    
    
    //When m1p/m2p is 127, it stops the motor
    //when m1p/m2p is 255, it gives the maximum speed for one direction
    //When m1p/m2p is 0, it gives the maximum speed for reverse direction
    
    
    void setup(){
      
      // initialisé la communication
      Serial.begin(115200);
    
      // Initialisation des capteurs 
      pinMode(M1, OUTPUT);
      pinMode(M2, OUTPUT);
      
      // Initialisé les capteurs
      
      // Capteur droit 
      pinMode(trigRight, OUTPUT);
      digitalWrite(trigRight, LOW);
      pinMode(echoRight, INPUT);
      
      // Capteur Central
      pinMode(trigCentral, OUTPUT);
      digitalWrite(trigCentral, LOW);
      pinMode(echoCentral, INPUT);
    
      // Capteur Gauche 
      pinMode(trigLeft, OUTPUT);
      digitalWrite(trigLeft, OUTPUT);
      pinMode(echoLeft, INPUT);
    }
    
    
    void loop(){
      
      // Mise en marche des Capteurs au début
      // Capteurs DROIT
      digitalWrite(trigRight, HIGH);
      delayMicroseconds(10);
      digitalWrite(trigRight, LOW);
      digitalWrite(echoRight, HIGH);
      // Capteur Central
      digitalWrite(trigCentral, HIGH);
      delayMicroseconds(10);
      digitalWrite(trigCentral, LOW);
      digitalWrite(echoCentral, HIGH);
      // Capteur Gauche 
      digitalWrite(trigLeft, HIGH);
      delayMicroseconds(10);
      digitalWrite(trigLeft, LOW);
      digitalWrite(echoLeft, HIGH);
      
      // Manipulation et calcule de la distance DROITE
      long temps_D = pulseIn(echoRight, HIGH);
      long distance_D = (340 * temps_D) / 1000; // /1000 ms=> s
      distance_D /= 2;
      
      // Manipulation et calcule de la distance Central
      long temps_C = pulseIn(echoCentral, HIGH);
      long distance_C = (340 * temps_C) / 1000;
      distance_C /= 2;
      
      // MANIPULATION et clacule de la diqstance Gauche 
      long temps_G = pulseIn(echoLeft, HIGH);
      long distance_G = (340 * temps_G) / 1000;
      distance_G /= 2;
    
      // Mettre les moteurs en marche 
      digitalWrite(M1, HIGH);
      analogWrite(E1, 255);
      digitalWrite(M2, HIGH);
      analogWrite(E2, 255);
      
      // Condition de teste 
      if(distance_C <100){
        // Moteur 1
      analogWrite(E1, LOW); // arret moteur 1
      digitalWrite(M1, LOW); 
        // MOteur 2
      digitalWrite(E2, LOW); // arret moteur 2
      analogWrite(M2, LOW);
        
        if(distance_D > 100){
            digitalWrite(M2, HIGH); // mettre moteur 1 
      		analogWrite(E2, 255);
          
            digitalWrite(M1, HIGH);
            analogWrite(E1, 125);  // arret du moteur
        }
      }
    }

    n'hésiter pas à commenter et modifier mon code si c'est possible 

    Merci d'avance 

    • Partager sur Facebook
    • Partager sur Twitter
      24 mai 2022 à 19:53:50

      Bonjour, Merci d'indiquer un titre en rapport avec votre problématique.

      Mauvais titre

      Le titre est un élément important qui ne doit pas être négligé. N'oubliez pas cette règle simple : le titre idéal résume la question que vous allez poser en une petite phrase. Il doit permettre aux visiteurs de se repérer facilement dans le forum visité et d'identifier le sujet à sa seule lecture.

      Vous pouvez utiliser divers préfixes comme [Erreur], [MySQL], [Compatibilité], etc... Aussi, pensez à consulter les règles propres à chaque forum (visibles dans les topics épinglés en haut des sections).

      De plus, choisir un bon titre permet de rendre plus faciles les recherches des autres membres.

      Les titres de type "besoin d'aide" ou "problème" ne sont pas tolérés.

      Pour modifier votre titre, éditez le premier message de votre sujet.

      (titre originel : Problème de résultat)

      Liens conseillés

      • Partager sur Facebook
      • Partager sur Twitter
        24 mai 2022 à 20:08:44

        Bonjour,

        Tu utilises les même ports pour 2 choses différentes:

        // Déclarer les varibale Moteur
        ...
        int M1 = 5;    //M1 Direction Control
        int M2 = 6;    //M1 Direction Control
        ...
        
        // Capteur central
        int trigCentral = 5;
        int echoCentral = 6;

        Forcément ça ne va pas marcher

        • Partager sur Facebook
        • Partager sur Twitter

        En recherche d'emploi.

        Problème de résultat

        × 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