Raspberry Pi Pico - joystick

Dans ce guide, nous apprendrons à utiliser un joystick avec le Raspberry Pi Pico. En détail, nous découvrirons :

Raspberry Pi Pico et joystick

Préparation du matériel

1×Raspberry Pi Pico W
1×Raspberry Pi Pico Alternativement:
1×Câble Micro USB
1×Joystick
1×Fils de connexion
1×Recommandé: Carte d'extension à bornier à vis pour Raspberry Pi Pico

Ou vous pouvez acheter les kits suivants:

1×Kit de Capteurs DIYables (30 capteurs/écrans)
1×Kit de Capteurs DIYables (18 capteurs/écrans)
Divulgation : Certains des liens fournis dans cette section sont des liens affiliés Amazon. Nous pouvons recevoir une commission pour tout achat effectué via ces liens, sans coût supplémentaire pour vous. Nous vous remercions de votre soutien.

À propos du Joystick

Vous avez peut-être vu un joystick utilisé pour contrôler des jeux, des jouets ou même de grosses machines comme des excavatrices.

Le joystick comporte deux potentiomètres disposés en carré et un bouton. Il fournit ces sorties :

  • Une plage de 0 à 1023 pour la position horizontale (gauche à droite)
  • Une plage de 0 à 1023 pour la position verticale (haut-bas)
  • L'état du bouton, soit ALLUMÉ (NIVEAU ÉLEVÉ) ou ÉTEINT (NIVEAU BAS)

Lorsque vous combinez deux valeurs analogiques, elles créent des coordonnées en 2D. Ces coordonnées se situent au centre lorsque le joystick est immobile. Vous pouvez découvrir la direction réelle des coordonnées en utilisant un code de test, dont nous discuterons dans la section suivante.

Certaines applications peuvent utiliser les trois sorties, tandis que d'autres n'en utilisent que quelques-unes.

Schéma des broches

Un joystick a cinq broches.

  • Broche GND : connectez-la à la masse (0 V)
  • Broche VCC : connectez-la au VCC (3,3 V) du Raspberry Pico
  • Broche VRX : fournit une valeur analogique pour la position horizontale (coordonnée X), connectez cette broche à une entrée ADC du Raspberry Pico.
  • Broche VRY : fournit une valeur analogique pour la position verticale (coordonnée Y), connectez cette broche à une entrée ADC du Raspberry Pico.
  • Broche SW : connectée au bouton-poussoir du joystick. Généralement ouverte. Utilisez une résistance de pull-up pour maintenir cette broche à un niveau haut lorsque le bouton n'est pas enfoncé et à un niveau bas lorsqu'il est enfoncé.
Schéma des broches du joystick

Comment cela fonctionne

  • Mouvement Gauche/Droite:
    • Déplacer le joystick vers la gauche ou la droite modifie le signal électrique (tension) à la broche VRX.
    • Déplacer le joystick vers la gauche abaisse la tension à 0 volt.
    • Déplacer le joystick vers la droite augmente la tension à 3,3 volts.
    • Le Raspberry Pi Pico mesure cette tension et la transforme en un nombre de 0 à 1023. Ainsi, 0 V vaut 0 et 5 V vaut 1023.
  • Mouvement Haut/Bas:
    • Déplacer le joystick vers le haut ou le bas modifie la tension à la broche VRY.
    • Le déplacer vers le haut diminue la tension à 0 volt.
    • Déplacer vers le bas augmente la tension à 3,3 volts.
    • Le Raspberry Pi Pico lit également cette tension, la transformant en un nombre de 0 à 1023, de la même manière que pour la broche VRX.
  • Mouvements combinés:
    • Déplacer le joystick dans n'importe quelle direction modifie la tension sur les broches VRX et VRY selon sa position sur chaque axe.
  • Appuyer sur le Joystick:
    • Enfoncer le joystick active un bouton interne.
    • Connecter une résistance de tirage vers le haut à la broche SW provoquera une chute de la tension de 5 V à 0 V lorsque le joystick est enfoncé.
    • Le Raspberry Pi Pico détecte cela comme un signal numérique, affichant HIGH (5 V) lorsque non enfoncé et LOW (0 V) lorsque enfoncé.

    Lorsque vous déplacez le joystick, il ajuste les tensions sur VRX et VRY. Le Raspberry Pi Pico lit ces variations comme des valeurs allant de 0 à 1023. En appuyant sur le joystick, la tension à la broche SW change, et le Raspberry Pi Pico détecte cela comme un niveau élevé ou faible.

