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

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
 
(5 versions intermédiaires par le même utilisateur non affichées)
Ligne 4 : Ligne 4 :
 
{{ADFImage|Adafruit Motor Shield V2-Intro-01.jpg|640px}}
 
{{ADFImage|Adafruit Motor Shield V2-Intro-01.jpg|640px}}
  
One of the cool things about this shield design is that it is possible to stack shields. Every shield you stack can control another 2 steppers or 4 DC motors (or a mix of the two)
+
L'une des avancées les plus géniales de cette nouvelle génération de Motor Shield, c'est qu'ils peuvent enfin être empilés. Chaque shield ajouté sur la pile est capable de controller 2 moteurs pas-à-pas ou 4 moteur continu en plus 2 (ou un mélange des deux)
  
You can stack up to 32 shields for a total of 64 steppers or 128 DC motors! Most people will probably just stack two or maybe three but hey, you never know. (PS if you drive 64 steppers from one of these shields send us a photo, OK?)
+
Vous pouvez empiler jusqu'à 32 shields, ce qui réprésente un total de 64 moteur pas-à-pas ou de 128 moteurs continu! La plupart des utilisateurs n'aurons besoin que de 2 ou 3 shields mais qui sait... (PS: N'oublie pas de nous envoyer une photo si vous avez un projet pilotant 64 moteurs pas-à-pas :-) )
  
Note that stacking shields does not increase the servo connections - those are hard-wired to the Arduino digital 9 & 10 pins. [https://www.adafruit.com/products/1411 If you need to control a lot of servos, you can use our 16-channel servo shield and stack it with this shield to add a crazy large # of servos] (AdaFruit).
+
Notez que le fait d'empiler les shield n'augmente pas le nombre de servo-moteurs utilisable. Les servo-moteurs sont directement branchés sur les broches 9 et 10 de votre Arduino. {{pl|89|Si vous avez besoin de piloter plus de servos, vous pouvez utiliser un controleur PWM/Servo à 16 cannaux}}. Ils sont également chainable, ce qui permet d'ajouter une quantité littéralement incandescente de servo-moteurs sur votre projet.
  
Stacking shields is very easy. Each shield you want to stack on top of must have stacking headers installed. Check our instructions for how to do so. The top shield does not have to have stacking headers unless you eventually want to put something on top of it.
+
Empiler les shields moteurs est une opération vraiment simple. Chacun des shields que vous voulez ajouter sur la pile doit avoir un pinStaking header ([[Adafruit Motor Shield V2-Assembler#Installer un_Stacking Header|voyez nos instructions pour placer un Stacking Header]] sur votre shield). Le motor shield du haut n'a pas besoin de stacking header... à moins que vous ne désiriez placer un autre shield.
  
The only thing to watch for when stacking shields is every shield must have a unique I2C address. '''The default address is 0x60'''. You can adjust the address of the shields to range from 0x60 to 0x80 for a total of 32 unique addresses.
+
La seule choses à laquelle il faut faire attention, c'est que chaque shield doit avoir une adresse I2C unique. '''L'adresse par défaut est 0x60'''. Vous pouvez ajuster cette adresse entre 0x60 et 0x80, ce qui représente un total de 32 adresses uniques.
  
 
== Adresser les shields ==
 
== Adresser les shields ==
Each board in the chain must be assigned a unique address. This is done with the address jumpers on the lower edge of the board. The I2C base address for each board is 0x60. The binary address that you program with the address jumpers is added to the base I2C address.
+
Chaque carte dans la chaine doit recevoir une adresse unique. Cela est réaliser à l'aide des cavalier/pastilles d'adresse visible sur le bord de la carte. L'adresse de base de chaque carte est 0x60. En pontant les cavaliers/pastilles d'adresses, vous programmer une nouvelle adresse sur la carte  en ajouter une valeur binaire à cette adresse I2C de base.
  
To program the address offset, use a drop of solder to bridge the corresponding address jumper for each binary '1' in the address.
+
Pour programmer le décalage d'adresse, utilisez simplement un point de soudure pour ponter un cavalier/pastille d'adresse correspondant à chaque '1' binaire de l'adresse.
  
The right-most jumper is address bit #0, then to the left of that is address bit #1, etc up to address bit #5
+
Le cavalier le plus à droite est le bit 0 de l'adresse (valeur numérique=1). La pastille juste à gauche est le bit d'adresse 1 (valeur numérique=2), La troisième pastille est le bit d'adresse 3 (valeur numérique=4), etc pour finir avec le bit d'adresse 5 (valeur numérique=16)
  
 
{{ADFImage|Adafruit Motor Shield V2-Stacking-02.jpg|640px}}
 
{{ADFImage|Adafruit Motor Shield V2-Stacking-02.jpg|640px}}
  
Board 0: Address = 0x60 Offset = binary 0000 (no jumpers required)<br />
+
Carte 0: Adresse = 0x60 Offset/décalage = binaire 0000 (pas besoin de pontage)<br />
Board 1: Address = 0x61 Offset = binary 0001 (bridge A0 as in the photo above)<br />
+
Carte 1: Adresse = 0x61 Offset/décalage = binaire 0001 (Ponter A0 comme sur la photo ci-dessus)<br />
Board 2: Address = 0x62 Offset = binary 0010 (bridge A1, to the left of A0)<br />
+
Carte 2: Adresse = 0x62 Offset/décalage = binaire 0010 (Ponter A1, à la gauche de A0)<br />
Board 3: Address = 0x63 Offset = binary 0011 (bridge A0 & A1, two rightmost jumpers)<br />
+
Carte 3: Adresse = 0x63 Offset/décalage = binaire 0011 (Ponter A0 et A1, les deux cavaliers les plus à droite)<br />
Board 4: Address = 0x64 Offset = binary 0100 (bridge A2, middle jumper)
+
Carte 4: Adresse = 0x64 Offset/décalage = binaire 0100 (Ponter A2, cavalier du milieu)
  
etc.  
+
etc.
  
 
== Ecrire du code pour plusieurs shields ==
 
== Ecrire du code pour plusieurs shields ==
  
The Adafruit_MotorShield library has the ability to control multiple shields, unlike the older AF_Motor library. First we must create a Motor Shield Controller for each shield, with the assigned address.
+
La bibliothèque Adafruit_MotorShield est capable de contrôler plusieurs shield (ce qui radicalement différent de l'ancienne bibliothèque AF_Motor).  
  
<nowiki>Adafruit_MotorShield AFMSbot(0x61); // Rightmost jumper closed
+
=== Créer les MotorShield ===
Adafruit_MotorShield AFMStop(0x60); // Default address, no jumpers</nowiki>
+
Nous devons d'abord créer un contrôleur pour chaque motor shield, en indiquant l'adresse assignée sur chaque carte.
  
One motor shield is going to be called AFMSbot (bottom shield, so we remember) and one is AFMStop (top shield) so we can keep them apart. When you create the shield object, specify the address you set for it above.
+
Lorsque vous créez les objets shield, n'oubliez pas de spécifier l'adresse comme nous le faisons ci-dessous:
  
Then we can request the motors connected to each one
+
<nowiki>Adafruit_MotorShield AFMSbot(0x61); // Le cavalier/pastille le plus à gauche ponté
 +
Adafruit_MotorShield AFMStop(0x60); // Adresse par défaut, sans pontage</nowiki>
  
  <nowiki>// On the top shield, connect two steppers, each with 200 steps
+
* Un des shield moteur est nommé AFMSbot (Shield du bas, pour mémoire. "''bottom''" signifie "bas")
 +
* L'autre shield est nommé AFMStop (le shield du haut, "''top''" signifiant "haut").
 +
 
 +
Voila, nous pouvons maintenant identifier distinctement les deux shields.
 +
 
 +
=== Associer les moteurs ===
 +
 
 +
Nous pouvons ensuite demander les différents objets pour chacun des moteurs raccordés sur les shields.
 +
 
 +
  <nowiki>// Sur le shield du dessus (top), connectez 2 mot. pas-à-pas, chacun de 200 pas
 
Adafruit_StepperMotor *myStepper2 = AFMStop.getStepper(200, 1);
 
Adafruit_StepperMotor *myStepper2 = AFMStop.getStepper(200, 1);
 
Adafruit_StepperMotor *myStepper3 = AFMStop.getStepper(200, 2);
 
Adafruit_StepperMotor *myStepper3 = AFMStop.getStepper(200, 2);
  
// On the bottom shield connect a stepper to port M3/M4 with 200 steps
+
// Sur le shield du bas (bot), connecter un mot. pas-à-pas de 200 pas sur le bornier M3/M4.
 
Adafruit_StepperMotor *myStepper1 = AFMSbot.getStepper(200, 2);
 
Adafruit_StepperMotor *myStepper1 = AFMSbot.getStepper(200, 2);
// And a DC Motor to port M1
+
// et un moteur continu sur le bornier M1
 
Adafruit_DCMotor *myMotor1 = AFMSbot.getMotor(1);</nowiki>
 
Adafruit_DCMotor *myMotor1 = AFMSbot.getMotor(1);</nowiki>
  
You can request a stepper or DC motor from any port, just be sure to use the right AFMS controller object when you call '''getMotor''' or '''getStepper'''!
 
  
Then, both shields must have '''begin''' called, before you use the motors connected
+
Vous pouvez réclamer n'importe quel objet ''stepper'' ou ''motor' sur n'importe quel port, veillez juste à utiliser le bon "objet controleur AFMS" lorsque vous appelez '''getMotor''' ou '''getStepper'''!
  <nowiki>AFMSbot.begin(); // Start the bottom shield
+
 
AFMStop.begin(); // Start the top shield</nowiki>
+
=== Initialiser ===
 +
Ensuite, vous devez appeler la fonction '''begin''' pour les deux shields.
 +
Cette opération doit être réaliser avec d'utiliser les moteurs qui y sont connectés.
 +
 
 +
  <nowiki>AFMSbot.begin(); // Démarrer le shield du bas (bot)
 +
AFMStop.begin(); // Démarrer le shield du haut (top)</nowiki>
  
You can try out this code for yourself by setting up two shields and running the '''File->Examples->Adafruit_MotorShield->StackingTest''' example
+
Vous pouvez essayer ce code pour 2 shields à partir du code d'exemple '''Fichier -> Exemples -> Adafruit_MotorShield -> StackingTest'''
  
 
{{Adafruit Motor Shield V2-TRAILER}}
 
{{Adafruit Motor Shield V2-TRAILER}}

Version actuelle datée du 6 janvier 2014 à 12:04


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.

Empiler les shields

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

L'une des avancées les plus géniales de cette nouvelle génération de Motor Shield, c'est qu'ils peuvent enfin être empilés. Chaque shield ajouté sur la pile est capable de controller 2 moteurs pas-à-pas ou 4 moteur continu en plus 2 (ou un mélange des deux)

Vous pouvez empiler jusqu'à 32 shields, ce qui réprésente un total de 64 moteur pas-à-pas ou de 128 moteurs continu! La plupart des utilisateurs n'aurons besoin que de 2 ou 3 shields mais qui sait... (PS: N'oublie pas de nous envoyer une photo si vous avez un projet pilotant 64 moteurs pas-à-pas :-) )

Notez que le fait d'empiler les shield n'augmente pas le nombre de servo-moteurs utilisable. Les servo-moteurs sont directement branchés sur les broches 9 et 10 de votre Arduino. Si vous avez besoin de piloter plus de servos, vous pouvez utiliser un controleur PWM/Servo à 16 cannaux. Ils sont également chainable, ce qui permet d'ajouter une quantité littéralement incandescente de servo-moteurs sur votre projet.

Empiler les shields moteurs est une opération vraiment simple. Chacun des shields que vous voulez ajouter sur la pile doit avoir un pinStaking header (voyez nos instructions pour placer un Stacking Header sur votre shield). Le motor shield du haut n'a pas besoin de stacking header... à moins que vous ne désiriez placer un autre shield.

La seule choses à laquelle il faut faire attention, c'est que chaque shield doit avoir une adresse I2C unique. L'adresse par défaut est 0x60. Vous pouvez ajuster cette adresse entre 0x60 et 0x80, ce qui représente un total de 32 adresses uniques.

Adresser les shields

Chaque carte dans la chaine doit recevoir une adresse unique. Cela est réaliser à l'aide des cavalier/pastilles d'adresse visible sur le bord de la carte. L'adresse de base de chaque carte est 0x60. En pontant les cavaliers/pastilles d'adresses, vous programmer une nouvelle adresse sur la carte en ajouter une valeur binaire à cette adresse I2C de base.

Pour programmer le décalage d'adresse, utilisez simplement un point de soudure pour ponter un cavalier/pastille d'adresse correspondant à chaque '1' binaire de l'adresse.

Le cavalier le plus à droite est le bit 0 de l'adresse (valeur numérique=1). La pastille juste à gauche est le bit d'adresse 1 (valeur numérique=2), La troisième pastille est le bit d'adresse 3 (valeur numérique=4), etc pour finir avec le bit d'adresse 5 (valeur numérique=16)

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

Carte 0: Adresse = 0x60 Offset/décalage = binaire 0000 (pas besoin de pontage)
Carte 1: Adresse = 0x61 Offset/décalage = binaire 0001 (Ponter A0 comme sur la photo ci-dessus)
Carte 2: Adresse = 0x62 Offset/décalage = binaire 0010 (Ponter A1, à la gauche de A0)
Carte 3: Adresse = 0x63 Offset/décalage = binaire 0011 (Ponter A0 et A1, les deux cavaliers les plus à droite)
Carte 4: Adresse = 0x64 Offset/décalage = binaire 0100 (Ponter A2, cavalier du milieu)

etc.

Ecrire du code pour plusieurs shields

La bibliothèque Adafruit_MotorShield est capable de contrôler plusieurs shield (ce qui radicalement différent de l'ancienne bibliothèque AF_Motor).

Créer les MotorShield

Nous devons d'abord créer un contrôleur pour chaque motor shield, en indiquant l'adresse assignée sur chaque carte.

Lorsque vous créez les objets shield, n'oubliez pas de spécifier l'adresse comme nous le faisons ci-dessous:

Adafruit_MotorShield AFMSbot(0x61); // Le cavalier/pastille le plus à gauche ponté
Adafruit_MotorShield AFMStop(0x60); // Adresse par défaut, sans pontage
  • Un des shield moteur est nommé AFMSbot (Shield du bas, pour mémoire. "bottom" signifie "bas")
  • L'autre shield est nommé AFMStop (le shield du haut, "top" signifiant "haut").

Voila, nous pouvons maintenant identifier distinctement les deux shields.

Associer les moteurs

Nous pouvons ensuite demander les différents objets pour chacun des moteurs raccordés sur les shields.

// Sur le shield du dessus (top), connectez 2 mot. pas-à-pas, chacun de 200 pas
Adafruit_StepperMotor *myStepper2 = AFMStop.getStepper(200, 1);
Adafruit_StepperMotor *myStepper3 = AFMStop.getStepper(200, 2);

// Sur le shield du bas (bot), connecter un mot. pas-à-pas de 200 pas sur le bornier M3/M4.
Adafruit_StepperMotor *myStepper1 = AFMSbot.getStepper(200, 2);
// et un moteur continu sur le bornier M1
Adafruit_DCMotor *myMotor1 = AFMSbot.getMotor(1);


Vous pouvez réclamer n'importe quel objet stepper ou motor' sur n'importe quel port, veillez juste à utiliser le bon "objet controleur AFMS" lorsque vous appelez getMotor ou getStepper!

Initialiser

Ensuite, vous devez appeler la fonction begin pour les deux shields. Cette opération doit être réaliser avec d'utiliser les moteurs qui y sont connectés.

AFMSbot.begin(); // Démarrer le shield du bas (bot)
AFMStop.begin(); // Démarrer le shield du haut (top)

Vous pouvez essayer ce code pour 2 shields à partir du code d'exemple Fichier -> Exemples -> Adafruit_MotorShield -> StackingTest


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.