Différences entre versions de « Adafruit Motor Shield V2-Librairie »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
 
(Une version intermédiaire par le même utilisateur non affichée)
Ligne 95 : Ligne 95 :
 
Note MCHobby: vous pouvez asservir la vitesse en utilisant un senseur à effet hall et un aimant (pour compter le nbre de tour par minute).
 
Note MCHobby: vous pouvez asservir la vitesse en utilisant un senseur à effet hall et un aimant (pour compter le nbre de tour par minute).
  
== Classe Adafruit_DCMotor ==
+
== Classe Adafruit_StepperMotor  ==
  
 
{{ADFImage|Adafruit Motor Shield V2-Lib-03.jpg|480px}}
 
{{ADFImage|Adafruit Motor Shield V2-Lib-03.jpg|480px}}
  
The Adafruit_StepperMotor class represents a stepper motor attached to the shield. You must declare an Adafruit_StepperMotor for each stepper motor in your system.
+
La classe Adafruit_StepperMotor représente un moteur pas-à-pas branché sur le shield moteur. Vous devez déclarer une instance de Adafruit_StepperMotor pour chaque moteur pas-à-pas branché sur le projet.
  
=== Classe Adafruit_StepperMotor ===
+
=== Adafruit_StepperMotor() ===
 
  Adafruit_StepperMotor(void);
 
  Adafruit_StepperMotor(void);
  
The constructor takes no arguments. The stepper motor is typically initialized by assigning a stepper object retrieved from the shield as below:
+
Le constructeur n'a pas besoin de paramètre. L'objet est correctement initialisé par la classe Adafruit_MotorShield lorsqu'elle retourne l'objet sur demande. Voyez le code ci-dessous:
  
  <nowiki>// Create the motor shield object with the default I2C address
+
  <nowiki>// Créer un object motor shield avec l'adresse I2C par défaut
 
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
 
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
 
      
 
      
// Connect a stepper motor with 200 steps per revolution (1.8 degree)
+
// Connecter un moteur pas-à-pas (stepper) avec 200 pas/tour (soit 1.8 degré/pas)
// to motor port #2 (M3 and M4)
+
// sur le port #2 (soit les bornier M3 et M4)
 
Adafruit_StepperMotor *myMotor = AFMS.getStepper(200, 2);</nowiki>
 
Adafruit_StepperMotor *myMotor = AFMS.getStepper(200, 2);</nowiki>
  
=== step( steps, dir, style = SINGLE ) ===
+
=== step( steps, dir, style ) ===
 
  void step(uint16_t steps, uint8_t dir, uint8_t style = SINGLE);
 
  void step(uint16_t steps, uint8_t dir, uint8_t style = SINGLE);
  
The step() function controls stepper motion.
+
La fonction step() contrôle le déplacement en pas.
  
* The first parameter specifies how many steps to move.
+
* '''step''': signifiant littéralement "pas", indique le nombre de pas dont il faut se déplacer.
* The second parameter specifies the direction: FORWARD or BACKWARD
+
* '''dir''': Indique la direction de déplacement. FORWARD pour avant ou BACKWARD pour arrière.
* The last parameter specifies the stepping style: SINGLE, DOUBLE, INTERLEAVED or MICROSTEP
+
* ''style'': Paramètre optionnel. Fixé à SINGLE par défaut. Ce paramètre spécifie le mode de stepping à l'aide des valeur SINGLE, DOUBLE, INTERLEAVED ou MICROSTEP
  
The ste() function is synchronous and does not return until all steps are complete. When complete the motor remains powered to apply "holding torque" to maintain position.
+
La fonction step() son synchrone. Cela signifie que le programme reste bloqué durant l'envoi des pas au moteur pas-à-pas. Lorsque le déplacement est complet, l'axe est maintenu en position (dit "holding torque" pour couple de maintient) et votre programme continue sont exécution.
  
 
===  setSpeed(speed) ===
 
===  setSpeed(speed) ===
 
  void setSpeed(uint16_t);
 
  void setSpeed(uint16_t);
  
The setSpeed() function controls the speed of the stepper motor rotation. Speed is specified in RPM.
+
La fonction setSpeed() contrôle la vitesse du moteur durant la rotation.
  
=== onestep( dir, style) ===
+
* '''speed''': signifiant littéralement "vitesse" permet de définit la vitesse en RPM (Rotation par minute).
 +
 
 +
