Comment utiliser le Joystick Shield Arduino ?

Projet par
Nabil.J

Joystick ky-021 / LCD i2c / Arduino

Dans ce tutoriel, nous allons voir comment utiliser Arduino Joystick Shield. Il existe différentes versions, mais nous utiliserons le module Joystick axes avec bouton poussoir. Il comporte des fonctionnalités intéressantes et pourra être utilisés de différentes manières dans votre application.

Alors comprenons comment ça marche !

Arduino

Image Matériel Qt. Description Prix
Clone Arduino Uno R3 - RobotDyn - Avec Pins A6 et A7
C'est un micro-contrôleur très largement utilisé par la communauté des makers.
Cette version de l'UNO R3, avec ATMega...
12.90 €
Module Joystick 2 axes avec Bouton Poussoir - Arduino et Raspberry Module Joystick 2 axes - X,Y - Arduino et Raspberry. En appuyant sur le levier verticalement, vous actionnerez un bouton... 2.99 €
Ecran LCD 2004 avec adaptateur I2C - Arduino
Écran LCD 2004 (20 caractères, 4 lignes) pour projets Arduino et électroniques. Cet écran est livré avec un adaptateur I2C qui... 12.99 €
BreadBoard 85mm x 55 mm 400 Trous - S - Prototypage Arduino Une breadborad 400 trous idéale pour l'installation sur une plateforme de prototypage, pour développer vos projets de façon... 3.99 €
40 Cavaliers Dupont 20cm Mâle/Mâle

40 Cavaliers (jumpers) 20 cm type "Dupont" Mâle-Mâle. Ce sont les cavaliers types à utiliser pour les prototypages sur...

2.39 €
Ajouter au panier 35.26 €
Image Matériel Qt. Description Prix

Instructions

1 - Présentation du joystick 10 Minute(s)

La manette analogique est similaire à deux potentiomètres connectés ensemble, l’un pour le mouvement vertical (axe Y) et l’autre pour le mouvement horizontal (axe X). Le joystick est également livré avec un bouton poussoir . Il peut être très pratique pour les jeux rétro, le contrôle de robot ou les voitures RC.

 

22O_vNT_L4M3XynUDP4vM8_QMcatL0fL8yWflllm

 

2 - Les bases d’utilisation du joystick avec Arduino 15 Minute(s)

L'Arduino Uno ou toute autre carte Arduino utilisant Atmega328 en tant que microcontrôleur, a une résolution ADC de 10 bits. Par conséquent, les valeurs sur chaque canal analogique peuvent varier de 0 à 1023. Maintenant, la connexion des entrées analogiques VRx à A2 et VRy à A1 doit afficher les valeurs indiquées dans l'image ci-dessous.

 

YNqw8NWezdmsPRtUhRx85mJ2BRjJGBYjIVdOfGLm

v6lHVhLK3erayhYuNm6NqoHPSo3y3GRsC0msqlCS

La position d'origine du bâton est à (x, y : 511 511) . Si le manche est déplacé d'un axe à l'autre sur l'axe X, les valeurs X passeront de 0 à 1023 et une chose similaire se produira lors d'un déplacement le long de l'axe Y. Sur les mêmes lignes, vous pouvez lire la position du bâton n'importe où dans la moitié supérieure de l'hémisphère en combinant ces valeurs.

Le joystick a deux potentiomètres, que vous connectez aux broches analogiques A2 et A1 sur votre Arduino. La valeur de A2 correspond à la position X. La valeur de A1 correspond à la position Y. Pour lire ces valeurs analogiques, utilisez la fonction AnalogRead (). On va utiliser la broche A0 pour la lecture de l’état du bouton poussoir SW.

3 - Branchement du joystick à la carte RobotDyn (Arduino) UNO 20 Minute(s)

1ZjQSNjKu_SC1ZI4HP3-FmV42FABLh0efTjo_DA6

Matériel

1 x Arduino Uno
1 x Joystick Shield Arduino Ky 023

