LE MODULE ME JOYSTICK
Le module "Me Joystick" comporte un mini-joystick et un bouton poussoir. Le module délivre donc deux tensions analogiques (comprise entre 0 et 5 V) fonction de la position du joystick et un niveau logique fonction de l'état du bouton poussoir. Les fonctions contenues dans la bibliothèque Makeblock sont :
-
Me4Joystick joystick(PORT_X) où PORT_X est le port sur lequel est branché le module. Cette fonction permet de créer l'objet.
-
joystick.readX() renvoie la position en X du joystick.
-
joystick.readY() renvoie la position en Y du joystick.
-
joystick.CalCenterValue(X_offser,Y_offset) où X_offset et Y_offset représentent l'écart entre la position au repos et la position idéale (X=0 et Y=0). Cette fonction permet de recalibrer le joystick.
-
joystick.angle() renvoie l'angle entre X et Y.
-
joystick.OffCenter() renvoie la distance entre la position du joystick et le centre (joystick au repos).
Le tableau ci- dessous donne les ports des cartes "Me Orion" et "Me Auriga" pouvant être connectés à ce module.
Exemple :
Nous souhaitons déplacer un cercle dessiné sur un module "Me Afficheur LCD" en fonction de la position d'un module "Me Joystick".
Liste du matériel :
Programme :
/*Joystick_Makeblock est un programme qui déplace un cercle sur le module "Me Afficheur LCD TFT" en fonction de la position du joystick du module "Me Joystick". */
#include "MeOrion.h" // appel des bibliothèques
#include <SoftwareSerial.h>
MeSerial serie(PORT_5); // création de l'objet serie (module branché sur le PORT5)
MeJoystick joystick(PORT_6); // création de l'objet joystick (module branché sur le PORT6)
int x;
int y;
void setup()
{
serie.begin(9600); // initialisation de la liaison série à 9600 bit/s
joystick.CalCenterValue(12,2); // calibration du joystick. Au repos, celui que je possède affiche x=-12 et y=-2
}
void loop()
{
x = joystick.readX(); // on récupère la position du joystick
y = joystick.readY();
x=map(x,-500,500,10,305); // on change les coordonnées en tenant compte de la taille du point (10) et de l'écran (320X240)
y=map(y,-500,500,230,10);
serie.print("CLS(0);"); // on efface l'écran
serie.print("DR0;"); // on configure l'écran dans le sens horizontal
serie.print("CIRF("); // on dessine un cercle de centre
serie.print(x); // e x
serie.print(',');
serie.print(y); // et y
serie.println(",10,1);"); // et de diamètre 10 et de couleur rouge
delay(200);
}