MTulnStepper en détail
Gestion par événements pour UNO, Nano, Mega

Pour un moteur pas à pas, si le pilote est un ULN2003 (moteur 28BYJ48) ou un moteur unipolaire dont on commande directement les 4 bobines, utilisez l'objet MTulnStepper. Sinon, voir du côté de MTstepStepper.

Include à rajouter

#include <MTobjects.h> // Voir http://arduino.dansetrad.fr/MTobjects

Je conseille fortement de laisser le commentaire, si une autre personne voulait essayer le programme, elle aurait directement un lien de téléchargement. C'est valable pour toutes les bibliothèques que vous utilisez.

Constantes utiles

RPM
RPS
NON_CONNECTEE
DEMI_PAS
PAS_ENTIERS
UNE_PHASE
SENS_PAR_DEFAUT
SENS_INVERSE
CONTINUE
PAS_D_ACTION
PAS_D_ACCELERATION

RPM indique une constante en tr/mn (rotate per minute)
RPM indique une constante en tr/s (rotate per second)
NON_CONNECTEE pour une broche A2 et B2 non connectée
DEMI_PAS, PAS_ENTIERS, UNE_PHASE pour définir le mode
SENS_PAR_DEFAUT, SENS_INVERSE pour inverser ou non le sens
CONTINUE permet la rotation continue pour move, moveTo
PAS_D_ACTION paramètre par défaut si on n'appelle pas de fonction en fin de rotation

Commentaires utiles

pas_ou_micro_pas
micro_secondes
micro_secondes_par_pas
position_absolue
accelerations_sur
pin_A1
pin_B1
pin_A2
pin_B2

Ces commentaires sont des mots que l'on peut rajouter n'importe où et qui sont ignorés par le compilateur.

Constructeur

MTulnStepper(pinA1, pinB1,
             pinA2 = NON_CONNECTEE,
             pinB2 = NON_CONNECTEE,
             acceleration = 2048 pas_ou_micro_pas,
             mode = PAS_ENTIERS,
             speed = 0.2 RPS,
             reverse= SENS_PAR_DEFAUT,
             onStopFunction= PAS_D_ACTION,
             stepsPerTurn = 2048);

Fonctions utiles

void setSpeed(float speed);
void move(int32_t nbSteps);
void moveAndWait(int32_t nbSteps);
void stop(void);
void wait(void);
bool stopped(void);
void setPosition(int_t position);
int32_t getPosition(void);
void setOrigin(void);
void disable(void);
void enable(void);
int32_t getRest(void);
void onStop(void);

setSpeed(<valeur numérique> micro_secondes_par_pas): programme une vitesse de rotation
setSpeed(<valeur numérique> RPS): programme une vitesse de rotation
setSpeed(<valeur numérique> RPM): programme une vitesse de rotation
move: avance (si nbSteps>0) ou recule (si nbSteps<0) de nbSteps pas. Par défaut les nombres de pas sont sur 32 bits, mais on peut les passer en 16 bits, voir MTobjects.h . La fonction n'est pas bloquante, on sort immédiatement, le moteur continuera sa course sans que l'on s'en occupe
move(CONTINUE): avance sans arrêt (on peut l'arrêter par stop(); !)
move(-CONTINUE): recule sans arrêt
moveAndWait: avance ou recule mais la fonction attend l'arrêt
moveAndWait(CONTINUE): avance ou recule (avec -CONTINUE) mais la fonction attend l'arrêt, dans ce cas uniquement par stop()
stop: arrête le moteur
wait: fonction bloquante tant que le moteur tourne
stopped: retourne true si le moteur est arrêté
setPosition: fixe arbitrairement une position
getPosition: retourne la position du moteur
setOrigin: fixe ici la position d'origine (p.ex après une mise en origine machine)
disable: désactive les sorties du driver
enable: réactive les sorties du driver
getRest: retourne le nombre de pas restant à faire
onStop: fonction à surcharger appelée quand le moteur s'arrête et à l'initialisation

Fonctions bonus

void setReverse(boolean);
void setOnStopFunction(onStopFunction);
void setStepsPerTurn(word stepsPerTurn);
word getStepsPerTurn(void);
float getSpeedMicrosecond(void);
float getSpeedRPS(void);
float getSpeedRPM(void);
void setHalfStep(char mode);
void setAcceleration(int_t acceleration);

setReverse(SENS_INVERSE): permet d'inverser le sens de rotation
setReverse(SENS_PAR_DEFAUT:) permet de ne plus inverser le sens de rotation
setOnStopFunction: change la fonction à appeler lors de l'arrêt
setOnStopFunction: sans paramètres supprime la fonction appelée lors de l'arrêt
setStepsPerTurn: fixe le nombre de pas ou demi-pas par tour
setStepsPerTurn: sans paramètres fixe le nombre de pas par tour à 2048
getStepsPerTurn: retourne le nombre de pas ou demi-pas par tour
getSpeedMicrosecond: retourne le temps entre 2 pas en µs
getSpeedRPS: retourne la vitesse en tr/s
getSpeedRPM: retourne la vitesse en tr/mn
setMode(PAS_ENTIERS): passe en mode pas entier, deux phases à la fois. Utiliser après setStepsPerTurn()
setMode(UNE_PHASE): passe en mode une phase à la fois. Utiliser après setStepsPerTurn()
setMode(DEMI_PAS): passe en mode demi-pas. Utiliser après setStepsPerTurn()
setAcceleration: change l'accélération (en pas)

Exemples