L’idée d’écrire un tutoriel sur les joysticks m’est parvenue quand j’ai réalisé la simplicité de leur utilisation et la valeur qu’ils peuvent ajouter à vos projets. Je travaille actuellement sur un projet sympa d’un bras robotique, manipulé par un joystick via une connexion Bluetooth. Mais tout cela on va le traiter très prochainement dans un autre article.
Avant de commencer faisons un petit rappel sur les potentiomètres, Un potentiomètre n’est qu’une résistance variable possédant 3 bornes dont une est reliée à un curseur qui se déplace sur une piste résistante et les 2 autres bornes sont branchées respectivement à deux tensions différentes (dans notre cas à la masse et 5v de la carte arduino). En effet le principe de base d’un potentiomètre est celui d’un diviseur de tension, lorsque le curseur se déplace, il fait varier la résistance et donc la tension à sa borne (U=RxI), ainsi pour une intensité donnée la variation de la résistance entre ses bornes entraine la variation de tension entre celle-ci.
Un joystick peut donner plus d’élégance à vos projets, simplifier votre montage et surtout réduire les pins utilisés. Dans ce tutoriel je vais vous apprendre comment utiliser un joystick et encore plus comprendre comment ça fonctionne.
Un joystick est un composant analogique constitué par deux potentiomètre et un bouton poussoir, chaque potentiomètre permet le contrôle selon un axe donné, pour mieux l’interpréter prenons un exemple très simple, imaginons qu’on veut commander un bras dans deux axes l’axe X et Y, le mouvement dans chaque axe est assuré par un moteur. A cet effet chaque potentiomètre de notre joystick va commander un moteur séparément, c’est assez simple qu’il le soit.
Un module qui n’as rien de bien compliqué, en effet il consiste à lire deux résistances variables (x et y) ainsi qu’un bouton. Ceci dis le format joystick est très sympa à utiliser.
Coté arduino
Broches
- VCC
- GND
- VRx -> Résistance variable x
- VRY -> Résistance variable Y
- SW -> Switch / bouton
Branchement
- MODULE -> ARDUINO
- VCC -> 5V
- GND -> GND
- VRx -> A0
- VRy -> A1
- SW -> Pin 2
Code Arduino:
int VRx = A0;
int VRy = A1;
int SW = 2;
int xPosition = 0;
int yPosition = 0;
int SW_state = 0;
int mapX = 0;
int mapY = 0;
void setup() {
Serial.begin(9600);
pinMode(VRx, INPUT);
pinMode(VRy, INPUT);
pinMode(SW, INPUT_PULLUP);
}
void loop() {
xPosition = analogRead(VRx);
yPosition = analogRead(VRy);
SW_state = digitalRead(SW);
mapX = map(xPosition, 0, 1023, -512, 512);
mapY = map(yPosition, 0, 1023, -512, 512);
Serial.print("X: ");
Serial.print(mapX);
Serial.print(" | Y: ");
Serial.print(mapY);
Serial.print(" | Button: ");
Serial.println(SW_state);
delay(100);
}