Différences entre versions de « MicroPython-Hack-souris »

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche
 
(5 versions intermédiaires par le même utilisateur non affichées)
Ligne 1 : Ligne 1 :
 
{{MicroPython-Hack-Prepare-NAV}}
 
{{MicroPython-Hack-Prepare-NAV}}
  
{{Traduction}}
 
 
== Transformer votre PyBoard en souris ==
 
== Transformer votre PyBoard en souris ==
 
{{bloc-etroit|text=La carte pyboard est un périphérique USB et peut être configurée pour agir comme une souris à la place du lecteur Flash USB que vous connaissez déjà.
 
{{bloc-etroit|text=La carte pyboard est un périphérique USB et peut être configurée pour agir comme une souris à la place du lecteur Flash USB que vous connaissez déjà.
Ligne 65 : Ligne 64 :
  
 
== Transformer l'accéléromètre en souris ==
 
== Transformer l'accéléromètre en souris ==
{{traduction}}
+
Maintenant, faisons bouger la souris en fonction de l'angle de la carte PyBoard, ceci est rendu possible grâce à l'accéléromètre. Le code suivant peut être tapé directement sur sur l'invite de commande REPL ou placé dans le fichier {{fname|main.py}}. Ici, nous le plaçons dans {{fname|main.py}} parce que nous allons également apprendre comment passer en "Safe Mode".
  
Now lets make the mouse move based on the angle of the pyboard, using the accelerometer. The following code can be typed directly at the REPL prompt, or put in the {{fname|main.py}} file. Here, we’ll put in in {{fname|main.py}} because to do that we will learn how to go into safe mode.
+
Pour le moment, la carte PyBoard agit comme un périphérique USB série et un périphérique HID (une souris). Par conséquent, cela empêche d'accéder au système de fichier pour éditer le fichier {{fname|main.py}}.
  
At the moment the pyboard is acting as a serial USB device and an HID (a mouse). So you cannot access the filesystem to edit your {{fname|main.py}} file.
+
De même vous ne pouvez pas modifier votre fichier {{fname|boot.py}} pour sortir du mode HID et revenir au mode normal (lecteur USB)...
  
You also can’t edit your {{fname|boot.py}} to get out of HID-mode and back to normal mode with a USB drive...
+
Pour y arriver, vous avez besoin de passer en "Safe Mode". Cela est décrit en détail dans le [[MicroPython-Hack-safemode|tutoriel sur le Safe-Mode]] mais vous pouvez répéter les opérations ci-dessous:
  
To get around this we need to go into safe mode. This was described in the [safe mode tutorial](tut-reset), but we repeat the instructions here:
+
# Maintenez le bouton USR enfoncé.
 +
# Pendant que vous maintenez le bouton USR enfoncé: pressez et relachez le bouton RST (''Reset'') pour réinitialiser le votre carte PyBoard.
 +
# Les LEDs vont alors cycler de Vert à orange à vert+orange (et inversement).
 +
# Maintenez le bouton USR enfoncé jusqu'à ce que le LED orange soit allumée, et relachez alors le bouton USR.
 +
# La LED orange va clignoter 4 fois rapidement PUIS s'éteindre.
 +
# Vous êtes en Safe Mode.
  
# Hold down the USR switch.
+
En "Safe Mode", les fichiers {{fname|boot.py}} et {{fname|main.py}} ne sont pas exécutés et la carte PyBoard démarre avec ses paramètres par défaut. Cela signifie que, maintenant, vous pouvez accéder au système de fichier (le lecteur USB devrait apparaître).
# While still holding down USR, press and release the RST switch.
+
Il est alors possible d'éditer {{fname|main.py}}. (Laissez le fichier {{fname|boot.py}} tel-quel parce nous voulons toujours revenir dans le mode HID après avoir terminé les modifications dans le fichier {{fname|main.py}}.)
# The LEDs will then cycle green to orange to green+orange and back again.
 
# Keep holding down USR until only the orange LED is lit, and then let go of the USR switch.
 
# The orange LED should flash quickly 4 times, and then turn off.
 
# You are now in safe mode.
 
  
In safe mode, the {{fname|boot.py}} and {{fname|main.py}} files are not executed, and so the pyboard boots up with default settings. This means you now have access to the filesystem (the USB drive should appear), and you can edit {{fname|main.py}}. (Leave {{fname|boot.py}} as-is, because we still want to go back to HID-mode after we finish editting {{fname|main.py}}.)
+
Placez le code suivant dans le fichier {{fname|main.py}}:
 
 
In {{fname|main.py}} put the following code:
 
  
 
  <nowiki>import pyb
 
  <nowiki>import pyb
Ligne 95 : Ligne 93 :
 
     pyb.delay(20)</nowiki>
 
     pyb.delay(20)</nowiki>
  
Save your file, eject/unmount your pyboard drive, and reset it using the RST switch. It should now act as a mouse, and the angle of the board will move the mouse around. Try it out, and see if you can make the mouse stand still!
+
Sauvez votre fichier, éjectez/démontez le lecteur de la carte PyBoard puis réinitialisez votre carte avec le bouton RST. La carte devrait maintenant agir comme une souris et l'angle de la carte bougera la souris. Essayez ce programme et voyez comment vous pouvez immobiliser la souris!
  
Press the USR switch to stop the mouse motion.
+
Pressez le bouton '''USR''' pour arrêter les déplacements de la souris.
  
You’ll note that the y-axis is inverted. That’s easy to fix: just put a minus sign in front of the y-coordinate in the {{fname|pyb.hid()}} line above.
+
Vous remarquerez que l'axe-Y est inversé. C'est vraiment facile à corrigé: placez juste un signe moins devant la coordonnée-y de la ligne {{fname|pyb.hid()}} (ci dessus).
  
 
== Restaurer l'état normal de la PyBoard ==
 
== Restaurer l'état normal de la PyBoard ==
If you leave your pyboard as-is, it’ll behave as a mouse everytime you plug it in. You probably want to change it back to normal. To do this you need to first enter safe mode (see above), and then edit the boot.py file. In the {{fname|boot.py}} file, comment out (put a # in front of) the line with the {{fname|CDC+HID}} setting, so it looks like:
+
Si vous laissez la carte PyBoard tel quelle, elle agira comme une souris à chaque fois que vous la brancherez.  
 +
 
 +
Vous voudrez certainement revenir au fonctionnement normale. Pour y arriver, vous aurez d'abord besoin d'entrer en "Safe Mode" (vois ci-dessus) pour pouvoir éditer le fichier boot.py. Dans le fichier {{fname|boot.py}}, commentez la ligne (en plaçant un # en début de ligne) qui contient la configuration {{fname|CDC+HID}}. De sorte, la ligne doit ressembler à ceci:
  
 
  <nowiki>#pyb.usb_mode('CDC+HID') # act as a serial device and a mouse</nowiki>
 
  <nowiki>#pyb.usb_mode('CDC+HID') # act as a serial device and a mouse</nowiki>
  
Save your file, eject/unmount the drive, and reset the pyboard. It is now back to normal operating mode.
+
Savez votre fichier, éjectez/démontez le lecteur et réinitialisez votre carte PyBoard (en pressant le bouton reset). Elle fonctionnera maintenant en mode normal.
  
 
{{MicroPython-Hack-Souris-TRAILER}}
 
{{MicroPython-Hack-Souris-TRAILER}}

Version actuelle datée du 13 avril 2015 à 20:29


MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.

Transformer votre PyBoard en souris

La carte pyboard est un périphérique USB et peut être configurée pour agir comme une souris à la place du lecteur Flash USB que vous connaissez déjà.

Pour transformer votre PyBoard en périphérique souris, vous devez d'abord editer le fichier boot.py et y changer la configuration USB. Si vous n'avez pas encore modifié votre fichier boot.py il devrait ressembler à quelque-chose comme ceci:

# boot.py -- run on boot-up
# can run arbitrary Python, but best to keep it minimal

import pyb
#pyb.main('main.py') # main script to run after this one
#pyb.usb_mode('CDC+MSC') # act as a serial and a storage device
#pyb.usb_mode('CDC+HID') # act as a serial device and a mouse

Vous trouverez ci-dessous une version du même fichier avec une traduction des commentaire pour vous aider à en comprendre le contenu.

# boot.py -- executé au démarrage
# Peut exécuter un script Python arbitraire, mais le mieux est de le garder aussi minimaliste que possible

import pyb
#pyb.main('main.py') # Le script principal à exécuter après celui-ci.
#pyb.usb_mode('CDC+MSC') # agit comme périphérique série et de stockage
#pyb.usb_mode('CDC+HID') # agit comme périphérique série et souris

Pour activer le mode souris, il faut décommenter la dernière ligne du fichier.

Cette ligne du fichier doit alors ressembler à ceci:

pyb.usb_mode('CDC+HID') # act as a serial device and a mouse

Si vous avez déjà modifié votre fichier boot.py alors le code minimum pour fonctionner est celui-ci:

import pyb
pyb.usb_mode('CDC+HID')

Cela informe le pyboard de se configurer son USB comme un CDC (port série) et HID (interface Homme-Machine dite "human interface device", dans notre cas, c'est une souris) au moment du boot.

Ejectez/démonter le lecteur USB/Flash de votre carte Pyboard et réinitialisez votre carte en pressant le bouton RST. Votre PC détectera maintenant puboard comme une souris!

Envoyer des événements souris

Pour que notre souris-python fasse des choses, il faut que le programme envoie des événements souris à notre PC. Pour commencer, nous allons faire cela manuellement avec une invite de commande REPL (voyez les précédents tutoriels). Connectez-vous sur votre PyBoard à l'aide de votre logiciel terminal favoris et tapez la commande suivante:

>>> pyb.hid((0, 10, 0, 0))

Votre souris devrait se déplacer de 10 pixels sur la droite!

La commande ci-dessus envoi 4 informations: l'état du bouton, x, y et défilement (scroll en anglais). Le numéro 10 indique à notre ordinateur qu'il y a un déplacement de 10 pixels (10 points) dans la direction x.

Faisons osciller notre souris de gauche à droit:

>>> import math
>>> def osc(n, d):
...   for i in range(n):
...     pyb.hid((0, int(20 * math.sin(i / 10)), 0, 0))
...     pyb.delay(d)
...
>>> osc(100, 50)

Le premier argument de la fonction osc est le nombre d'événement souris à envoyer. Le second argument est le délais (en millisecondse) entre les événements. Testez la fonction avec différentes valeurs numériques.

Exercice

Une petit exercice amusant est de faire dessiner un cercle à la souris.

Transformer l'accéléromètre en souris

Maintenant, faisons bouger la souris en fonction de l'angle de la carte PyBoard, ceci est rendu possible grâce à l'accéléromètre. Le code suivant peut être tapé directement sur sur l'invite de commande REPL ou placé dans le fichier main.py. Ici, nous le plaçons dans main.py parce que nous allons également apprendre comment passer en "Safe Mode".

Pour le moment, la carte PyBoard agit comme un périphérique USB série et un périphérique HID (une souris). Par conséquent, cela empêche d'accéder au système de fichier pour éditer le fichier main.py.

De même vous ne pouvez pas modifier votre fichier boot.py pour sortir du mode HID et revenir au mode normal (lecteur USB)...

Pour y arriver, vous avez besoin de passer en "Safe Mode". Cela est décrit en détail dans le tutoriel sur le Safe-Mode mais vous pouvez répéter les opérations ci-dessous:

  1. Maintenez le bouton USR enfoncé.
  2. Pendant que vous maintenez le bouton USR enfoncé: pressez et relachez le bouton RST (Reset) pour réinitialiser le votre carte PyBoard.
  3. Les LEDs vont alors cycler de Vert à orange à vert+orange (et inversement).
  4. Maintenez le bouton USR enfoncé jusqu'à ce que le LED orange soit allumée, et relachez alors le bouton USR.
  5. La LED orange va clignoter 4 fois rapidement PUIS s'éteindre.
  6. Vous êtes en Safe Mode.

En "Safe Mode", les fichiers boot.py et main.py ne sont pas exécutés et la carte PyBoard démarre avec ses paramètres par défaut. Cela signifie que, maintenant, vous pouvez accéder au système de fichier (le lecteur USB devrait apparaître). Il est alors possible d'éditer main.py. (Laissez le fichier boot.py tel-quel parce nous voulons toujours revenir dans le mode HID après avoir terminé les modifications dans le fichier main.py.)

Placez le code suivant dans le fichier main.py:

import pyb

switch = pyb.Switch()
accel = pyb.Accel()

while not switch():
    pyb.hid((0, accel.x(), accel.y(), 0))
    pyb.delay(20)

Sauvez votre fichier, éjectez/démontez le lecteur de la carte PyBoard puis réinitialisez votre carte avec le bouton RST. La carte devrait maintenant agir comme une souris et l'angle de la carte bougera la souris. Essayez ce programme et voyez comment vous pouvez immobiliser la souris!

Pressez le bouton USR pour arrêter les déplacements de la souris.

Vous remarquerez que l'axe-Y est inversé. C'est vraiment facile à corrigé: placez juste un signe moins devant la coordonnée-y de la ligne pyb.hid() (ci dessus).

Restaurer l'état normal de la PyBoard

Si vous laissez la carte PyBoard tel quelle, elle agira comme une souris à chaque fois que vous la brancherez.

Vous voudrez certainement revenir au fonctionnement normale. Pour y arriver, vous aurez d'abord besoin d'entrer en "Safe Mode" (vois ci-dessus) pour pouvoir éditer le fichier boot.py. Dans le fichier boot.py, commentez la ligne (en plaçant un # en début de ligne) qui contient la configuration CDC+HID. De sorte, la ligne doit ressembler à ceci:

#pyb.usb_mode('CDC+HID') # act as a serial device and a mouse

Savez votre fichier, éjectez/démontez le lecteur et réinitialisez votre carte PyBoard (en pressant le bouton reset). Elle fonctionnera maintenant en mode normal.



Source: Making the pyboard act as a USB mouse écrit par/written by Damien P.George

Traduit par Meurisse D. pour MCHobby.be - Translated by Meurisse D. for MCHobby.be

Traduit avec l'autorisation de micropython.org - Translated with the authorisation of micropython.org

Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : «  Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.

L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.