Accélération moteur cc avec joystick
Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Accélération moteur cc avec joystick



  1. #1
    invite3203bcfe

    Accélération moteur cc avec joystick


    ------

    Bonjour,

    J'ai deux moteurs cc actionnés par un joystick analogique bidirectionnel branchés sur une arduino motorshield rev3. La vitesse des moteurs est contrôlé par des potentiomètres. Seulement, j'aimerais ajouter une fonction d’accélération en fonction de la valeur de mon joystick afin que mon moteur se mette en route progressivement car mon code permet seulement de lancer ou pas le moteur à une certaine vitesse choisie par le potentiomètre. Pouvez-vous m'aider ? Je vous remercie
    Voici la loop que j'ai actuellement et qui fonctionne très bien
    Code:
    void loop() {
    
      int joystickX = analogRead(PIN_JOYSTICK_X); 
      int joystickY = analogRead(PIN_JOYSTICK_Y);
     
      
         sensorValue_1 = analogRead(A4);  // lire la valeur en entrée de la Pin A4
         sensorValue_2 = analogRead(A5);  // lire la valeur en entrée de la Pin A5
        
        // conversion de la valeur sensorvalue (qui va de 0 à 1023)
       // en une valeur entre 0 et 255 outputvalue
        
       outputValue_1 = map(sensorValue_1, 0, 1023, 0, 255);
        outputValue_2 = map(sensorValue_2, 0, 1023, 0, 255);
        
       // outputvalue permet de controler la vitesse du moteur
      
     if (joystickX > 700) {  
        // Si la valeur X est strictement supérieur à 700 le moteur A avance
        analogWrite(PIN_VITESSE_MOTEUR_A, outputValue_1);
        digitalWrite(PIN_SENS_MOTEUR_A, HIGH);
      } 
    
      else if (joystickX < 300) {  
        // Sinon si la valeur X est strictement inférieur à 300 le moteur A recule
        analogWrite(PIN_VITESSE_MOTEUR_A, outputValue_1);
        digitalWrite(PIN_SENS_MOTEUR_A, LOW);
      } 
      else {
        // Sinon si la valeur X est comprise entre 300 et 700 (bornes inclusent) le moteur A ne bouge pas
        digitalWrite(PIN_VITESSE_MOTEUR_A, LOW);
      }
    
      if (joystickY > 700) {  
        // Si la valeur Y est strictement supérieur à 700 le moteur B avance
        analogWrite(PIN_VITESSE_MOTEUR_B, outputValue_2);
        digitalWrite(PIN_SENS_MOTEUR_B, HIGH);
      } 
      else if (joystickY < 300) {   
        // Sinon si la valeur Y est strictement inférieur à 300 le moteur B recule
        analogWrite(PIN_VITESSE_MOTEUR_B, outputValue_2);
        digitalWrite(PIN_SENS_MOTEUR_B, LOW);
      } 
      else {
        // Sinon si la valeur Y est comprise entre 300 et 700 (bornes inclusent) le moteur B ne bouge pas
        digitalWrite(PIN_VITESSE_MOTEUR_B,LOW); 
      } 
    }

    -----

  2. #2
    jiherve

    Re : Accélération moteur cc avec joystick

    Bonsoir,
    Au lieu d'envoyer directement la position du joystick tu envoies le résultat de l’intégration de la différence de la position actuelle et de celle du neutre avec une mise à l’échelle.
    commande_n = commande_(n-1)+ Pos Joystick_n - Pos_Joystick_neutre.
    Il faudra gérer la saturation.
    autrement un filtre du premier ordre classique.
    commande_n = k* commande_(n-1)+ (1-K)*Pos_Joystick_n
    avec k < 1
    JR
    l'électronique c'est pas du vaudou!

  3. #3
    invite3203bcfe

    Re : Accélération moteur cc avec joystick

    Bonjour
    Merci pour ta réponse
    je suis pas sur de tout bien saisir. Comment intégrer cela a mon code ?

  4. #4
    jiherve

    Re : Accélération moteur cc avec joystick

    Bonjour,
    Code:
       outputValue_1H = map(sensorValue_1, 0, 1023, 0, 255);
     
       outputValue_1M = outputValue_1H /2;
       outputValue_1L = outputValue_1H /4;
    ...
     if (joystickX > 700) {  
        // Si la valeur X est strictement supérieur à 700 le moteur A avance
        analogWrite(PIN_VITESSE_MOTEUR_A, outputValue_1H);
        digitalWrite(PIN_SENS_MOTEUR_A, HIGH);
      } 
    
     else if (joystickX > 650) {  
        // Sinon si la valeur X est strictement inférieur à 300 le moteur A recule
        analogWrite(PIN_VITESSE_MOTEUR_A, outputValue_1M);
        digitalWrite(PIN_SENS_MOTEUR_A, HIGH);
      } 
     
     else if (joystickX > 550) {  
        // Sinon si la valeur X est strictement inférieur à 300 le moteur A recule
        analogWrite(PIN_VITESSE_MOTEUR_A, outputValue_1L);
        digitalWrite(PIN_SENS_MOTEUR_A, HIGH);
      } 
     
      else if (joystickX < 300) {  
        // Sinon si la valeur X est strictement inférieur à 300 le moteur A recule
        analogWrite(PIN_VITESSE_MOTEUR_A, outputValue_1H);
        digitalWrite(PIN_SENS_MOTEUR_A, LOW);
      } 
      
     else if (joystickX < 350) {  
        // Sinon si la valeur X est strictement inférieur à 300 le moteur A recule
        analogWrite(PIN_VITESSE_MOTEUR_A, outputValue_1M);
        digitalWrite(PIN_SENS_MOTEUR_A, LOW);
    
      } 
      else if (joystickX < 450) {  
        // Sinon si la valeur X est strictement inférieur à 300 le moteur A recule
        analogWrite(PIN_VITESSE_MOTEUR_A, outputValue_1L);
        digitalWrite(PIN_SENS_MOTEUR_A, LOW);
     } 
      else {
        // Sinon si la valeur X est comprise entre 550 et 450 (bornes inclusent) le moteur A ne bouge pas
        digitalWrite(PIN_VITESSE_MOTEUR_A, LOW);
      }
    cela suppose que si une condition est vrai alors il n'y a pas évaluation des autres, je ne connais pas le charabia arduino, mois je programme en assembleur.
    JR
    l'électronique c'est pas du vaudou!

  5. A voir en vidéo sur Futura
  6. #5
    invite3203bcfe

    Re : Accélération moteur cc avec joystick

    Merci beaucoup ! J'essaye cela et te tiens au courant

Discussions similaires

  1. controle moteur joystick
    Par invite2ec54172 dans le forum Électronique
    Réponses: 2
    Dernier message: 20/08/2011, 13h49
  2. Commande moteur pas/pas par Joystick
    Par invite474d3600 dans le forum Électronique
    Réponses: 3
    Dernier message: 04/01/2010, 06h10
  3. Commandez un mini moteur par usb et par joystick?
    Par thomas5701 dans le forum Électronique
    Réponses: 6
    Dernier message: 03/09/2008, 21h15
  4. Moteur pas à pas commandé par un joystick
    Par invite4fbd11ae dans le forum Électronique
    Réponses: 19
    Dernier message: 05/05/2008, 17h39
  5. Controler deux moteur à l'aide d'un joystick
    Par inviteec5483ba dans le forum Électronique
    Réponses: 2
    Dernier message: 27/04/2008, 08h45
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...