Code Arduino - pilotage de deux MCC à l'aide de deux capteurs à ultrasons
Répondre à la discussion
Affichage des résultats 1 à 1 sur 1

Code Arduino - pilotage de deux MCC à l'aide de deux capteurs à ultrasons



  1. #1
    invite74d148a5

    Code Arduino - pilotage de deux MCC à l'aide de deux capteurs à ultrasons


    ------

    Bonjour,

    Je suis en CPGE PT, et je dois rendre pour le 9 juin mon projet de TIPE.
    J'ai décidé de travailler sur un bras robotisé pilotable normalement via une télécommande, seulement, moi je souhaite le piloter grâce à des capteurs à ultrasons. En effet, ce bras robotisé est censé savoir analyser et rendre compte de son environnement, et donc grâce à deux capteurs à ultrasons placés dessus il détectera un objet et devra le saisir.
    Je suis donc en train de coder un programme Arduino depuis maintenant un bon bout de temps, mais l'échéance arrivant à grand pas et mon code n'avançant pas j'aurai besoin d'aide.
    Je vous explique ce que je souhaiterai coder:
    Je voudrais contrôler le bras suivant 2 axes. Un premier moteur se mettrait en marche si et seulement si la distance entre le capteur et l'objet est inférieure ou égale à une distance minimale; sinon il reste éteint. Par la suite, lorsque ce moteur est en marche, lorsque la distance entre l'objet et le second capteur est inférieure à une distance minimale 2, le premier moteur s'éteint, le second s'allume pendant seulement 1s, puis à l'issu de cette seconde, le moteur 2 s'éteint et le moteur se rallume mais avec un sens de rotation inversé (pour que le bras puisse remonté après avoir saisi l'objet).
    Je ne maitrise pas bien Arduino et mes codes arrêtent de fonctionner du jour au lendemain.
    Je vous joins ici mon code pour que vous puissiez vous rendre compte de ce que j'ai fait.

    Code:
    #define trigPin 6     //Trig 
    #define trigPin2 4    //Trig 
    #define echoPin 7      //Echo
    #define echoPin2 5      //Echo
    int M1 = 12;
    int M2 = 13;
    int E1 = 3;
    int E2 = 11;
    int mindist = 20;
    
    void setup() {
      // put your setup code here, to run once:
     pinMode(M1,OUTPUT);
     pinMode(M2,OUTPUT);
     Serial.begin (9600);  
     pinMode(trigPin, OUTPUT);  //On défini Trig comme une sortie
     pinMode(echoPin, INPUT);   //On défini Echo comme une entrée
     pinMode(trigPin2, OUTPUT);  //On défini Trig comme une sortie
     pinMode(echoPin2, INPUT);   //On défini Echo comme une entrée
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
    long duree, distance;
      digitalWrite(trigPin, LOW);  
      delayMicroseconds(2); 
      digitalWrite(trigPin, HIGH);
      delayMicroseconds(10); //Trig envois pendant 10ms 
      digitalWrite(trigPin, LOW);
    long duree2, distance2;
      digitalWrite(trigPin2, LOW);  
      delayMicroseconds(2); 
      digitalWrite(trigPin2, HIGH);
      delayMicroseconds(10); //Trig envois pendant 10ms 
      digitalWrite(trigPin2, LOW);
      
      // On calcul le temps pour l'aller retour du signal
      duree = pulseIn(echoPin, HIGH);
      distance = duree*340/(2*10000); 
      // On calcul le temps pour l'aller retour du signal
      duree2 = pulseIn(echoPin2, HIGH);
      distance2 = duree2*340/(2*10000);  
       
        
      //Pour le moniteur série
      if ( distance <= 0){  
        Serial.println("Hors de portee");
      }
      else {
        Serial.print(distance);
        Serial.print(" cm ");
        Serial.print(duree);
        Serial.println(" ms");
      }
      delay(100);
      
     if ( distance2 <= 0){  
        Serial.println("Hors de portee");
      }
      else {
        Serial.print(distance2);
        Serial.print(" cm ");
        Serial.print(duree2);
        Serial.println(" ms");
      }
      delay(100);
      
    
       
      if (distance < mindist) {  
         digitalWrite(M1,HIGH);
         analogWrite(E1,255);
      }     
    else {   //sinon on éteind la led
        digitalWrite(M1,LOW);
        analogWrite(E1,0);
      }
    
     
      
    if (distance2 < mindist) { 
         digitalWrite(M2,HIGH);
         analogWrite(E2,255);
         digitalWrite(M1,LOW);
         analogWrite(E1,0);
    
    }
    
    }
    Merci d'avance pour votre aide précieuse.

    Clémence

    -----
    Images attachées Images attachées
    Dernière modification par Antoane ; 21/05/2021 à 18h11. Motif: Ajout balises [/code]

Discussions similaires

  1. Aide pour savoir comment joindre deux données distinctes provenant de deux tables différentes alors
    Par inviteeadb7643 dans le forum Programmation et langages, Algorithmique
    Réponses: 1
    Dernier message: 30/10/2019, 11h27
  2. Pilotage VMC à deux vitesses?
    Par invite84b685d7 dans le forum Bricolage et décoration
    Réponses: 8
    Dernier message: 28/09/2017, 09h32
  3. [Exercices] [exo] Calculer le temps parcourus entre deux capteurs de fin de course avec Arduino
    Par invite3a70d1aa dans le forum Électronique
    Réponses: 26
    Dernier message: 20/03/2016, 19h59
  4. ARDUINO : Détection de sols à l'aide d'ultrasons
    Par invitea6c5c06b dans le forum Électronique
    Réponses: 1
    Dernier message: 26/02/2015, 17h29
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...