IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres systèmes Discussion :

Question sur la lib stepper.h


Sujet :

Autres systèmes

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    IRIS, ATS, 3IL Rodez
    Inscrit en
    Juin 2014
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : IRIS, ATS, 3IL Rodez

    Informations forums :
    Inscription : Juin 2014
    Messages : 27
    Points : 26
    Points
    26
    Par défaut Question sur la lib stepper.h
    Bonsoir,
    Je possède une paire de moteurs bipolaires 28BYJ-48, que je fait tourner grâce avec ma Arduino Uno. Actuellement je décortique la librairie stepper.h fournie avec l'IDE ardui, et je me pose la question suivante :

    Quel est ce curieux calcul que subit step_delay dans la méthode SetSpeed ? step_delay est sensé représenter le délai entre les pas, en ms.
    Dans les exemples donnés le paramètre passé est identifié comme étant le nombre de rpm (rotation per minutes?)...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    /*Sets the speed in revs per minute*/
    void Stepper::setSpeed(long P_whatSpeed) {
        this->step_delay = 60L * 1000L / this->number_of_steps / P_whatSpeed; //number_of_steps vaut ici 64
    }

    Si je rentre en paramètre 128 je me retrouve avec this->step_delay = 7.3ms, et sachant que step_delay est une valeur entière de type unsigned long... bah la valeur est tronquée a 7... Drôle de méthode... Pour ne pas dire drôle de librairie...

    Je ne comprend pas le sens de ce calcul... pourquoi ne pas demander une vitesse directement, pourquoi triturer step_delay à coup de divisions et de multiplications... pourquoi 60 * 1000...


  2. #2
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2014
    Messages : 21
    Points : 50
    Points
    50
    Par défaut
    Bonjour,

    Si je ne me trompe pas :

    tu veut faire 128 tours / min et il y a 64 pas par tour donc tu veut faire 128*64=8192 pas par minute.
    un sleep ce donne en milliseconde donc 60*1000 pour les minutes / par ton nombre de pas donc 60000/8192=7,3ms.
    d'ou le calcule 60*1000/(64*128) ==> 60 * 1000 / 64 (this->number_of_steps) / 128 (P_whatSpeed)
    tu auras un sleep de 7 ms entre chaque pas ce qui signifie que tu va effectuer réellement 8571,4 pas par minutes soit 133,9 tours.

Discussions similaires

  1. [C/NCURSES] Quelque question sur la lib curses.h
    Par leoz2007 dans le forum Débuter
    Réponses: 0
    Dernier message: 01/07/2009, 12h05
  2. Réponses: 2
    Dernier message: 06/10/2008, 13h20
  3. Question sur MFC42U.Lib
    Par cjacquel dans le forum MFC
    Réponses: 1
    Dernier message: 22/06/2007, 09h49
  4. Question sur les librairies .lib
    Par elvivo dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 05/10/2005, 20h06
  5. question sur les message box !
    Par krown dans le forum Langage
    Réponses: 7
    Dernier message: 02/08/2002, 16h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo