USB Wiichuck ratón utilizando un Arduino Leonardo (2 / 3 paso)

Paso 2: Software

Después de recibir a mi Leonardo nuevo brillante, empecé mirando cómo iba a conseguir todos los trabajadores. Puesto que el Wiichuck utiliza alimentación de 5 V y se comunica via I2C, el cableado era relativamente simple. ¡ Simplemente enganchado las 5 líneas V, GND, SDA y SCL a los puertos correspondientes en el Leonardo y estaba listo para ir.

El software fue un poco más difícil. Me tomó bastante tiempo y mucha experimentación para encontrar código que iba a funcionar para lo que necesitaba. Como he mencionado anteriormente, tanto la biblioteca de funciones del Nunchuck (que he incluido en este instructable) y el código fuente original (que parece que no puedo llegar a subir correctamente, así que lo de copiar y pegar abajo) fueron escritos por otros y luego modificados para mis propósitos.

Esencialmente, lo que hace el código es utilizar la biblioteca Nunchuck para obtener datos de la ' tirada cada 10 ms. haber establecido un rango para a el mouse, el código utiliza esta gama para determinar el umbral de reposo de joystick. Después de que el bucle principal lee la C y Z botón y salidas como la izquierda y derecha mouse los botones, el código y luego pasa en leer el x y y hachas. Después de restar el valor de posición del centro de la lectura recibida, se compara el valor absoluto resultante a la variable de umbral. Si el valor es menor que el umbral para el movimiento, la distancia de movimiento se establece en 0, si la distancia medida es la distancia de lectura. Si x o y la distancia es 0 no, el ratón mueve la distancia correspondiente.

Cabe señalar que todo este proceso puede funcionar igual de bien con el acelerómetro. En lugar de utilizar las funciones nunchuck_joyx e y, uno podría utilizar factible nunchuck_accelx y y. No lo recomiendo, sin embargo. Los resultados al tratar de utilizar el ratón pueden ser... squirrely.

Ratón de WiiChuck
Brian Krukoski
De abril de 2012
rojo-+ 5 blanco-gnd, verde-sda, yllw-clck

#include < Wire.h >
#include "nunchuck_funcs.h"
int loop_cnt = 0;

parámetros de lectura de la palanca de mando:
int rango = 40;               gama de salida de X o Y movimiento
umbral de int = rango/10;      umbral de reposo
int centro = rango/2;         valor de la posición de descanso

Boolean mouseIsActive = false;    controlar el ratón o no
int lastSwitchState = bajo;        estado anterior del interruptor

void setup() {}
inicialización de la Wiichuck
nunchuck_init();
tomar el control del ratón:
Mouse.Begin();
Serial.Begin(9600);
}

void loop() {}
Si (loop_cnt > 10) {/ / cada 10 milisegundos Obtén nuevos datos
loop_cnt = 0;
nunchuck_get_data();

a la derecha y la izquierda haga clic en control
int leftState = nunchuck_cbutton();
Si (leftState) Mouse.press(MOUSE_LEFT); Mouse.release(MOUSE_LEFT) otra cosa;
int rightState = nunchuck_zbutton();
Si (rightState) Mouse.press(MOUSE_RIGHT); Mouse.release(MOUSE_RIGHT) otra cosa;

leer el eje x
int xReading = nunchuck_joyx(); pide a nunchuck_funcs biblioteca x lectura eje
xReading = mapa (xReading, 38, 232, 0, rango); 38 y 232 arbitrariamente determinado a través de la experimentación, asigna al rango 0 y preselección
int xDistance = xReading - centro;
Si (abs(xDistance) < umbral) //if valor absoluto de xDistance es menor que el umbral predefinido...
{
xDistance = 0;
}

leer el eje y
int yReading = nunchuck_joyy(); pide a nunchuck_funcs biblioteca para lectura del eje de y
yReading = mapa (yReading, 38, 232, 0, rango); 38 y 232 arbitrariamente determinado a través de la experimentación, asigna al rango 0 y preselección
int yDistance = yReading - centro;
Si (abs(yDistance) < umbral) //if valor absoluto de yDistance es menor que el umbral predefinido...
{
yDistance = 0;
}

Mueva el ratón, si las lecturas estaban por encima de 0
Si ((xDistance! = 0) || (yDistance! = 0)) {
Mouse.Move (xDistance, - yDistance, 0); -yDistance asegura joystick estilo invertido
}
}
nunchuck_print_data(); imprime los datos del nunchuck a serial monitor para fines de depuración
loop_cnt ++;
Delay(1);

}

Artículos Relacionados

Convertir un control de N64 en un Gamepad USB utilizando un Arduino Leonardo

Convertir un control de N64 en un Gamepad USB utilizando un Arduino Leonardo

La forma más fácil de convertir un control de N64 en un Gamepad USB es comprar un N64 controlador adaptador para alrededor £15. Sin embargo también puede hacer si usted tiene un Arduino Leonardo o cualquier otro tablero de Arduino con comunicación US
Añadir dispositivo de juego USB para Arduino Leonardo/Micro

Añadir dispositivo de juego USB para Arduino Leonardo/Micro

