mercredi 1 janvier 2014

[Arduino Leonardo] Faire bouger le pointeur de la souris à l'aide d'un joystick

On va utiliser les 2 articles précédents sur les joysticks.



Dans ce tuto, on va faire bouger la souris de l'ordinateur à l'aide du joystick. Un peu comme le NunChuk de la console Wii (Oui on pourrait utiliser directement un NunChuk mais ici on réutilise les vieux composants d'une vieille manette! UpCycling!)

Programme


int sensorPinX = A0;
int sensorValueX = 0;
int sensorPinY = A1;
int sensorValueY = 0;
int speedMax = 50;
int baseMin = 450;
int baseMax = 550;


void setup() {
  Serial.begin(9600);
  Mouse.begin();
}

void loop() {
  sensorValueX = analogRead(sensorPinX);    
  sensorValueY = analogRead(sensorPinY);    
  if(sensorValueX>baseMax || sensorValueX<baseMin){
    float posX = map(sensorValueX, 0, 1023, -speedMax, speedMax);
    Mouse.move(0, posX, 0);
  }
  if(sensorValueY>baseMax || sensorValueY<baseMin){
    float posY = map(sensorValueY, 0, 1023, -speedMax, speedMax);
    Mouse.move(posY, 0, 0);
  }
  Serial.print(sensorValueX);
  Serial.print(";");
  Serial.println(sensorValueY);
  delay(50);
}
 
On a repris le même programme que l'article précédent en ajoutant la gestion de la souris.
On ajoute dans le setup la déclaration de la gestion de souris.
Dans le loop j'ai ajouté 2 conditions car je ne voulais pas avoir un mouvement de souris continu. Je ne traite les valeurs uniquement lorsque le joystick n'est plus en position repos (comprise entre 450 et 550 mais on peut revoir ces valeurs).

Uploadez le programme sur votre carte Arduino Leonardo (ca ne marchera pas avec une carte Arduino Uno) et testez.

La vitesse se règle avec la variable speedMax.
ATTENTION à ne pas trop rapprocher les valeurs de baseMin et baseMax sinon la souris va bouger sans arrêt. Si tout devient incontrôlable vous pouvez tout arrêter le processus en appuyant sur le bouton reset de l'Arduino.

Aucun commentaire:

Enregistrer un commentaire