Etapes de câblage

  1. Fixez votre shield de joystick sur la carte Arduino

  2. Connectez votre carte Arduino à votre PC

  3. La LED s'allumera sur votre shield de joystick, indiquant que cela fonctionne correctement

  4. Écrivez votre code et compilez-le avant de le téléverser sur votre carte. Il est recommandé de compiler votre code avant de le téléverser

  5. Une fois le programme téléversé, exécutez le moniteur série pour observer les valeurs

  6. Déplacez le joystick dans différentes directions et vous remarquerez que les valeurs sur le moniteur série changeront

Vous pouvez déplacer le joystick dans 8 directions: haut, droite, droite, bas, bas, gauche, gauche. Si les valeurs changent sur votre moniteur série, votre module fonctionne correctement.

4 - Utilisation d’un écran LCD I2C 20 Minute(s)

En ce qui concerne l'architecture matérielle, le câblage est très simple. Ceux qui disposent de l'Arduino Uno ou d'une carte compatible comme la RobotDyn UNO (disponible sur notre boutique) utiliseront les connecteurs A4 pour SDA (les données) et A5 pour SCL (l'horloge).

L'architecture du bus est simple, ici avec deux périphériques sur le bus I2C :

mcAXLTI1GNktFtrwdNwTH4vPaR1Nr_0_4iLmm1-h

Source : nxp.com

Avec un seul équipement I2C connecté à l'Arduino, les résistances de tirage au plus (pull-up resistors) ne sont pas (normalement) requises, car le microcontrôleur ATmega328 de l'Arduino les intègre déjà. Si plusieurs équipements sont connectés au bus, utilisez deux résistances de 10 kΩ chacune. Comme souvent, ce sont les tests que vous effectuerez en prototypant un circuit sur une plaquette de câblage rapide que vous jugerez de leur nécessité. Parfois, dans les fiches techniques (datasheets), vous trouverez d'autres valeurs de résistance, du 4,7 kΩ par exemple. Dans ce cas, suivez les recommandations du constructeur.

La distance maximale maître-esclave pour un bus I2C est d'environ 1 mètre et dépend de plusieurs facteurs comme la capacité électrique du bus ou le débit de transmission. Cette distance peut être sensiblement augmentée en passant par des interfaces spécifiques (un i2c-bus extender amplifie le courant débité par les broches SDA et SCL, ce qui augmente la portée du signal).

Chaque équipement peut être connecté au bus dans n'importe quel ordre, et certains équipements peuvent même passer du statut de maître à esclave et inversement. Dans ce tutoriel, la carte Arduino sera dans la situation du maître et le composant connecté au bus I2C sera en situation d'esclave. De l'Arduino, on peut « écrire » sur la ligne pour envoyer des données vers un composant, ou « lire » la ligne pour récupérer les données retournées par celui-ci.

Se pose maintenant la question de savoir comment différencier les composants connectés sur le bus. En fait, chacun d'entre eux doit posséder une adresse unique, fixée par le constructeur et parfois configurable. Cette adresse sera utilisée pour écrire ou lire les données vers le composant souhaité.

Pour communiquer en suivant le protocole I2C, on inclura une bibliothèque Arduino dans les croquis, ici nommée Wire ainsi qu’une bibliothèque LiquidCrystal_I2C.

Câblage 

Branchez le module LCD aux broches de l’Arduino comme représenté ci-dessous :

jOhB7M_4XkxhuVU-XAkGRbB2Us5LVWgvWOE57QkG

Afficheur LCD i2C Arduino
GND GND
VCC 5V
SDA A4
SCL A5

Installation de la bibliothèque

Pour pouvoir utiliser l’afficheur LCD, la bibliothèque LiquidCrystal_I2C doit être installée.
Ouvrez l’IDE Arduino et aller dans Croquis -> Inclure une bibliothèque -> ajouter les bibliothèques.Zip -> parcourir votre ordinateur et cliquez sur le fichier ci joint “LiquidCrystal_I2C-1.1.2.zip”.  Une fois la bibliothèque installée, vous pouvez utiliser votre écran LCD i2C et afficher vos messages de texte.

Matériel

1 x Arduino Uno
1 x Joystick Shield Arduino Ky 023
1 x Ecran LCD i2c

WpqN_EBFCp1L_tGmDtvsFWWt2uq5MgjXo9xIkP0k

Le code ci joint vous permet d’afficher la position du joystick par rapport à l’axe X et l’axe Y.

 

Vous en avez fait une copie?