Hace rato que debí postear este mensaje (la fecha del programa fuente indica 9 de junio del 2013) así que voy a aprovechar mientras se actualiza Pidora.
Echar a andar un control Wii Nunchuck en la Raspberry Pi no tiene ningún chiste, tal como dice Resident Bull. Echar a andar un Control Clásico Wii tampoco debe tener mucho chiste :-P. De eso trata este post.
Materiales:
- 1 Raspberry Pi (y todo que lleva alrededor, por supuesto)
- 1 Control Clásico Wii
- 1 Adaptador WiiChuck
- 4 cables jumper F-F
Conexiones:
De la Raspberry Pi al Adaptador WiiChuck:
- Pin 1 a "+".
- Pin 6 a "-".
- Pin 3 a "d".
- Pin 5 a "c".
Al igual que el Wii Nunchuck, el Control Clásico envía un paquete de datos I2C de 48 bits. Pero el formato es totalmente diferente:
| Bit | ||||||||
| Byte | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| 0 | RX<4:3> | LX<5:0> | ||||||
| 1 | RX<2:1> | LY<5:0> | ||||||
| 2 | RX<0> | LT<4:3> | RY<4:0> | |||||
| 3 | LT<2:0> | RT<4:0> | ||||||
| 4 | BDR | BDD | BLT | B- | BH | B+ | BRT | 1 |
| 5 | BZL | BB | BY | BA | BX | BZR | BDL | BDU |
Allí caben: los joysticks analógicos izquierdo (LX,LY) y derecho (RX,RY); dos disparadores LT, LR; el D-Pad: arriba, abajo, izquierda, derecha; y un titipuchal de botones: A, B, X, Y, ZL, ZR, +, -, HOME, LT y LR (sí, los disparadores también tienen botones).
Decodificar semejante estructura de datos requiere de unas de las tres virtudes del programador: lazziness. En lugar de andar aplicando máscaras y corrimientos cada vez que tienes que utilizar un dato, lo mejor es dejar que el compilador de encargue de todo eso:
struct wii_classic {
unsigned lx:6;
unsigned rx43:2;
unsigned ly:6;
unsigned rx21:2;
unsigned ry:5;
unsigned lt43:2;
unsigned rx0:1;
unsigned rt:5;
unsigned lt20:3;
unsigned padding:1;
unsigned brt:1;
unsigned bplus:1;
unsigned bhome:1;
unsigned bminus:1;
unsigned blt:1;
unsigned bdd:1;
unsigned bdr:1;
unsigned bdu:1;
unsigned bdl:1;
unsigned bzr:1;
unsigned bx:1;
unsigned ba:1;
unsigned by:1;
unsigned bb:1;
unsigned bzl:1;
};
En http://xml.cie.unam.mx/~hdcg/pub/wiiclassic.c se puede bajar un pequeño programa de prueba (basado en el de Ressident Bull. La salida del programa se verá más o menos como lo siguiente:
./wiiclassic 0x00 0x00 0xa4 0x20 0x01 0x01 33/30:15/16: 2/ 3; du dd dl dr a b x y lt zl zr rt minus home plus
Las primeros tres pares de números son los valores LX/LY:RX/RY:LT/LR. En seguida los valores del D-Pad: arriba (du), abajo (dd), izquierda (dl), derecha (dr). Y para terminar todos los botones. Cuando presiones un botón, se escribirá con MAYÚSCULAS.
Me quedan otros posts pendientes con la Pi y con el Arduino, pero por lo pronto es todo. ¡Felices códigos!

No hay comentarios.:
Publicar un comentario