NXShield = Arduino + Lego NXT
Le NXShield est une carte d’interface permettant d’utiliser des composants Lego Mindstorm (version NXT 2) : capteurs, moteurs, …
Le NXShield permet de brancher :
- 4 moteurs NXT
- 4 capteurs NXT
- 6 servomoteurs
Attention : le NXShield est alimenté de manière externe. Vous aurez besoin d’un support de 6 piles afin de l’alimenter.
Le NXShield utilise une bibliothèque éponyme : NXShield.
Consulter l’article installer une bibliothèque…
Câblage
Composants LEGO
Il suffit d’utiliser un câble Lego :
- les moteurs sur les ports M1 et M2
- les capteurs sur les ports BAS1, BAS2, BBS1 et BBS2.
Servomoteurs
En utilisant le câble du servomoteur, sur un des ports prévu à cet effet (ports numériques 3, 5, 6, 9, 10 et 11)
Alimentation
Sur le bornier Power, relier un boitier de 6 piles (ou accumulateurs).
Programmation
Intégration de la bibliothèque :
#include <NXShield.h>
Déclaration de l’objet NXShield :
NXShield nxshield;
Initialisation de l’objet NXShield :
setup() { // ... nxshield.init( SH_HardwareI2C ); // ... }
Mise en attente du NXShield :
par exemple, jusqu’à l’appui sur le bouton « GO », mais il est possible d’employer les autres boutons (voir méthode .waitForButtonPress
)
nxshield.waitForButtonPress(BTN_GO);
Utilisation des servomoteurs Mindstorm :
Initialisation de tous les moteurs (dans la fonction setup() )
nxshield.bank_a.motorReset();
nxshield.bank_b.motorReset();
Faire tourner un moteur d’un nombre de tours prédéfini :
nxshield.bank_a.motorRunRotations(SH_Motor_1, SH_Direction_Forward, SH_Speed_Medium, rotations, SH_Completion_Wait_For, SH_Next_Action_BrakeHold);
Plus de détails : méthode
.motorRunRotations
Utilisation des capteurs HiTechnic (Accéléromètre, Color, EOPD, …) :
Pour ces capteurs, il faut utiliser la bibliothèque NXShield Lego Arduino Drivers.
Accéléromètre HiTechnic
Après avoir déclaré et initialisé le NXShiled…
Déclaration de l’objet « capteur accéléromètre »:
ClassHTAC HTAcc;
Initialisation du capteur :
HTAcc.init( &nxshield, SH_BAS1 );
Lecture d’un axe du capteur :
int HT_Acc_X = HTAcc.ReadAxis(AXIS_X);
Pour en savoir plus …
Documents à télécharger
Bonjour, je souhaite utiliser le NXShield avec un arduino Uno. Faut il alimenter uniquement le NXShield qui alimentera l’arduino branché dessus, ou faut il alimenter également l’arduino? Le but de ce montage est de contrôler et alimenter des moteurs NXT qui serviront à la propulsion d’une voiture autoguidée. Merci de votre réponse.
Bonjour
Seul le NXShield doit être alimenté