Diagramme de câblage

Schéma de câblage du joystick pour Raspberry Pi Pico

Cette image a été créée avec Fritzing. Cliquez pour agrandir l'image.

Comment programmer pour un joystick

Heureusement, DIYables a développé une bibliothèque de joystick qui facilite grandement le processus d'utilisation d'un joystick avec le Raspberry Pi Pico.

Code du Raspberry Pi Pico - Lit l'état du joystick

Le script MicroPython ci-dessous fait :

  • Lit les valeurs analogiques d'un joystick.
  • Vérifie si le bouton du joystick est enfoncé ou relâché.
  • Lit le nombre d'appuis sur le bouton du joystick.
/* * Ce code Raspberry Pi Pico a été développé par newbiely.fr * Ce code Raspberry Pi Pico est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/raspberry-pico/raspberry-pi-pico-joystick */ from DIYables_MicroPython_Joystick import Joystick import time # Initialize the joystick with the corresponding pins for X, Y, and button joystick = Joystick(pin_x=26, pin_y=27, pin_button=22) # Configure the debounce time if necessary (default is 50ms) joystick.set_debounce_time(100) # debounce time set to 100 milliseconds while True: joystick.loop() # Must be called frequently to process button debouncing # Read the analog values from the X and Y axes x_value = joystick.read_x() y_value = joystick.read_y() press_count = joystick.get_press_count() # Check if the button has been pressed or released if joystick.is_pressed(): print("Button Pressed") if joystick.is_released(): print("Button Released") # Print the joystick's X and Y coordinates, and pressed count print(f'Joystick Position - X: {x_value}, Y: {y_value}, pressed count: {press_count}') time.sleep(0.05) # Delay to reduce the output frequency

Étapes rapides

Veuillez suivre ces instructions étape par étape :

  • Assurez-vous que l'IDE Thonny est installé sur votre ordinateur.
  • Assurez-vous que le micrologiciel MicroPython est installé sur votre Raspberry Pi Pico.
  • Si c'est la première fois que vous utilisez un Raspberry Pico, reportez-vous au tutoriel Raspberry Pi Pico - Premiers pas. pour des instructions détaillées.
  • Connectez le joystick au Raspberry Pi Pico selon le diagramme fourni.
  • Connectez le Raspberry Pi Pico à votre ordinateur à l'aide d'un câble USB.
  • Lancez l'IDE Thonny sur votre ordinateur.
  • Dans l’IDE Thonny, sélectionnez l'interpréteur MicroPython (Raspberry Pi Pico) en accédant à Outils Options.
  • Dans l’onglet Interpréteur, sélectionnez MicroPython (Raspberry Pi Pico) dans le menu déroulant.
  • Assurez-vous que le port correct est sélectionné. L’IDE Thonny détecte normalement le port automatiquement, mais vous devrez peut-être le sélectionner manuellement (par exemple, COM3 sur Windows ou /dev/ttyACM0 sur Linux).
  • Accédez à Outils Gérer les paquets dans l'IDE Thonny.
  • Recherchez “DIYables-MicroPython-Joystick”, puis trouvez la bibliothèque Joystick créée par DIYables.
  • Cliquez sur DIYables-MicroPython-Joystick, puis cliquez sur le bouton Install pour installer la bibliothèque Joystick.
