samedi 2 juin 2018

Émuler une souris avec l'Arduino Leonardo

Une caractéristique intéressante des cartes Arduino Leonardo, c'est que les ordinateurs les reconnaissent comme de véritables périphériques USB.  On peut donc programmer le Leonardo afin qu'il se comporte comme un clavier ou une souris.

Le langage Arduino vous propose 7 fonctions permettant de reproduire le mouvement d'une souris d'ordinateur:


  • Mouse.begin() est nécessaire pour initialiser l'émulation et utiliser les autres fonctions décrites ci-dessous.  Typiquement, vous l'utilisez à l'intérieur de setup().  Si vous désirez interrompre l'émulation de la souris, utilisez Mouse.end().
  • Mouse.move(x, y, wheel) permet de faire bouger le pointeur de souris à l'écran de l'ordinateur.  x est le nombre de pixels dont on désire faire bouger le pointeur horizontalement, alors que y est le nombre de pixels dont on désire déplacer le pointeur verticalement.  Notez que ces déplacements sont relatifs à la position initiale du pointeur sur l'écran.
  • Avec Mouse.click(), votre Leonardo aura le même comportement que si vous aviez cliqué avec le bouton gauche de la souris.  Si vous désirez produire un clic sur le bouton droit, vous utilisez Mouse.click(MOUSE_RIGHT).
  • Mouse.press() ressemble à Mouse.click(), sauf que le bouton demeure enfoncé jusqu'à ce que vous appeliez Mouse.release().
  • Mouse.isPressed() est un booléen dont la valeur sera vraie si une le bouton d'une souris reliée à l'ordinateur est enfoncé.

Le site officiel Arduino présente deux exemples très clairs pour construire votre propre souris au moyen de 5 boutons poussoirs, ou pour contrôler le pointeur au moyen d'un joystick analogique.

Question de ne pas refaire inutilement des projets qui existent déjà, je vous propose un petit sketch inutile mais rigolo qui vous permettra  de jouer un tour à vos amis: la souris truquée.  Lorsque vous branchez l'Arduino Leonardo au port USB de l'ordinateur, le pointeur de souris se mettra à bouger avec une trajectoire circulaire, comme dans la vidéo ci-dessous.  Avec une telle souris hyperactive, l'utilisateur aura bien du mal à contrôler son ordinateur...



Mais prenez garde de ne pas vous piéger vous-mêmes: si le pointeur se met à faire des cercles aussitôt que la carte Leonardo est branchée à votre ordinateur, vous serez incapable de téléverser un autre sketch dans la carte, lorsque vous en aurez assez de celui-ci.  Pour cette raison, il faut prévoir un moyen de d'empêcher la carte d'exécuter sa routine.  Dans le sktech ci-dessous, nous vérifions d'abord l'état de la broche numéro 2 de l'Arduino.  Si elle est au niveau logique haut, nous faisons bouger le pointeur de la souris, mais si elle est au niveau logique bas, nous ne faisons rien.  Donc vous reliez la broche 2 à la sortie 5 V au moyen d'un fil conducteur lorsque vous voulez faire tourner le pointeur à l'écran, mais vous la reliez à la masse (GND) lorsque vous souhaitez reprogrammer la carte.




À lire également:

D'autres projets impliquant l'Arduino Leonardo:

Yves Pelletier   (TwitterFacebook)

3 commentaires:

  1. bonjour. et pourrait on imaginer l'émulation d'un click souris au bout de plusieurs minutes et un second au bout de plusieurs heures ? merci d'avance

    RépondreSupprimer
  2. Bonjour, Petit montage sympa, c'est possible d'avoir le sketch. Merci d'avance

    RépondreSupprimer
    Réponses
    1. Merci :)
      Le sketch est à la fin de l'article, entre la vidéo et le paragraphe "À lire également".

      Supprimer