summaryrefslogtreecommitdiff
path: root/content/Informatique/2009-02-19-wiimote1.rst
blob: 94577d421dfd5e7175937ba89f20b9ff9d6d53b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
.. -*- mode: rst -*-
.. -*- coding: utf-8 -*-

Un pilote wiimote sous Linux en python
--------------------------------------

:date: 2009/02/19
:tags: Programmation, Wiimote

La wiimote est la manette de contrôle de la console wii de Nintendo, un
outil merveilleux dont voici un petit résumé de ses fonctionnalités :

-  Accéléromètres
-  Caméra infrarouge
-  Émetteur/Récepteur Bluetooth
-  11 boutons

( voir le détail sur la page de
`wikipédia <http://fr.wikipedia.org/wiki/Wiimote>`_ )

En disposant d'un récepteur bluetooth, il est possible de se connecter à
la télécommande et de récupérer ses informations, mieux, avec le projet
`cwiid <http://abstrakraft.org/cwiid/>`_, on peut transformer la wiimote
en souris !

Ainsi selon le mode dans lequel se trouve la télécommande, on contrôle
notre curseur en inclinant la télécommande, ou en la pointant vers une
source infrarouge

..

    La source infrarouge pouvant être la sensor bar fournie avec la
    console, ou une source externe, bougie lampe ou tout ce dont pouvez
    disposer diffusant de la chaleur à partir d'un point unique

Le pilote fourni avec cwiid fonctionne mais n'est pas optimisé. Il
arrive que la souris parte dans une direction incontrôlée, ou de ne pas
pouvoir accéder à certaines parties de l'écran.

La faute est due au pilote intégré qui se contente juste de placer le
pointeur sur la source infrarouge, avec quelques petites optimisations.

En effet, le capteur de la wiimote nous indique quelle est la position
de toutes les sources infrarouges perçues ( et nous fourni également des
informations sur leur intensité ), mais la conversion en pointeur est
laissée au pilote :

- Quelle source choisir comme référence ?
- Comment gérer les cas où une source est sortie du champ de vision ?
- Comment réagir quand cette source revient dans le champ de vision ?

Tout ceci doit être pris en compte pour pouvoir offrir une ergonomie au
curseur et faciliter le contrôle.

Heureusement pour nous le pilote nous donne la possibilité de réécrire
nos propres moteurs, et donc de gérer nous même la manière dont on veut
que la souris réagisse. Nous avons même le choix dans le langage ! En
effet, nous pouvons choisir entre offrir un plugin compilé ( le pilote
est écrit en C ), ou l'écrire en python. C'est cette deuxième option que
je vais présenter dans les articles qui suivront.