.. note:: Bonjour et bienvenue dans la communauté des passionnés de SunFounder Raspberry Pi, Arduino et ESP32 sur Facebook ! Plongez dans l'univers de Raspberry Pi, Arduino et ESP32 avec d'autres passionnés. **Pourquoi nous rejoindre ?** - **Support d'experts** : Résolvez les problèmes après-vente et relevez vos défis techniques grâce à l'aide de notre communauté et de notre équipe. - **Apprenez et Partagez** : Échangez des astuces et des tutoriels pour perfectionner vos compétences. - **Aperçus exclusifs** : Bénéficiez d'un accès anticipé aux nouvelles annonces de produits et aux avant-premières. - **Réductions spéciales** : Profitez de réductions exclusives sur nos nouveaux produits. - **Promotions festives et concours** : Participez à des concours et à des promotions lors des fêtes. 👉 Prêt à explorer et à créer avec nous ? Cliquez sur [|link_sf_facebook|] et rejoignez-nous dès aujourd'hui ! 3.1.6 Contrôle de Mouvement ============================= Introduction -------------- Dans cette leçon, nous allons créer un dispositif simple de détection et de contrôle de mouvement. Le **MPU6050** est utilisé comme capteur, et le moteur pas-à-pas est utilisé comme dispositif de contrôle. Avec le **MPU6050** monté sur un gant, vous pouvez contrôler le moteur pas-à-pas en tournant votre poignet. Composants -------------- .. image:: img/list_Motion_Control.png :align: center Schéma de câblage -------------------- ============ ======== ======== === T-Board Name physical wiringPi BCM GPIO18 Pin 12 1 18 GPIO23 Pin 16 4 23 GPIO24 Pin 18 5 24 GPIO25 Pin 22 6 25 SDA1 Pin 3 SCL1 Pin 5 ============ ======== ======== === .. image:: img/Schematic_three_one6.png :align: center Procédures expérimentales ----------------------------- **Étape 1 :** Construisez le circuit. .. image:: img/image251.png :width: 800 :align: center **Étape 2 :** Accédez au dossier du code. .. raw:: html .. code-block:: cd ~/davinci-kit-for-raspberry-pi/c/3.1.6/ **Étape 3 :** Compilez le code. .. raw:: html .. code-block:: gcc 3.1.6_MotionControl.c -lwiringPi -lm **Étape 4 :** Exécutez le fichier exécutable. .. raw:: html .. code-block:: sudo ./a.out Lorsque le code est lancé, si l'angle d'inclinaison du **mpu6050** sur l'axe `Y `__-`axis `__ supérieur à **45** °, le moteur pas-à-pas tourne dans le sens inverse des aiguilles d'une montre ; s'il est inférieur à **-45** °, le moteur tourne dans le sens des aiguilles d'une montre. .. note:: Si cela ne fonctionne pas après l'exécution, ou s'il y a un message d'erreur indiquant : « wiringPi.h : Aucun fichier ou répertoire de ce type », veuillez consulter :ref:`faq_c_nowork`. **Explication du Code** .. code-block:: c double mpu6050(){     acclX = read_word_2c(0x3B);     acclY = read_word_2c(0x3D);     acclZ = read_word_2c(0x3F);     acclX_scaled = acclX / 16384.0;     acclY_scaled = acclY / 16384.0;     acclZ_scaled = acclZ / 16384.0;     double angle=get_y_rotation(acclX_scaled, acclY_scaled, acclZ_scaled);     return angle; } `mpu6050` récupère l'angle d'inclinaison dans la direction de l'axe Y. .. code-block:: c void rotary(char direction){     if(direction == 'c'){         for(int j=0;j<4;j++){             for(int i=0;i<4;i++)                 {digitalWrite(motorPin[i],0x99>>j & (0x08>>i));} delayMicroseconds(stepSpeed); } }     else if(direction =='a'){         for(int j=0;j<4;j++){             for(int i=0;i<4;i++)                 {digitalWrite(motorPin[i],0x99<>i));} delayMicroseconds(stepSpeed); } } } Si la direction reçue est `c`, le moteur pas-à-pas tourne dans le sens des aiguilles d'une montre ; si la direction est `a`, le moteur tourne dans le sens inverse. Consultez :ref:`1.3.3_stepper_c_pi5` pour plus de détails sur le calcul de la direction de rotation du moteur pas-à-pas. .. code-block:: c int main() { setup();     double angle;     while(1) {         angle = mpu6050();         if (angle >=45){rotary('a');}         else if (angle<=-45){rotary('c');} }     return 0; } L'angle d'inclinaison dans la direction de l'axe Y est lu depuis **mpu6050**. Si l'angle est supérieur à **45°**, le moteur pas-à-pas tourne dans le sens inverse des aiguilles d'une montre ; s'il est inférieur à **-45°**, le moteur tourne dans le sens des aiguilles d'une montre.