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 :
Schéma de câblage
Procédures expérimentales
Étape 1 : Construisez le circuit.
É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
Ces instructions importent la classe
Servopour le contrôle du servo et la fonctionsleeppour la temporisation.#!/usr/bin/env python3 from gpiozero import Servo from time import sleep
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
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
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)
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