summaryrefslogtreecommitdiff
path: root/content/Informatique/2009-03-11-wiimote_fr.rst
diff options
context:
space:
mode:
Diffstat (limited to 'content/Informatique/2009-03-11-wiimote_fr.rst')
-rw-r--r--content/Informatique/2009-03-11-wiimote_fr.rst115
1 files changed, 115 insertions, 0 deletions
diff --git a/content/Informatique/2009-03-11-wiimote_fr.rst b/content/Informatique/2009-03-11-wiimote_fr.rst
new file mode 100644
index 0000000..d61e6db
--- /dev/null
+++ b/content/Informatique/2009-03-11-wiimote_fr.rst
@@ -0,0 +1,115 @@
+.. -*- mode: rst -*-
+.. -*- coding: utf-8 -*-
+
+Controller la wiimote
+#####################
+
+
+:date: 2009-03-11
+:tags: Programmation, Wiimote, Python
+:slug: controling-the-wiimote-i
+:lang: fr
+:logo: /images/wiican.png
+:summary: |abstract|
+
+
+Création d'un plugin pour wminput
+---------------------------------
+
+Il existe de nombreux tutorials sur comment configurer cwiid, je voud laisse
+les suivre pour obtenir un système fonctionnel pour la wiimote (vous pourrez
+trouver des liens à la fin de cet article). Soyez sûr que la wiimote est
+reconnue avant de continuer.
+
+|abstract|
+
+.. |abstract| replace::
+ Voici un code que l'on peut utiliser comme base pour la création de notre
+ driver. Lancé en tant que main, il utilise pygame pour afficher les sources
+ infrarouges captées par la wiimote, mais il peut également être utilisé
+ comme plugin pour wminput (même s'il ne fait rien pour l'instant).
+
+
+Vous pouvez le télécharger ici :
+`wm\_control.py <http://www.chimrod.com/downloads/wiimote/ir_control_0.py>`_
+(Code disponible sous licence GPL 3+)
+
+Le code :
+
+.. code-block:: python
+
+ import wmplugin
+
+Cet import n'existe pas, mais est créé par wminput lorsque celui-ci est lancé.
+Il fourni la connexion avec le cœur wminput. Il vous suffit de placer le script
+dans le répertoire de plugin de wminput (sur ma debian il se situe dans
+`/usr/lib/cwiid/plugins/`)
+
+.. code-block:: python
+
+ def wmplugin_init(id, wiimote_arg):
+ wmplugin.set_rpt_mode(id, cwiid.RPT_IR | cwiid.RPT_BTN)
+ return
+
+ def wmplugin_info():
+ return [],
+ [("X", wmplugin.REL | wmplugin.ABS, 1024, 0, 0, 0),
+ ("Y", wmplugin.REL | wmplugin.ABS, 768, 0, 0, 0)],
+ []
+
+On instancie la wiimote ici et actions le mode InfraRouge. Le nom est choisi
+par wminput si nous désirons pouvoir l'utiliser comme plugin. On déclare que le
+plugin retourne les coordonées X et Y dans un système de coordonées relative
+(l'ensemble des paramètres sont disponibles ici : `actions list
+<http://abstrakraft.org/cwiid/browser/trunk/wminput/action_enum.txt>`_)
+
+Si nous voulons définir de nouvons boutons, nous avons juste à les nommer dans
+la première list, ils seront accessibles dans le fichier de configuration sous
+le nom `plugin.[buton\_name] = ACTION`
+
+.. code-block:: python
+
+ def wmplugin_exec(messages):
+ '''Wiimote callback managing method
+ Recieves a message list, each element is different, see the libcwiid docs'''
+ x = y = 0
+
+ for msg in messages:
+ if msg[0] == cwiid.MESG_IR:
+ x, y = ir_sensor.get_movement(msg)
+ return [], (x, y)
+
+Voici le cœur de notre driver. Le nom de la méthode est également imposé par
+wminput, de même que le format de retour. Nous recevons en paramètres la liste
+des messages reçus par la wiimote.
+
+Si nous avons défini des boutons, il nous faut retourner leur état ici. Il
+s'agit jute d'un booléen indiquant si le bouton est préssé (`True`) ou non
+(`False`).
+
+Cette méthode ne retourne aucun autre parametres, et cela nous pose problème
+car nous avons besoin de sauvegarder l'état du curseur entre deux appels. J'ai
+contourné le problème en utilisant des arguments par défaut à la fonction
+`get_movement` pour pouvoir stocker l'environnement d'un appel à un autre :
+
+.. code-block:: python
+
+ def get_movement(msg, _old_points=[], _old_position = [0, 0]):
+ return 0, 0
+
+Cette méthode retourne la difference entre la précédente position du curseur et
+la nouvelle : `(0, 0)` signifie que le curseur n'a pas bougé, `(-10, 0)`
+représente un déplacement vers la gauche.
+
+Pour l'instant, le plugin ne bouge pas le curseur, et ne lie pas les résultats
+envoyés par la wiimote, mais vous avez assez d'information pour créer votre
+propre plugin pour controller la wiimote. Vous pouvez accéder aux méthodes de
+cwiid pour activer les leds, mettre en marche les differents modes (infrarouge,
+accéléromètre, vibration, …) et définir vos propres actions.
+
+Links :
+
+`Le projet cwiid <http://abstrakraft.org/cwiid/>`_
+
+`Installer Cwiid ( Ubuntu Documentation
+) <https://help.ubuntu.com/community/CWiiD>`_