Adafruit Motor Shield V2-Stacking
Empiler les shields
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)
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.