Bibliothèque de joystick Raspberry Pi Pico
  • Copiez le code ci-dessus et collez-le dans l'éditeur de l'IDE Thonny.
  • Enregistrez le script sur votre Raspberry Pi Pico en procédant comme suit :
    • Cliquez sur le bouton Enregistrer, ou utilisez les touches Ctrl+S.
    • Dans la boîte de dialogue d'enregistrement, vous verrez deux sections : Cet ordinateur et Raspberry Pi Pico. Sélectionnez Raspberry Pi Pico
    • Enregistrez le fichier sous main.py
  • Cliquez sur le bouton vert Exécuter (ou appuyez sur F5) pour exécuter le script. Le script s'exécutera.
  • Faites glisser le joystick vers la gauche, vers la droite, vers le haut ou vers le bas.
  • Appuyez sur la partie supérieure du joystick.
  • Consultez le message dans le Shell situé en bas de Thonny.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot MPY: soft reboot Joystick Position - X: 2003, Y: 2088, pressed count: 0 Joystick Position - X: 1977, Y: 2076, pressed count: 0 Joystick Position - X: 1980, Y: 2078, pressed count: 0 Joystick Position - X: 802, Y: 2076, pressed count: 0 Joystick Position - X: 1201, Y: 2062, pressed count: 0 Joystick Position - X: 1362, Y: 2060, pressed count: 0 Joystick Position - X: 463, Y: 2079, pressed count: 0 Joystick Position - X: 21, Y: 18, pressed count: 0 Button Pressed Joystick Position - X: 22, Y: 18, pressed count: 0 Joystick Position - X: 21, Y: 19, pressed count: 0 Joystick Position - X: 21, Y: 20, pressed count: 0 Joystick Position - X: 21, Y: 18, pressed count: 0 Joystick Position - X: 21, Y: 19, pressed count: 0 Button Released Joystick Position - X: 9, Y: 18, pressed count: 1 Joystick Position - X: 20, Y: 791, pressed count: 1 Joystick Position - X: 22, Y: 901, pressed count: 1 Joystick Position - X: 1130, Y: 2061, pressed count: 1 Joystick Position - X: 1699, Y: 2067, pressed count: 1 Joystick Position - X: 2000, Y: 2054, pressed count: 1 Button Pressed Joystick Position - X: 1972, Y: 2061, pressed count: 1 Joystick Position - X: 1982, Y: 2077, pressed count: 1 Joystick Position - X: 1992, Y: 2074, pressed count: 1 Joystick Position - X: 1992, Y: 2078, pressed count: 1 Joystick Position - X: 1992, Y: 2077, pressed count: 1 Joystick Position - X: 1981, Y: 4095, pressed count: 1 Button Released Joystick Position - X: 3124, Y: 4095, pressed count: 2 Joystick Position - X: 4066, Y: 4095, pressed count: 2 Joystick Position - X: 1998, Y: 2063, pressed count: 2 Joystick Position - X: 1130, Y: 4095, pressed count: 2 Joystick Position - X: 20, Y: 4095, pressed count: 2 Button Pressed Joystick Position - X: 21, Y: 4095, pressed count: 2 Joystick Position - X: 21, Y: 4095, pressed count: 2 Joystick Position - X: 1976, Y: 2082, pressed count: 2 Joystick Position - X: 1974, Y: 2072, pressed count: 2 Button Released Joystick Position - X: 1997, Y: 2062, pressed count: 3
MicroPython (Raspberry Pi Pico) • Board CDC @ COM29 ≡
  • En utilisant le joystick, vérifiez la valeur dans le Shell en bas de Thonny. Si la valeur X est 0, rappelez-vous que cela signifie gauche ; sinon, cela signifie droite. Si la valeur Y est 0, cette position est en haut ; sinon, elle est en bas.

À noter que, bien que la plage théorique des valeurs X/Y soit de 0 à 4095, en pratique, les valeurs n'atteignent généralement pas ces extrêmes en raison des caractéristiques mécaniques du joystick. Cette variation est normale et acceptable pour les applications typiques.

