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
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