Nota importante: Este artículo es para IDE de Arduino versión 1.6.5 (o inferior). Para agregar un dispositivo de juego USB a un Arduino Leonardo o Micro mediante Arduino IDE versión 1.6.6 (o superior) ver el Instructable siguiente: Arduino Leonardo M
Usando a Arduino Leonardo como ratón y teclado, control por bluetooth.

Usando a Arduino Leonardo como ratón y teclado, control por bluetooth.

Una característica impresionante en Arduino Leonardo, que lo hacen especiales en el tablero, es que pueden actuar como ratón y teclado en computadora. Esto podría ser útil para controlar el equipo por diferentes vía, como palillo de alegría y BLUETOO
Serial Servo Controller w/Arduino - Control hasta 12 Servos a la vez utilizando el Arduino y una conexión USB

Serial Servo Controller w/Arduino - Control hasta 12 Servos a la vez utilizando el Arduino y una conexión USB

voy a mostrarle cómo usar el Arduino para controlar hasta 12 servos a la vez con variación mínima.  Mediante una sencilla interfaz serial puede controlar la posición del servo hasta 12 canales.  Hasta 10 posiciones instantáneas se puede guardar y rep
USB Wii Gamepad usando Arduino Leonardo

USB Wii Gamepad usando Arduino Leonardo

Fin de semana pasado probé el RetroPie nuevo en mi hermosa nueva frambuesa Pi 3, pero el controlador solo juego que tengo es oldie mando clásico de Wii; ¿Cómo puedo convertirlo a un dispositivo de juego USB regular?Después de algunas investigaciones,
Arduino Leonardo Micro como controlador de juego/Joystick

Arduino Leonardo Micro como controlador de juego/Joystick

Nota importante: Este artículo es para IDE de Arduino versión 1.6.6 (o superior). Para agregar un controlador de juego USB a un Arduino Leonardo o Micro mediante Arduino IDE versión 1.6.5 (o inferior) véase el Instructable siguiente: Añadir controlad
Hacer un adaptador USB de teclado de ThinkPad con Arduino

Hacer un adaptador USB de teclado de ThinkPad con Arduino

Entre las computadoras portátiles de clase de negocios, ThinkPad tiene los mejores teclados. Incluso con el cambio a teclado de estilo isla, yo diría que teclados ThinkPad todavía vencer a todos sus competidores laptop manos hacia abajo en el Departa
Utilizando un Arduino Uno R3 como un controlador de juegos

Utilizando un Arduino Uno R3 como un controlador de juegos

ACTUALIZACIÓN de 2016: yo ya no proporcionará soporte en la sección de comentarios. Este es un método anticuado y obsoleto que tiene muy pocas razones para utilizar. Mantenerlo sólo con fines de información.Naturalmente, la ONU no soporta nativamente
Guía paso a paso a la Arduino Leonardo

Guía paso a paso a la Arduino Leonardo

Arduino el equipo está a la venta su última creación - Leonardo. Es el primer Arduino para usar chip de serie de ATmegaXU4 de Atmel con USB incorporado. Este cambio es grande y tiene grandes beneficios. Además el USB incorporado, ofrece más pines dig
Arduino Leonardo como ISP

Arduino Leonardo como ISP

Leonardo fue mi primer Arduino, lo compré porque es capacidades nativas de USB. Luego de experimentar con Arduino, decidí migrar mi Arduino Leonardo standalone Atmega328p o, para proyectos más pequeños, a un microcontrolador de la familia del Attiny.
Trampa del ratón de la Arduino

Trampa del ratón de la Arduino

¡ Hola gente!Para este reto, he creado un Arduino controla el ratón trampa para capturar cualquier plagas no deseadas que pueden vagar en su espacio. El proyecto es completo pero tengo una adición más que voy a intentar hacer. Más sobre esto al final
Control de un SaikoLED myki (o Arduino Leonardo) con una Simple caja de botón--usando ICSP cabecera

Control de un SaikoLED myki (o Arduino Leonardo) con una Simple caja de botón--usando ICSP cabecera

Bienvenidos! Hoy vamos a explicar cómo crear un controlador con 3 botones que se conecta directamente a una tarjeta compatible con Arduino Leonardo--en este caso, la luz de myki de SaikoLED. Más información sobre Leonardo está disponible aquí y en es
Arduino Leonardo/Micro(ATMega32u4) como controlador de juegos Gamepad

Arduino Leonardo/Micro(ATMega32u4) como controlador de juegos Gamepad

El chip ATMega32u4 lo que se utiliza en Arduino Leonardo, Micro o Micro Pro tienen la habilidad de usar descriptores HID USB personalizados. Gracias esta capacidad podemos hacer nuestro Arduino como Gamepad genérico!Esta biblioteca contiene todo para
Gamepad de PC Bluetooth Android DIY con arduino leonardo

Gamepad de PC Bluetooth Android DIY con arduino leonardo

Tutorial y prueba de vídeo:Enlace al archivo de App Inventor y Arduino en youtube video en la descripción.Paso 1: De parte lista, cableado y jugando -Arduino Leonardo (leonardo tablero tiene emulación de teclado y ratón. Im usando micro pro)-Bluetoot