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.1.9 Joystick
Note
Selon la version de votre kit, identifiez si vous disposez d’un ADC0834 ou d’un MCP3008 et suivez la section correspondante.
Introduction
Dans ce projet, nous allons apprendre comment fonctionne un joystick. Nous manipulons le joystick et affichons les résultats à l’écran.
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
Lors de la lecture des données du joystick, il y a des différences entre les axes : les données des axes X et Y sont analogiques, il est donc nécessaire d’utiliser l’ADC0834 pour convertir les valeurs analogiques en valeurs numériques. Les données de l’axe Z sont numériques, vous pouvez donc utiliser directement le GPIO pour les lire, ou utiliser l’ADC.
Procédures expérimentales
Étape 1 : Construisez le circuit.
Étape 2 : Allez dans le dossier du code.
cd ~/raphael-kit/python-pi5
Étape 3 : Exécutez.
sudo python3 2.1.9_Joystick_zero.py
Après l’exécution du code, tournez le joystick, puis les valeurs correspondantes de x, y, Btn s’affichent à l’écran.
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 Button
import ADC0834
import time
# Initialize the button connected to GPIO pin 22
BtnPin = Button(22)
# Setup the ADC0834 ADC
ADC0834.setup()
try:
# Main loop to read and print ADC values and button state
while True:
# Read X and Y values from ADC channels 0 and 1
x_val = ADC0834.getResult(0)
y_val = ADC0834.getResult(1)
# Read the state of the button (pressed or not)
Btn_val = BtnPin.value
# Print the X, Y, and button values
print('X: %d Y: %d Btn: %d' % (x_val, y_val, Btn_val))
# Delay of 0.2 seconds before the next read
time.sleep(0.2)
# Gracefully handle script termination (e.g., via KeyboardInterrupt)
except KeyboardInterrupt:
pass
Explication du code
Cette section importe la classe Button de la bibliothèque
gpiozeropour gérer un bouton connecté à une broche GPIO. Elle importe également la bibliothèqueADC0834pour l’interface avec le module ADC0834 (convertisseur analogique-numérique).#!/usr/bin/env python3 from gpiozero import Button import ADC0834 import time
Initialise un bouton connecté à la broche GPIO 22 et configure le module ADC0834 pour son utilisation.
# Initialize the button connected to GPIO pin 22 BtnPin = Button(22) # Setup the ADC0834 ADC ADC0834.setup()
Les connexions VRX et VRY du joystick sont reliées à CH0 et CH1 de l’ADC0834, respectivement. Cette configuration permet de lire les valeurs de CH0 et CH1, qui sont ensuite enregistrées dans les variables
x_valety_val. De plus, la valeur SW du joystick est lue et attribuée à la variableBtn_val. Les valeurs récupérées dex_val,y_valetBtn_valsont ensuite affichées à l’aide de la fonctionprint().try: # Main loop to read and print ADC values and button state while True: # Read X and Y values from ADC channels 0 and 1 x_val = ADC0834.getResult(0) y_val = ADC0834.getResult(1) # Read the state of the button (pressed or not) Btn_val = BtnPin.value # Print the X, Y, and button values print('X: %d Y: %d Btn: %d' % (x_val, y_val, Btn_val)) # Delay of 0.2 seconds before the next read time.sleep(0.2) # Gracefully handle script termination (e.g., via KeyboardInterrupt) except KeyboardInterrupt: pass