Partage
  • Partager sur Facebook
  • Partager sur Twitter

Aide Robot (Arduino)

    20 mai 2019 à 23:26:03

    Bonsoir,

    Voici un programme qui consiste à contrôler un robot avec une télécommande via bluetooth (une application depuis un smartphone) :

    #include <AFMotor.h> 
    
    AF_DCMotor motor3 (3, MOTOR34_1KHZ); 
    AF_DCMotor motor4 (4, MOTOR34_1KHZ); 
    Servo myServo; 
    
    String readString;
    String voice;
    
    void setup() {
      //set all the motor control pins to output
    
      Serial.begin(9600); 
    }
    
    void loop() 
    {
      while(Serial.available())
      {
        delay(50);
        char c = Serial.read();
        readString+=c;
      }
    
      if(readString.length() > 0) 
      {
    
        if(readString == "FORWARD")
        {
          Avancer();
        }
        
        if(readString == "BACK")
        {
          Reculer();
        }
    
        if(readString == "LEFT")
        {
          Gauche();
        }
    
        if(readString == "RIGHT")
        {
          Droite();
        }
    
        if(readString == "STOP")
        {
          Stop();
        }
    
        readString = "";
      }
    
    }
    
    
    void Avancer()
    {
      motor3.run(FORWARD);
      motor3.setSpeed(700);
      motor4.run(FORWARD);
      motor4.setSpeed(700);
      delay(2000);
      motor3.run(RELEASE);
      motor4.run(RELEASE);
    }
      
    void Reculer()
    {
      motor3.run(BACKWARD);
      motor3.setSpeed(700);
      motor4.run(BACKWARD);
      motor4.setSpeed(700);
      delay(2000);
      motor3.run(RELEASE);
      motor4.run(RELEASE);
    }
      
    void Droite()
    {
      motor3.run(FORWARD);
      motor3.setSpeed(190);
      motor4.run(BACKWARD);
      motor4.setSpeed(190);
      delay(1000);
      motor3.run(RELEASE);
      motor4.run(RELEASE);
    }
      
    void Gauche()
    {
      motor3.run(BACKWARD);
      motor3.setSpeed(190);
      motor4.run(FORWARD);
      motor4.setSpeed(190);
      delay(1000);
      motor3.run(RELEASE);
      motor4.run(RELEASE);
    }
    
    void Stop()
    {
      motor3.run(RELEASE);
      motor4.run(RELEASE);
    }

    ça marche normalement, mais quand j'ajoute un servomoteur (qui permet juste d'indiquer la direction, quand le robot va par exemple à droite, le servomoteur tourne a droite) ça ne marche plus, je ne comprends pas pourquoi.

    Voici le programme avec le servomoteur :

    #include <AFMotor.h> 
    #include <Servo.h>  
    
    AF_DCMotor motor3 (3, MOTOR34_1KHZ); 
    AF_DCMotor motor4 (4, MOTOR34_1KHZ); 
    Servo myServo; 
    
    String readString;
    String voice;
    
    void setup() {
      //set all the motor control pins to output
    
      Serial.begin(9600);
      myServo.attach(10); 
      myServo.write(130); 
    }
    
    void loop() 
    {
      while(Serial.available())
      {
        delay(50);
        char c = Serial.read();
        readString+=c;
      }
    
      if(readString.length() > 0) 
      {
    
        if(readString == "FORWARD")
        {
          Avancer();
        }
        
        if(readString == "BACK")
        {
          Reculer();
        }
    
        if(readString == "LEFT")
        {
          Gauche();
        }
    
        if(readString == "RIGHT")
        {
          Droite();
        }
    
        if(readString == "STOP")
        {
          Stop();
        }
    
        readString = "";
      }
    
    }
    
      
    
    void Avancer()
    {
      motor3.run(FORWARD);
      motor3.setSpeed(700);
      motor4.run(FORWARD);
      motor4.setSpeed(700);
      delay(2000);
      motor3.run(RELEASE);
      motor4.run(RELEASE);
    }
      
    void Reculer()
    {
      motor3.run(BACKWARD);
      motor3.setSpeed(700);
      motor4.run(BACKWARD);
      motor4.setSpeed(700);
      delay(2000);
      motor3.run(RELEASE);
      motor4.run(RELEASE);
    }
      
    void Droite()
    {
      myServo.write(80);
      delay(1000);
      myServo.write(130);
      delay(1000);
      motor3.run(FORWARD);
      motor3.setSpeed(190);
      motor4.run(BACKWARD);
      motor4.setSpeed(190);
      delay(1000);
      motor3.run(RELEASE);
      motor4.run(RELEASE);
    }
      
    void Gauche()
    {
      myServo.write(170);
      delay(1000);
      myServo.write(130);
      delay(1000);
      motor3.run(BACKWARD);
      motor3.setSpeed(190);
      motor4.run(FORWARD);
      motor4.setSpeed(190);
      delay(1000);
      motor3.run(RELEASE);
      motor4.run(RELEASE);
    }
    
    void Stop()
    {
      motor3.run(RELEASE);
      motor4.run(RELEASE);
    }

    Si quelqu'un a une solution, j'en serais ravi.

    -
    Edité par Nomad922 23 mai 2019 à 16:52:47

    • Partager sur Facebook
    • Partager sur Twitter

    Aide Robot (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