Pleo de Control remoto con Wii Nunchuck (5 / 5 paso)

Paso 5: Cargar el Software

Pleo es un robot autónomo y se mueve su propio. Antes de que usted podrá emitir sus propios comandos para Pleo tendrá que detenerse. Llamar PleoStun o PleoHypnosis, pero se puede descargar aquí: http://robostuff.com/wp-content/robostuff-com/stun.zip
Extraer el contenido de este archivo en la tarjeta SD vacía (antigua tarjeta SD más pequeño que 2Gb es preferrable) e inserte en la ranura de SD de Pleo. No encienda Pleo todavía.

También deberá cargar el software de Arduino. Para eso necesita descargar el programa llamado Arduino desde aquí: http://arduino.cc/en/Main/Software. Instalar y ejecutar el programa de Arduino y ejecutarlo. En la herramienta -> tablero y herramientas -> menús Seleccione el tipo de Arduino y puerto serie a que está conectado. Ahora copypaste este código en el Arduino sketch ventana y escribirlo en el Arduino memoria (archivo -> subir a placa de E/S).

#include
#include

#undef int
#include

#define BAUD_RATE 9600 / / 19200 para programación, 115200 para trabajar con Pleo, 9600 para transmisión a través de xbee

#define LED_PIN 13 / / el pin del LED está conectado a
#define GROUND_PIN PC2
#define POWER_PIN PC3
#define POWER_ON_LED_PIN 13
#define RECEIVE_LED_PIN 12

#define DELTA 20 / tolerancia de la posición de la palanca de mando

#define acción "movimiento rugido de juego" / playes en botones de anc C Z presionado
#define J_TOP_LEFT "movimiento juego com_walk_fl_v1"
#define J_TOP "movimiento juego com_walk_fs_v1"
#define J_TOP_RIGHT "movimiento juego com_walk_fr_v1"
#define J_LEFT "movimiento juego hun_sniff_l" / /???
#define J_RIGHT "movimiento juego hun_sniff_r" / /???
#define J_BOTTOM_LEFT "movimiento juego com_walk_bl_v1"
#define J_BOTTOM "movimiento juego hun_exit" / /???
#define J_BOTTOM_RIGHT "movimiento juego com_walk_br_v1"

#define CMD_DISABLE_LOG "registro deshabilitar todas"

#define MIN_X 316
#define MAX_X 730
#define MIN_Y 380
#define MAX_Y 630

uint8_t buf [6]; global buffer para almacenar datos del nunchuck, malo, malo...

configurar todo
void setup()
{
pinMode (POWER_ON_LED_PIN, salida);
pinMode (RECEIVE_LED_PIN, salida);
digitalWrite (POWER_ON_LED_PIN, alto);
Delay (100); Espere que las cosas se estabilicen
Serial.Begin (BAUD_RATE); configurar salida serie
wait_for_pleo(); Espere en Pleo arrancar
Wire.Begin(); Únete a bus i2c con dirección 0x52
power_on (PC2, PC3) PowerOn el nunchuck
init_nunchuck(); enviar el protocolo de inicialización
}

espera pleo arrancar. Es importante que esté Coordinador XBee conectado a arduino en primera
luego el nodo de XBee conectado a Pleo debe activarse.
Static void wait_for_pleo()
{
digitalWrite (RECEIVE_LED_PIN, alto);
int espera = 1;
int cuenta = 0;
int leer = 0;
al mismo tiempo (esperar)
{
Si (Serial.available())
{
leer = Serial.read();
Si (leer == ' >')
{
esperar = 0;
}
}
otra cosa
{
Delay (500);
Serial.Print ("");
}
}
comando (CMD_DISABLE_LOG, 500); desactivar el Pleo lo contrario registro serial consigue trashed y todo deja de funcionar en un minuto
digitalWrite (RECEIVE_LED_PIN, bajo);
}

void delay_read (int sueño)
{
int leer;
mientras (Serial.available())
{
leer = Serial.read();
}
demora (sueño);
}

se convierte en energía para el nunchuck
power_on vacío estático (pwr byte, byte gnd)
{
DDRC | = _BV(pwr) | _BV(GND); hacer salidas
PORTC & = ~ _BV(gnd);
PORTC | = _BV(pwr);
Delay(100); Espere que las cosas se estabilicen
}

inicializar el nunchuck
void init_nunchuck()
{
Wire.beginTransmission (0x52); transmitir al dispositivo 0x52
Wire.Send (0 x 40); envía la dirección de memoria
Wire.Send (0 x 00); envía la dirección de memoria
Wire.endTransmission(); interrumpir la transmisión
}

envío cero a nunchuck es enviar sus datos vitales actuales nuevo
void send_zero()
{
Wire.beginTransmission (0x52); transmitir al dispositivo 0x52
Wire.Send (0 x 00); envía un byte
Wire.endTransmission(); interrumpir la transmisión
}