Si vous nommez votre script main.py et que vous l'enregistrez dans le répertoire racine du Raspberry Pi Pico, il s'exécutera automatiquement à chaque mise sous tension ou réinitialisation du Pico. Cela est utile pour les applications autonomes qui doivent commencer à s'exécuter immédiatement lors de la mise sous tension. Si vous nommez votre script sous un autre nom que main.py, vous devrez l'exécuter manuellement depuis le Shell de Thonnys.

Convertit une valeur analogique en commandes GAUCHE/DROITE/HAUT/BAS

Le script MicroPython ci-dessous convertit les valeurs analogiques en commandes : MOVE_LEFT, MOVE_RIGHT, MOVE_UP, MOVE_DOWN.

/* * Ce code Raspberry Pi Pico a été développé par newbiely.fr * Ce code Raspberry Pi Pico est mis à disposition du public sans aucune restriction. * Pour des instructions complètes et des schémas de câblage, veuillez visiter: * https://newbiely.fr/tutorials/raspberry-pico/raspberry-pi-pico-joystick */ from DIYables_MicroPython_Joystick import Joystick import time # Constants for threshold values LEFT_THRESHOLD = 1000 RIGHT_THRESHOLD = 3000 UP_THRESHOLD = 1000 DOWN_THRESHOLD = 3000 # Command constants COMMAND_NO = 0x00 COMMAND_LEFT = 0x01 COMMAND_RIGHT = 0x02 COMMAND_UP = 0x04 COMMAND_DOWN = 0x08 # Initialize the joystick with the corresponding pins for X, Y, and button (GP26-ADC0, GP27-ADC1, GP22) joystick = Joystick(pin_x=26, pin_y=27, pin_button=22) # Configure the debounce time if necessary (default is 50ms) joystick.set_debounce_time(100) # debounce time set to 100 milliseconds def check_commands(x_value, y_value): command = COMMAND_NO # Check for left/right commands if x_value < LEFT_THRESHOLD: command |= COMMAND_LEFT elif x_value > RIGHT_THRESHOLD: command |= COMMAND_RIGHT # Check for up/down commands if y_value < UP_THRESHOLD: command |= COMMAND_UP elif y_value > DOWN_THRESHOLD: command |= COMMAND_DOWN return command while True: x_value = joystick.read_x() y_value = joystick.read_y() command = check_commands(x_value, y_value) if command & COMMAND_LEFT: print("COMMAND LEFT") if command & COMMAND_RIGHT: print("COMMAND RIGHT") if command & COMMAND_UP: print("COMMAND UP") if command & COMMAND_DOWN: print("COMMAND DOWN") time.sleep(0.5) # Delay to reduce the output frequency

Étapes rapides

  • Copiez le code ci-dessus et ouvrez-le dans l’IDE Thonny.
  • Enregistrez le script sur votre Raspberry Pi Pico.
  • Déplacez le joystick à gauche, à droite, en haut, en bas, ou dans n'importe quelle direction.
  • Consultez le message dans le Shell en bas de Thonny.
Shell x
>>> %Run -c $EDITOR_CONTENT
MPY: soft reboot MPY: soft reboot COMMAND UP COMMAND RIGHT COMMAND DOWN COMMAND DOWN COMMAND DOWN COMMAND RIGHT COMMAND DOWN COMMAND RIGHT COMMAND DOWN COMMAND LEFT COMMAND DOWN
MicroPython (Raspberry Pi Pico) • Board CDC @ COM29 ≡

※ Note:

Il pourrait y avoir aucune commande, une commande, ou même deux commandes en même temps, comme HAUT et GAUCHE ensemble.

Convertit des valeurs analogiques en angles pour contrôler deux servomoteurs

Découvrez les détails dans ce tutoriel Raspberry Pi Pico - joystick - servomoteur..

Vidéo

※ NOS MESSAGES

  • N'hésitez pas à partager le lien de ce tutoriel. Cependant, veuillez ne pas utiliser notre contenu sur d'autres sites web. Nous avons investi beaucoup d'efforts et de temps pour créer ce contenu, veuillez respecter notre travail !