.. note:: Bonjour et bienvenue dans la Communauté Facebook des passionnés de Raspberry Pi, Arduino et ESP32 de SunFounder ! Plongez plus profondément dans l'univers des Raspberry Pi, Arduino et ESP32 avec d'autres passionnés. **Pourquoi rejoindre ?** - **Support d'experts** : Résolvez les problèmes après-vente et les défis techniques avec l'aide de notre communauté et de notre équipe. - **Apprendre et partager** : Échangez des astuces et des tutoriels pour améliorer vos compétences. - **Aperçus exclusifs** : Accédez en avant-première aux annonces de nouveaux produits et aux aperçus. - **Réductions spéciales** : Profitez de réductions exclusives sur nos produits les plus récents. - **Promotions festives et cadeaux** : Participez à des cadeaux et des promotions de vacances. 👉 Prêt à explorer et à créer avec nous ? Cliquez [|link_sf_facebook|] et rejoignez-nous aujourd'hui ! .. _1.3.1_py_pi5: 1.3.1 Moteur ============= Introduction ----------------- Dans ce projet, nous allons apprendre à utiliser le L293D pour piloter un moteur à courant continu (CC) et le faire tourner dans le sens horaire et antihoraire. Comme le moteur CC nécessite un courant plus important, pour des raisons de sécurité, nous utilisons ici le module d'alimentation pour alimenter les moteurs. Composants nécessaires ------------------------------ Dans ce projet, nous avons besoin des composants suivants. .. image:: ../python_pi5/img/1.3.1_motor_list.png Il est certainement pratique d'acheter un kit complet, voici le lien : .. list-table:: :widths: 20 20 20 :header-rows: 1 * - Nom - ÉLÉMENTS DANS CE KIT - LIEN * - Kit Raphael - 337 - |link_Raphael_kit| Vous pouvez également les acheter séparément via les liens ci-dessous. .. list-table:: :widths: 30 20 :header-rows: 1 * - INTRODUCTION DES COMPOSANTS - LIEN D'ACHAT * - :ref:`cpn_gpio_extension_board` - |link_gpio_board_buy| * - :ref:`cpn_breadboard` - |link_breadboard_buy| * - :ref:`cpn_wires` - |link_wires_buy| * - :ref:`cpn_power_module` - \- * - :ref:`cpn_l293d` - \- * - :ref:`cpn_motor` - |link_motor_buy| Schéma de câblage ------------------ .. image:: ../python_pi5/img/1.3.1_motor_schematic.png Procédures expérimentales --------------------------- **Étape 1:** Construisez le circuit. .. image:: ../python_pi5/img/1.3.1_motor_circuit.png .. note:: Le module d'alimentation peut utiliser une batterie 9V avec la boucle de batterie 9V dans le kit. Insérez le capuchon du cavalier du module d'alimentation dans les bandes de bus 5V de la breadboard. .. image:: ../python_pi5/img/1.3.1_motor_battery.jpeg **Étape 2**: Accédez au dossier du code. .. raw:: html .. code-block:: cd ~/raphael-kit/python-pi5 **Étape 3**: Exécutez. .. raw:: html .. code-block:: sudo python3 1.3.1_Motor_zero.py Lorsque le code s'exécute, le moteur tourne d'abord dans le sens horaire pendant 5 secondes, puis s'arrête pendant 5 secondes. Ensuite, il tourne dans le sens antihoraire pendant 5 secondes; par la suite, le moteur s'arrête pendant 5 secondes. Cette série d'actions sera exécutée de manière répétée. .. warning:: Si vous recevez le message d'erreur ``RuntimeError: Cannot determine SOC peripheral base address``, veuillez consulter :ref:`faq_soc` **Code** .. note:: Vous pouvez **Modifier/Réinitialiser/Copier/Exécuter/Arrêter** le code ci-dessous. Mais avant cela, vous devez aller au chemin du code source comme ``raphael-kit/python-pi5``. Après avoir modifié le code, vous pouvez l'exécuter directement pour voir l'effet. .. raw:: html .. code-block:: python #!/usr/bin/env python3 from gpiozero import Motor from time import sleep # Initialize the Motor with GPIO Zero, specifying GPIO pins for forward (17), backward (27), and enable (22) control motor = Motor(forward=17, backward=27, enable=22) try: # Main function to control the motor's direction and movement. # Alternates motor rotation between clockwise and counterclockwise with stops in between. actions = {'CW': motor.forward, 'CCW': motor.backward, 'STOP': motor.stop} # Define motor actions for readability while True: # Loop through the defined actions to control motor direction for action in ['CW', 'STOP', 'CCW', 'STOP']: actions[action]() # Execute the current action (forward, stop, backward, stop) print(f"{action}") # Display the current action in the console sleep(5) # Pause for 5 seconds before proceeding to the next action except KeyboardInterrupt: # Gracefully handle a keyboard interrupt (e.g., Ctrl+C) to stop the program pass **Explication du code** #. Ces instructions d'importation intègrent la classe ``Motor`` de la bibliothèque ``gpiozero`` et la fonction ``sleep`` du module ``time``. .. code-block:: python #!/usr/bin/env python3 from gpiozero import Motor from time import sleep #. Cette ligne initialise un objet ``Motor``, en spécifiant les broches GPIO pour le contrôle avant (17), arrière (27) et l'activation (22). .. code-block:: python # Initialize the Motor with GPIO Zero, specifying GPIO pins for forward (17), backward (27), and enable (22) control motor = Motor(forward=17, backward=27, enable=22) #. Les actions pour le contrôle du moteur sont définies dans un dictionnaire pour plus de lisibilité. Une boucle infinie (`while True`) parcourt ces actions, exécutant chacune pendant 5 secondes. .. code-block:: python try: # Main function to control the motor's direction and movement. # Alternates motor rotation between clockwise and counterclockwise with stops in between. actions = {'CW': motor.forward, 'CCW': motor.backward, 'STOP': motor.stop} # Define motor actions for readability while True: # Loop through the defined actions to control motor direction for action in ['CW', 'STOP', 'CCW', 'STOP']: actions[action]() # Execute the current action (forward, stop, backward, stop) print(f"{action}") # Display the current action in the console sleep(5) # Pause for 5 seconds before proceeding to the next action #. Ce segment permet au programme d'être terminé en toute sécurité en utilisant une interruption clavier (Ctrl+C) sans causer d'erreurs. .. code-block:: python except KeyboardInterrupt: # Gracefully handle a keyboard interrupt (e.g., Ctrl+C) to stop the program pass