void loop()
{
digitalWrite (RECEIVE_LED_PIN, bajo);
Serial.Print (""); No sé por qué sin esta línea el bucle no está trabajando.
int cnt = 0; número de bytes leídos de la entrada
Wire.requestFrom (0x52, 6); Reciba 6 bytes del nunchuck
mientras (Wire.available())
{
buf [cnt ++] = descifrar (Wire.receive()); recibe byte como un número entero
}
Si (cnt > = 5)
{
process_buffer(); hace el trabajo
}
send_zero(); enviar la solicitud de los siguientes bytes
digitalWrite (RECEIVE_LED_PIN, alto);
}

cabeza de posiciones según la posición del joystick
void position_head (int x, int y)
{
int nh = ((x - 320) * 13 / 41) - 65;
¿NH = nh nh = nh > 65? 65: nh;
int nv = ((380 - y) * 15 / 25) + 75;
¿NV = nv nv = nv > 75? 75: nv;
Serial.Print ("mover el empalme 11");
Serial.Print (nh);
Serial.Print ("");
Serial.Print ("mover el empalme 12");
Serial.Print (nv);
Serial.Print ("");
delay_read (1000);
}

cola de posiciones según la posición del joystick
void position_tail (int x, int y)
{
int nh = ((x - 320) * 18 / 41) - 90;
¿NH = nh nh = nh > 90? 90: nh;
int nv = ((380 - y) * 18 / 25) + 90;
¿NV = nv nv = nv > 90? 90: nv;
Serial.Print ("mover conjunto 9");
Serial.Print (nh);
Serial.Print ("");
Serial.Print ("joint mover 10");
Serial.Print (nv);
Serial.Print ("");
delay_read (1000);
}

anular comandos (char cmd [], int sueño)
{
Serial.Print (cmd);
Serial.Print ("");
delay_read (sueño);
}

analiza retorno de nunchuck (6 bytes)
void process_buffer()
{
int jx = buf [0];
int jy = buf [1];
int ax = buf [2] > 2) & 0 x 03);
int y = buf [3] > 4) & 0 x 03);
int az = buf [4] > 6) & 0 x 03);
int bz = buf [5] y 1;
int bc = (buf [5] >> 1) y 1;

Si (Compruebe (jx, jy, 53, 205))
{
comando (J_TOP_LEFT, 2000);
}
else if (verificar (jx, jy, 123, 226))
{
comando (J_TOP, 2000);
}
else if (verificar (jx, jy, 202, 202))
{
comando (J_TOP_RIGHT, 2000);
}
else if (verificar (jx, jy, 25, 127))
{
comando (J_LEFT, 2000);
}
else if (verificar (jx, jy, 128, 132))
{
Si ((bz == 1) & & (bc == 1))
{
position_head (ax, ay);
}
else if ((bz == 0) & & (bc == 1))
{
position_tail (ax, ay);
}
else if ((bz == 0) & & (bc == 0))
{
comando (acción, 4000);
}
}
else if (verificar (jx, jy, 226, 130))
{
comando (J_RIGHT, 2000);
}
else if (verificar (jx, jy, 54, 59))
{
comando (J_BOTTOM_LEFT, 2000);
}
else if (verificar (jx, jy, 126, 30))
{
comando (J_BOTTOM, 2000);
}
else if (verificar (jx, jy, 200, 57))
{
comando (J_BOTTOM_RIGHT, 2000);
}
otra cosa
{
print_data (jx, jy, ax, ay, az, bz, a.c.); sólo con fines de depuración lo dejo aqui
}
}

comprueba si la posición de la palanca de mando está en la posición dada con tolerancia DELTA
int comprobar (int sx, sy de int, int tx, ty int) {}
volver (abs (sx - tx)}

resultado de la depuración de los datos del nunchuck
void print_data (int jx, jy int, ax de int, int, int az, int bz, int a. c.)
{
Serial.Print (jx, DEC);
Serial.Print ("");
Serial.Print (jy, DEC);
Serial.Print ("");
Serial.Print (ax, DEC);
Serial.Print ("");
Serial.Print (ay, DEC);
Serial.Print ("");
Serial.Print (az, DEC);
Serial.Print ("");
Serial.Print (bc, DEC);
Serial.Print ("");
Serial.Print (bz, DEC);
Serial.Print ("");
Serial.Print ("");
}

descifra los datos del nunchuck, famosa "fórmula", no encontré por qué está trabajando
descifrar los caracteres (char x)
{
devolver (x ^ 0x17) + 0x17;
}

Nota montón de retrasos en el programa. Pleo no proporciona información que el comando se ha completado. También una vez que el comando no puede anularlo. Y, como mencioné antes, servos de Pleo son realmente lentas evitar el sobrecalentamiento. Todo esto significa que hay un retraso entre el movimiento del nunchuck y Pleo movimiento.

Puede mod este código para trabajar con otros robots por reescribir los métodos position_head y position_tail para traducir a comandos específicos de tu robot.

Eso es todo, amigos, ya tienes tu propio control remoto Pleo. ¡ Disfrute!

Artículos Relacionados

ESP8266 y Visuino: mando a distancia WiFi Smart coche Robot con Wii Nunchuck

ESP8266 y Visuino: mando a distancia WiFi Smart coche Robot con Wii Nunchuck

