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 [Ici] et rejoignez-nous aujourd’hui !
2.2.6 Module de capteur de vitesse
Introduction
Dans ce projet, nous allons apprendre à utiliser le module de capteur de vitesse. Un module de capteur de vitesse est un type de tachymètre utilisé pour mesurer la vitesse d’un objet en rotation, comme un moteur.
Composants nécessaires
Dans ce projet, nous avons besoin des composants suivants.
Il est certainement pratique d’acheter un kit complet, voici le lien :
Nom |
ARTICLES DANS CE KIT |
LIEN |
|---|---|---|
Kit Raphael |
337 |
Vous pouvez également les acheter séparément via les liens ci-dessous.
INTRODUCTION DU COMPOSANT |
LIEN D’ACHAT |
|---|---|
- |
Schéma
Procédures expérimentales
Étape 1 : Construisez le circuit.
Étape 2 : Changez de répertoire.
cd ~/raphael-kit/python-pi5
Étape 3 : Exécutez.
sudo python3 2.2.6_speed_sensor_module_zero.py
Après l’exécution du code, la LED verte s’allumera. Si vous placez un obstacle dans l’espace du module de capteur de vitesse, « light blocked » sera imprimé à l’écran et la LED rouge s’allumera. Retirez l’obstacle et la LED verte s’allumera de nouveau.
Avertissement
Si vous recevez le message d’erreur RuntimeError: Cannot determine SOC peripheral base address, veuillez consulter Si « gpiozero » ne fonctionne pas.
Code
Note
Vous pouvez Modifier/Réinitialiser/Copier/Exécuter/Arrêter le code ci-dessous. Mais avant cela, vous devez vous rendre 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.
#!/usr/bin/env python3
from gpiozero import LED, Button
from signal import pause
# Initialize GPIO pins for the speed sensor and LEDs using GPIO Zero library
speed_sensor = Button(17, pull_up=False) # Speed sensor connected to GPIO pin 17 without pull-up
green_led = LED(27) # Green LED connected to GPIO pin 27
red_led = LED(22) # Red LED connected to GPIO pin 22
def update_leds():
"""
Update the state of LEDs based on the speed sensor.
- If the sensor is pressed (triggered), the red LED is turned on and a message is printed.
- If the sensor is released (not triggered), the green LED is turned on.
"""
if speed_sensor.is_pressed:
green_led.off() # Turn off green LED
red_led.on() # Turn on red LED
print('Light was blocked') # Print message indicating sensor is triggered
else:
green_led.on() # Turn on green LED
red_led.off() # Turn off red LED
try:
# Main loop to continuously check sensor state
while True:
# Update LEDs based on sensor state changes
speed_sensor.when_pressed = update_leds # Update LEDs when sensor is pressed
speed_sensor.when_released = update_leds # Update LEDs when sensor is released
except KeyboardInterrupt:
# Handle KeyboardInterrupt (Ctrl+C) for a graceful script termination
pass
Explication du code
La bibliothèque
gpiozeroest importée pour utiliser ses classesLEDetButtonafin d’interagir avec les broches GPIO. La bibliothèquesignalest importée pour la fonctionpause, qui est utilisée pour maintenir le script en cours d’exécution.#!/usr/bin/env python3 from gpiozero import LED, Button from signal import pause
speed_sensorest défini comme unButtonsur la broche GPIO 17. Le paramètrepull_up=Falseindique que la résistance pull-up interne n’est pas utilisée.green_ledetred_ledsont initialisés comme des objetsLEDconnectés respectivement aux broches GPIO 27 et 22.# Initialize GPIO pins for the speed sensor and LEDs using GPIO Zero library speed_sensor = Button(17, pull_up=False) # Speed sensor connected to GPIO pin 17 without pull-up green_led = LED(27) # Green LED connected to GPIO pin 27 red_led = LED(22) # Red LED connected to GPIO pin 22
La fonction
update_ledsvérifie l’état du capteur de vitesse. Si le capteur est pressé (activé), elle éteint la LED verte, allume la LED rouge et imprime un message. Si le capteur est relâché, elle fait l’inverse.def update_leds(): """ Update the state of LEDs based on the speed sensor. - If the sensor is pressed (triggered), the red LED is turned on and a message is printed. - If the sensor is released (not triggered), the green LED is turned on. """ if speed_sensor.is_pressed: green_led.off() # Turn off green LED red_led.on() # Turn on red LED print('Light was blocked') # Print message indicating sensor is triggered else: green_led.on() # Turn on green LED red_led.off() # Turn off red LED
La boucle principale vérifie continuellement l’état du capteur de vitesse. Les attributs
when_pressedetwhen_releasedsont des gestionnaires d’événements qui appellent la fonctionupdate_ledslorsque l’état du capteur change. Le bloc try-except est utilisé pour gérer une interruption clavier (KeyboardInterrupt) pour une sortie propre.try: # Main loop to continuously check sensor state while True: # Update LEDs based on sensor state changes speed_sensor.when_pressed = update_leds # Update LEDs when sensor is pressed speed_sensor.when_released = update_leds # Update LEDs when sensor is released except KeyboardInterrupt: # Handle KeyboardInterrupt (Ctrl+C) for a graceful script termination pass