[http://forums.adafruit.com/viewtopic.php?f=31&t=42477 Ce fil de discussion AdaFruit] mentionne une vitesse Max de 75 RPM dès le début. Il mentionne également la modification de TWI_FREQ pour autorisant des vitesses supérieurs.
 +
 
 +
=== onestep(dir, style) ===
 
  uint8_t onestep(uint8_t dir, uint8_t style);
 
  uint8_t onestep(uint8_t dir, uint8_t style);
  
The oneStep() function is a low-level internal function called by step(). But it can be useful to call on its own to implement more advanced functions such as acceleration or coordinating simultaneous movement of multiple stepper motors. The direction and style parameters are the same as for step(), but onestep() steps exactly once.
+
Cette fonction de bas niveau (fonction interne) fait avancer le moteur d'un pas. onestep() est appelé par la fonction step().  
 +
 
 +
Elle peut être utilise si vous désirez implémenter vos propres fonctions évoluées tel que l’accélération ou coordination de mouvement de plusieurs moteurs.  
 +
 
 +
Les paramètres ''dir'' et ''style'' sont identique à la fonction step()... mais onestep() ne fait qu'un seul pas à la fois.
  
Note: Calling step() with a step count of 1 is not the same as calling onestep(). The step function has a delay based on the speed set in setSpeed(). onestep() has no delay.
+
Note: faire un appel à step() avec un nombre de pas égale à 1 '''n'est pas équivalent à''' l'appel de onestep(). La fonction step() introduit un délai entre les pas... ce délai dépendant de la vitesse (RPM) mentionnée dans la fonction setSpeed(). onestep() n'a pas de délai/pause.
  
 
=== release() ===
 
=== release() ===

Version actuelle datée du 6 janvier 2014 à 13:56


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Classe Adafruit_MotorShield

Adafruit Motor Shield V2-Lib-01.jpg
Crédit: AdaFruit Industries www.adafruit.com

La classe Adafruit_MotorShield représente l'équivalent physique d'un "motor shield" et doit être instancier avant une quelconque utilisation de classes DCMotors ou StepperMotors. Vous aurez besoin de déclarer un Adafruit_MotorShield pour chaque shield de votre système.

Adafruit_MotorShield(addr)

Adafruit_MotorShield(uint8_t addr = 0x60);

Construteur de la classe Adafruit_MotorShield qui accepte l'adresse I2C du shield en paramètre optionnel. L'adresse par défaut du construction est (0x60) et correspond à l'adresse par défaut des cartes. Si vous voulez utiliser plusieurs "Motor Shield" sur votre projet, ils doivent chacun avoir une adresse unique.

begin(freq)

void begin(uint16_t freq = 1600);

La fonction begin() doit être appelée dans setup() afin d'initialiser les shield.

Un paramètre freq (Fréquence) peut être utilisé pour préciser une autre valeur différente de la valeur par défaut.

La valeur par défaut 1600 est fixée au maximum de 1.6KHz pour la Fréquence PWM.

getMotor(n)

Adafruit_DCMotor *getMotor(uint8_t n);

Cette fonction retourne l'un des 4 objets moteurs pré-définit contrôlé par le shield.

Le paramètre n de 1 à 4 correspond à l'un 4 canaux prédéfinit.

getStepper(steps, n)

Adafruit_StepperMotor *getStepper(uint16_t steps, uint8_t n);

Cette fonction retourne l'un des deux objets moteur pas-à-pas prédéfini sur le shield.

Le premier paramètre step indique le nombre de pas par révolution (souvent 200).

Le second paramètre n spécifie l'un des deux 2 canaux prédéfinit pour les moteurs pas-à-pas.

setPWM( pin, val)

void setPWM(uint8_t pin, uint16_t val);

Fonction de bas niveau permettant de contrôler les broches sur le controleur PWM du motor shield.

Cette fonction est destinée uniquement à un usage interne.

setPin(pin, val)

void setPin(uint8_t pin, boolean val);

Fonction de bas niveau permettant de contrôler les broches sur le controleur PWM du motor shield.

Cette fonction est destinée uniquement à un usage interne.

Classe Adafruit_DCMotor

Adafruit Motor Shield V2-Lib-02.jpg
Crédit: AdaFruit Industries www.adafruit.com

La calsse Adafruit_DCMotor représente un moteur continu (dit "DC Motor" en anglais) branché sur le shield. Vous devez déclarer une objet Adafruit_DCMotor pour chaque moteur continu branché sur le motor shield.

Adafruit_DCMotor()

Le constructeur de Adafruit_DCMotor n'as pas besoin de paramètres.

L'objet Adafruit_DCMotor est initialisé lors de l'obtention de cet objet par l'intermédiaire l'objet Adafruit_MotorShield contrôlant le shield (voir exemple ci-dessous)

// Créer un objet motor shield avec l'adresse I2C par défaut
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
     
// Sélectionner le canal (bornier/port) M1, M2, M3 or M4. 
// Dans ce cas, il s'agit de M1 stocké dans myMotor
Adafruit_DCMotor *myMotor = AFMS.getMotor(1);
// Vous pouvez également créer un autre objet 
// moteur sur le bornier/port M2 (et stocké dans myOtherMotor) 
Adafruit_DCMotor *myOtherMotor = AFMS.getMotor(2);

run( direction )

void run(uint8_t direction);

La fonction run() contrôle l'état du moteur. Le paramètre peut avoir 3 valeurs:

  • FORWARD: Rotation dans le sens AVANT
  • REVERSE: Rotation dans le sens ARRIERE
  • RELEASE: Arrêt

Notez que les directions "FORWARD" (avant) et "REVERSE" (arrière) sont arbitraires. Si elle ne correspond pas au sens de rotation réel de votre moteur, il suffit d'inversion le branchement du moteur sur le bornier.

L'option "RELEASE" (arrêt) met simplement le moteur hors tension. Le moteur n'est pas "freiné" ni bloqué.

setSpeed(speed)

void setSpeed(uint8_t speed);

La fonction setSpeed() contrôle le niveau de puissance délivré au moteur. Le parametre speed (signifiant "vitesse") est une valeur comprise entre 0 et 255.

Notez que setSpeed ne fait que contrôler la puissance délivrée au moteur. La vitesse réelle du moteur dépend de plusieurs facteurs incluant le moteur, la puissance de l'alimentation, la charge.

Note MCHobby: vous pouvez asservir la vitesse en utilisant un senseur à effet hall et un aimant (pour compter le nbre de tour par minute).

Classe Adafruit_StepperMotor

Adafruit Motor Shield V2-Lib-03.jpg
Crédit: AdaFruit Industries www.adafruit.com

La classe Adafruit_StepperMotor représente un moteur pas-à-pas branché sur le shield moteur. Vous devez déclarer une instance de Adafruit_StepperMotor pour chaque moteur pas-à-pas branché sur le projet.

Adafruit_StepperMotor()

Adafruit_StepperMotor(void);

Le constructeur n'a pas besoin de paramètre. L'objet est correctement initialisé par la classe Adafruit_MotorShield lorsqu'elle retourne l'objet sur demande. Voyez le code ci-dessous:

// Créer un object motor shield avec l'adresse I2C par défaut
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
     
// Connecter un moteur pas-à-pas (stepper) avec 200 pas/tour (soit 1.8 degré/pas)
// sur le port #2 (soit les bornier M3 et M4)
Adafruit_StepperMotor *myMotor = AFMS.getStepper(200, 2);

step( steps, dir, style )

void step(uint16_t steps, uint8_t dir, uint8_t style = SINGLE);

La fonction step() contrôle le déplacement en pas.

  • step: signifiant littéralement "pas", indique le nombre de pas dont il faut se déplacer.
  • dir: Indique la direction de déplacement. FORWARD pour avant ou BACKWARD pour arrière.
  • style: Paramètre optionnel. Fixé à SINGLE par défaut. Ce paramètre spécifie le mode de stepping à l'aide des valeur SINGLE, DOUBLE, INTERLEAVED ou MICROSTEP

La fonction step() son synchrone. Cela signifie que le programme reste bloqué durant l'envoi des pas au moteur pas-à-pas. Lorsque le déplacement est complet, l'axe est maintenu en position (dit "holding torque" pour couple de maintient) et votre programme continue sont exécution.

setSpeed(speed)

void setSpeed(uint16_t);

La fonction setSpeed() contrôle la vitesse du moteur durant la rotation.

  • speed: signifiant littéralement "vitesse" permet de définit la vitesse en RPM (Rotation par minute).

Ce fil de discussion AdaFruit mentionne une vitesse Max de 75 RPM dès le début. Il mentionne également la modification de TWI_FREQ pour autorisant des vitesses supérieurs.

onestep(dir, style)

uint8_t onestep(uint8_t dir, uint8_t style);

Cette fonction de bas niveau (fonction interne) fait avancer le moteur d'un pas. onestep() est appelé par la fonction step().

Elle peut être utilise si vous désirez implémenter vos propres fonctions évoluées tel que l’accélération ou coordination de mouvement de plusieurs moteurs.

Les paramètres dir et style sont identique à la fonction step()... mais onestep() ne fait qu'un seul pas à la fois.

Note: faire un appel à step() avec un nombre de pas égale à 1 n'est pas équivalent à l'appel de onestep(). La fonction step() introduit un délai entre les pas... ce délai dépendant de la vitesse (RPM) mentionnée dans la fonction setSpeed(). onestep() n'a pas de délai/pause.

release()

void release(void);

The release() function removes all power from the motor. Call this function to reduce power requirements if holding torque is not required to maintain position.


Source: Adafruit Motor Shield V2 for Arduino créé par LadyAda pour AdaFruit Industries. Crédit [www.adafruit.com AdaFruit Industries]

Traduit par Meurisse D. pour MCHobby.be

Nos remerciements à Mr Pierre M. pour ses suggestions de correction.

Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.