Note

Bonjour, bienvenue dans la communauté des passionnés de SunFounder Raspberry Pi, Arduino et ESP32 sur Facebook ! Plongez dans l’univers du Raspberry Pi, de l’Arduino et de l’ESP32 avec d’autres amateurs.

Pourquoi nous rejoindre ?

  • Assistance d’experts : Résolvez vos problèmes après-vente et surmontez les défis techniques grâce à l’aide de notre communauté et de notre équipe.

  • Apprenez & Partagez : Échangez des conseils et des tutoriels pour perfectionner vos compétences.

  • Avant-premières exclusives : Soyez les premiers informés des nouvelles annonces de produits et découvrez des aperçus en exclusivité.

  • Réductions spéciales : Profitez de réductions exclusives sur nos nouveaux produits.

  • Promotions festives et cadeaux : Participez à des tirages au sort et bénéficiez de promotions spéciales pendant les fêtes.

👉 Prêt à explorer et créer avec nous ? Cliquez sur [Ici] et rejoignez-nous dès aujourd’hui !

1.3.2 Servo

Introduction

Dans ce projet, nous allons apprendre à faire tourner un servo-moteur.

Composants requis

Pour ce projet, nous aurons besoin des composants suivants :

../_images/1.3.2_servo_list.png

Schéma de câblage

../_images/image337.png

Procédures expérimentales

Étape 1 : Construisez le circuit.

../_images/image125.png

Étape 2 : Accédez au dossier contenant le code. .. raw:: html

<run></run>

cd ~/davinci-kit-for-raspberry-pi/python-pi5

Étape 3 : Exécutez le fichier. .. raw:: html

<run></run>

sudo python3 1.3.2_Servo.py

Après l’exécution du programme, le servo effectuera une rotation de 0° à 90°, puis à 180°, avant de revenir à 90° et enfin à 0°, en un mouvement cyclique.

Avertissement

Si le message d’erreur RuntimeError: Cannot determine SOC peripheral base address apparaît, consultez Si gpiozero ne fonctionne pas..

Code

Note

Vous pouvez modifier/réinitialiser/copier/exécuter/arrêter le code ci-dessous. Avant de l’exécuter, assurez-vous de vous rendre dans le répertoire source comme davinci-kit-for-raspberry-pi/python-pi5. Après modification, vous pouvez l’exécuter directement pour observer les résultats.

#!/usr/bin/env python3
from gpiozero import Servo
from time import sleep

# Définir le numéro de la broche GPIO où le servo est connecté
myGPIO = 18

# Définir un facteur de correction pour ajuster la largeur d'impulsion du servo
myCorrection = 0.45
maxPW = (2.0 + myCorrection) / 1000  # Calculer la largeur d'impulsion maximale
minPW = (1.0 - myCorrection) / 1000  # Calculer la largeur d'impulsion minimale

# Initialiser l'objet Servo avec des largeurs d'impulsion personnalisées
servo = Servo(myGPIO, min_pulse_width=minPW, max_pulse_width=maxPW)

try:
    while True:
        # Placer le servo à la position centrale et attendre
        servo.mid()
        print("mid")  # Indiquer la position actuelle
        sleep(0.5)       # Pause de 0,5 seconde

        # Déplacer le servo à sa position minimale et attendre
        servo.min()
        print("min")     # Indiquer la position actuelle
        sleep(1)         # Maintenir la position pendant 1 seconde

        # Revenir à la position centrale et attendre
        servo.mid()
        print("mid")  # Indiquer la position actuelle
        sleep(0.5)       # Pause de 0,5 seconde

        # Déplacer le servo à sa position maximale et attendre
        servo.max()
        print("max")     # Indiquer la position actuelle
        sleep(1)         # Maintenir la position pendant 1 seconde

except KeyboardInterrupt:
    # Terminer le script proprement en cas d'interruption clavier (Ctrl+C)
    pass

Explication du code

  1. Ces instructions importent la classe Servo pour le contrôle du servo et la fonction sleep pour la temporisation.

    #!/usr/bin/env python3
    from gpiozero import Servo
    from time import sleep
    
  2. Définir le numéro de la broche GPIO utilisée (18) pour connecter le servo.

    # Définir le numéro de la broche GPIO où le servo est connecté
    myGPIO = 18
    
  3. Ces lignes définissent un facteur de correction et l’utilisent pour calculer les largeurs d’impulsion maximales et minimales, ajustant ainsi la plage de mouvement du servo.

    # Définir un facteur de correction pour ajuster la largeur d'impulsion du servo
    myCorrection = 0.45
    maxPW = (2.0 + myCorrection) / 1000  # Calculer la largeur d'impulsion maximale
    minPW = (1.0 - myCorrection) / 1000  # Calculer la largeur d'impulsion minimale
    
  4. Initialiser l’objet Servo avec la broche GPIO spécifiée et les largeurs d’impulsion définies.

    # Initialiser l'objet Servo avec des largeurs d'impulsion personnalisées
    servo = Servo(myGPIO, min_pulse_width=minPW, max_pulse_width=maxPW)
    
  5. Le bloc try contient une boucle while True qui déplace continuellement le servo. Le servo se positionne au centre, aux points minimum et maximum, chaque position étant affichée et maintenue pendant une durée définie.

    try:
        while True:
            # Placer le servo à la position centrale et attendre
            servo.mid()
            print("mid")  # Indiquer la position actuelle
            sleep(0.5)       # Pause de 0,5 seconde
    
            # Déplacer le servo à sa position minimale et attendre
            servo.min()
            print("min")     # Indiquer la position actuelle
            sleep(1)         # Maintenir la position pendant 1 seconde
    
            # Revenir à la position centrale et attendre
            servo.mid()
            print("mid")  # Indiquer la position actuelle
            sleep(0.5)       # Pause de 0,5 seconde
    
            # Déplacer le servo à sa position maximale et attendre
            servo.max()
            print("max")     # Indiquer la position actuelle
            sleep(1)         # Maintenir la position pendant 1 seconde
    
    
    
    except KeyboardInterrupt:
    # Terminer le script proprement en cas d'interruption clavier (Ctrl+C)
    pass