Que coche elegante se establece cuando se combinan con Los módulos de controladores Motor L298N, ofrecen una de las maneras más fáciles de fabricar coches robot. Ya hice un Instructable sobre cómo puede controlar coche Smart con Arduino y Joystick. S
Robot control remoto con grabación de vídeo móvil

Robot control remoto con grabación de vídeo móvil

hiiiii chicos! Este es mi primer instructivo... iam hoy vapara mostrar u cómo hacer un robot de control remoto con cámara (grabación móvil de vídeo)así que sigue estos pasos...PASO 1:materiales requeridos:1) motorreductores 3 (dos para el manejo y ot
Lanzador de escritorio Frisbee con Wii Nunchuck

Lanzador de escritorio Frisbee con Wii Nunchuck

Aquí es cómo construir mi primera iteración de un lanzador que lanza discos Discraft Ultimate de mini estrellas. Esto podría llamar la versión rápida y sucia. Es muy básico. Lo único que hace es disparar. Sin embargo, se podría modificar fácilmente p
MediaCenter simple y Control remoto con facilidad de uso mejorada

MediaCenter simple y Control remoto con facilidad de uso mejorada

Sí, es otro en bricolaje PC-centro de medios (o HTPC), pero con una característica única: es muy simple de controlar, por lo tanto muy adecuado para personas mayores, personas con discapacidad, o simplemente perezosos usuarios.De Wikipedia:"- La noci
Control remoto con Raspberry Pi y Phidget WebService

Control remoto con Raspberry Pi y Phidget WebService

Permiten su frambuesa para relé de control, led, sensor y entrada digital remoto con Phidget WebService. "Phidget WebService es un proceso de fondo que transmite todos los eventos y datos de una USB Phidget sobre la red: usa enlace local abordar que
Hacer el teléfono/tablet/escritorio un control remoto con un Raspberry Pi

Hacer el teléfono/tablet/escritorio un control remoto con un Raspberry Pi

Tengo mi equipo de trabajo en red y audio/vídeo en un armario de cableado. Algunos equipos como los receptores de satélite tienen control remoto de RF. Pero la mayoría de los equipos tiene control remoto por infrarrojos. Este Instructable le mostrará
3 pasos fáciles de encendido/apagado control remoto con Arduino

3 pasos fáciles de encendido/apagado control remoto con Arduino

Basado en otro proyecto en internet, decidí hacer mi propio circuito de Arduino control remoto.Necesitaba dos motores 5V para encender y apagar con un mando a distancia. Como resultado tengo el proyecto a continuación.Usted puede modificar su proyect
Coche de Control remoto con Arduino y Bluetooth

Coche de Control remoto con Arduino y Bluetooth

Este proyecto consiste en hacer un coche de control remoto mediante una conexión bluetooth. Este coche está destinado a ser utilizado en un globo hacer estallar la competencia contra otros coches similares. La conexión inalámbrica se consigue mediant
Disparador de cámara control remoto, con cable

Disparador de cámara control remoto, con cable

este es una breve instructivo sobre cómo hacer un control remoto para una cámara que no tiene uno ya. Se trata de un solenoide, una pantalla de lite-brite una verruga de la pared, cables y hardware. Fácil de hacer, divertido de usar.Paso 1: Conseguir
Smart TV con control remoto con Edison de Intel (Intel IoT)

Smart TV con control remoto con Edison de Intel (Intel IoT)

El transmisor/receptor de infrarrojos TSOP1738 se interfaza con Edison de Intel utilizando interfaz PWM estándar disponible en la biblioteca de libmraa.Esto puede usarse en relación con el micrófono USB para controlar la voulme de TV bajo control en
Control remoto para Sony NEX 5n cámara con cable

Control remoto para Sony NEX 5n cámara con cable

Qué es este tutorial:Un tutorial de como construir un control remoto con cable para la cámara de Sony NEX 5n. Porque la cámara sólo soporta control remoto IR, este es esencialmente un IR-a-cable conversión que 1) no requiere modificación de la cámara
LED con control remoto

LED con control remoto

Se trata de una construcción muy simple. Todo lo que necesitas escepillado de 1 x ESC1 x 12 voltios, LED1 x 3s Lipo1 x RC transmisor y receptorCon el cepillado ESC podrá a control remoto el brillo del LED.Paso 1: Conecte el cepillado ESCConectar el c
RGB LED plafón humor con hackeado IR Control remoto

RGB LED plafón humor con hackeado IR Control remoto

este instructable documenta el diseño y construcción de una gigante luz de techo del RGB LED, controladas por control remoto GE hackeado.Después de construir unas pequeñas lámparas RGB, decidí que quería ver hasta dónde podía tomar el concepto.  Los
Los altavoces del ordenador: Por cable control remoto de volumen con casquillo del perfume

Los altavoces del ordenador: Por cable control remoto de volumen con casquillo del perfume

(Antes de todo: lo siento mi ingles yo desde Brasil...)Hola, mi madre compró un edifier altavoces PC 2.1 con control remoto con cable. (Foto 1)Es muy agradable y fácil de usar... pero caro, y perilla de volumen es un poco pequeña...Me gusta las peril