Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Arduino] controler hacheur avec carte Arduino II

    26 mars 2015 à 16:32:50

    bonjours j'avais céréé un topic mais il à été supprimer car il avait été résolu mais enfaite je viens de m'apercevoir que non.

    voici mon code arduino :

    #include <Servo.h>
    
    Servo Servodir;
    Servo Hacheur;
    int interupteur = 2;
    int potarvit = A0;
    int potardir = A3;
    int anglevit = 0;
    int angledir= 0;
    int valvit=0;
    int valdir=0;
    int bp = 0;
    
    void setup()
    {
      Servodir.attach(8);
      Hacheur.attach(4);
      Serial.begin(9600);
      //on met le bouton en entrée
      pinMode(interupteur, INPUT);
      //on active la résistance de pull-up en mettant la broche à l'état haut (mais cela reste toujours une entrée)
      digitalWrite(interupteur, HIGH);
    }
    void loop()
    {
    
    
        valvit = analogRead(potarvit);
        valdir = analogRead(potardir);
         
      
         
        // Si l’interrupteur est fermé, la voiture devrait reculer
        if ( digitalRead(interupteur) == 1 ) {
            // Donc on map l'angle du potar sur [0:90] pour la marche arrière
            angledir = map(valdir, 0, 1023, 0, 90);
              anglevit = map(valvit, 0, 1023, -90, 90);
        // Si l'interrupteur est ouvert, la voiture devrait avancer
        } else {
            // Donc on map l'angle du potar sur [90:180] pour la marche avant
            angledir = map(valdir, 0, 1023, 90, 180);
            anglevit = map(valvit, 0, 1023, -90, 90);
        }
         
        Servodir.write(anglevit);
        Hacheur.write(angledir);
         
        Serial.print("anglevit");
        Serial.println(anglevit);
        Serial.print("angledir");
        Serial.println(angledir);
         
        Serial.print("BP");
        Serial.println(digitalRead(interupteur));
         
        delay(100);
      }
    
    
    
    
    

    le problème c'est que le hacheur en pate 4 ne fonctionne pas bien je sais pas si ca viens du code ou pas.

    Le bug c'est que quand je vais en arrière il n'y a pas de progression roule direct en arrière :/

    merci

    • Partager sur Facebook
    • Partager sur Twitter
      26 mars 2015 à 22:35:36

      Bonsoir,

      si l'on regarde la librairie myservo.write(angle) on a 0<= angle <= 180, or dans le code l'angle peut être négatif.  


      • Partager sur Facebook
      • Partager sur Twitter
        27 mars 2015 à 8:14:21

        Re-bonjour Nicolas ;)

        Ton topic n'a pas été supprimé : il est toujours ici : http://openclassrooms.com/forum/sujet/arduino-resolue-controler-hacheur?page=1#message-88281254

        Une partie du problème est y présenté :

        lorrio a écrit:

        Quand au servo de direction, ce n'est pas sur [-90:90] que tu dois faire le mapping mais sur [0:180] ;)(la position centrale étant à 90°)

        Je te conseille donc de modifier très légèrement ton code :

        void loop()
        {
        
            valvit = analogRead(potarvit);
            valdir = analogRead(potardir);
        	
        	angledir = map(valdir, 0, 1023, 0, 180);
        	
        	[...]

        Je dirais que tu as aussi un problème de direction de mapping concernant la vitesse :

        - en marche avant : la valeur à mapper va de 90 (vitesse faible) à 180 (à fond) => la valeur s'incrémente lorsque la vitesse augmente

        - en marche arrière : la valeur à mapper va de 90 (vitesse faible) à 0 (à fond) => la valeur se décrémente lorsque la vitesse augmente

        Du coup, la ligne 36 devrait plutôt être : angledir = map( (valdir - 1023) , 0, 1023, 0, 90);

        Ce (valdir - 1023) permet d'inverser le sens du potar pour retourner sur une valeur incrémentale ;)

        Ou alors, tu peux essayer : angledir = map(valdir, 0, 1023, 90, 0); mais je ne sais pas trop comment se comporte map sur des intervalles inversés.

        -
        Edité par lorrio 27 mars 2015 à 8:22:07

        • Partager sur Facebook
        • Partager sur Twitter

        [Arduino] controler hacheur avec carte Arduino II

        × 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