Arduino - Joystick
Dans ce tutoriel, nous allons apprendre à utiliser un joystick avec Arduino. En détail, nous allons apprendre :
- Comment fonctionne un joystick
- Comment connecter un joystick à Arduino et programmer pour cela
- Comment convertir les valeurs d'un joystick en valeurs contrôlables telles que les coordonnées XY, la direction du moteur haut/bas/gauche/droite...
Préparation du matériel
Or you can buy the following sensor kits:
1 | × | DIYables Sensor Kit (30 sensors/displays) | |
1 | × | DIYables Sensor Kit (18 sensors/displays) |
À propos du capteur de joystick
Vous voyez probablement le joystick quelque part, par exemple sur une manette de jeu, une télécommande de jouet ou même sur une grande machine réelle comme une commande d'excavatrice.
Le joystick est composé de deux potentiomètres disposés perpendiculairement l'un à l'autre, et d'un bouton-poussoir. Par conséquent, il fournit les sorties suivantes :
- Une valeur analogique (de 0 à 1023) correspondant à la position horizontale (appelée coordonnée X)
- Une valeur analogique (de 0 à 1023) correspondant à la position verticale (appelée coordonnée Y)
- Une valeur numérique d'un bouton-poussoir (HAUT ou BAS)
La combinaison de deux valeurs analogiques peut créer des coordonnées 2D dont le centre représente les valeurs lorsque le joystick est en position de repos. La véritable direction des coordonnées peut être identifiée simplement lorsque vous exécutez un code de test (dans la partie suivante).
Certaines applications peuvent utiliser les trois sorties, certaines peuvent en utiliser seulement certaines.
Brochage
Un joystick a 5 broches :
- Broche GND : doit être connectée à GND (0V)
- Broche VCC : doit être connectée à VCC (5V)
- Broche VRX : délivre une valeur analogique correspondant à la position horizontale (appelée coordonnée X).
- Broche VRY : délivre une valeur analogique correspondant à la position verticale (appelée coordonnée Y).
- Broche SW : est la sortie du bouton-poussoir à l'intérieur du joystick. Elle est normalement ouverte. Si nous utilisons une résistance de tirage sur cette broche, la broche SW sera à l'état HAUT lorsque le bouton n'est pas pressé, et à l'état BAS lorsqu'il est pressé.
Comment ça marche
- Lorsque vous poussez le pouce du joystick vers la gauche/droite, la tension sur la broche VRX change. La plage de tension va de 0 à 5V (0 à gauche et 5V à droite). La valeur de tension est proportionnelle à la position du pouce ⇒ La valeur lue sur la broche analogique de l'Arduino va de 0 à 1023.
- Lorsque vous poussez le pouce du joystick vers le haut/bas, la tension sur la broche VRY change. La plage de tension va de 0 à 5V (0 en haut et 5V en bas). La valeur de tension est proportionnelle à la position du pouce ⇒ La valeur lue sur la broche analogique de l'Arduino va de 0 à 1023.
- Lorsque vous poussez le pouce du joystick dans n'importe quelle direction, la tension dans les broches VRX et VRY change proportionnellement à la projection de la position sur chaque axe.
- Lorsque vous poussez le pouce du joystick de haut en bas, le bouton-poussoir à l'intérieur du joystick se ferme. Si nous utilisons une résistance de tirage sur la broche SW, la sortie de la broche SW passera de 5V à 0V ⇒ La valeur lue sur la broche numérique de l'Arduino passe de HIGH à LOW.
Diagramme de câblage
This image is created using Fritzing. Click to enlarge image
Comment programmer pour un joystick
Le joystick comporte deux parties : analogique (axe X, Y) et numérique (bouton-poussoir).
- Pour les parties analogiques (axes X, Y), il suffit de lire la valeur à partir de la broche d'entrée analogique en utilisant la fonction analogRead().
- Pour la partie numérique (bouton-poussoir) : il s'agit d'un bouton. Le moyen le plus simple et le plus pratique est d'utiliser la bibliothèque ezButton. Cette bibliothèque prend en charge l'anti-rebond pour les boutons et active également une résistance de tirage interne. Vous pouvez en savoir plus sur le bouton dans le tutoriel Arduino - Bouton. Le code sera présenté dans la prochaine session de ce tutoriel.
Après avoir lu les valeurs des broches analogiques, nous pourrions avoir besoin de les convertir en valeurs contrôlables. La partie suivante fournira les codes d'exemple pour cela.
Code Arduino
Cette section fournira les exemples de codes Arduino suivants :
- Exemple de code : lit les valeurs analogiques d'un joystick
- Exemple de code : lit les valeurs analogiques et l'état du bouton d'un joystick
- Exemple de code : convertit la valeur analogique en commandes MOVE_LEFT, MOVE_RIGHT, MOVE_UP, MOVE_DOWN
- Exemple de code : convertit les valeurs analogiques en angles pour contrôler deux moteurs servo (par exemple, dans une caméra pan-tilt)
Lit les valeurs analogiques du joystick
Étapes rapides
- Copiez le code ci-dessus et ouvrez-le avec Arduino IDE.
- Cliquez sur le bouton Upload dans Arduino IDE pour envoyer le code à Arduino.
- Poussez le pouce du joystick au maximum vers la limite, puis faites-le tourner en cercle (dans le sens horaire ou anti-horaire).
- Consultez le résultat sur le moniteur série.
- Pendant que vous faites tourner le pouce du joystick, continuez à observer le moniteur série. Si la valeur X est 0, marquez ou mémorisez la position actuelle comme gauche ⇒ la direction opposée est la droite. Si la valeur Y est 0, marquez ou mémorisez la position actuelle comme haut ⇒ la direction opposée est le bas.
Lit les valeurs analogiques et lit l'état du bouton d'un joystick
Étapes rapides
- Naviguez jusqu'à l'icône Libraries sur la barre gauche de l'IDE Arduino.
- Recherchez "ezButton", puis trouvez la bibliothèque de boutons par ArduinoGetStarted.com
- Cliquez sur le bouton Install pour installer la bibliothèque ezButton.
- Copiez le code ci-dessus et ouvrez-le avec l'IDE Arduino
- Cliquez sur le bouton Upload dans l'IDE Arduino pour téléverser le code sur Arduino
- Poussez le pouce du joystick à gauche/droite/haut/bas
- Poussez le pouce du joystick depuis le haut
- Voir le résultat sur le moniteur série.
Convertit la valeur analogique en commandes MOUVEMENT GAUCHE/DROITE/HAUT/BAS
Étapes rapides
- Copiez le code ci-dessus et ouvrez-le avec Arduino IDE
- Cliquez sur le bouton Upload sur Arduino IDE pour charger le code sur Arduino
- Poussez le pouce du joystick vers la gauche/droite/haut/bas ou dans n'importe quelle direction
- Vérifiez le résultat sur le moniteur série.
※ NOTE THAT:
À un moment donné, il peut n'y avoir aucune commande, une commande ou deux commandes (par exemple, HAUT et GAUCHE en même temps)
Convertit les valeurs analogiques en angles pour contrôler deux servomoteurs.
Le détail est présenté dans le tutoriel Arduino - Le joystick commande le moteur servo