Nunchuk inalámbrico controlado animatronic muñeca (4 / 16 paso)

Paso 4: El código

En este paso compilar y cargar el código y probar nuestro cableado.

1. conectar el arduino al ordenador

2. Abra el programa de Arduino 18. Si no ya lo tiene, puede descargarlo de la Página Web de Arduino:
http://Arduino.CC/en/Main/software

3. Asegúrese de que usted tiene el tipo correcto de Junta seleccionado y el puerto usb correcto seleccionado antes de continuar

4. copiar y pegar el código que se encuentra a continuación. Este código fue escrito usando código de usuario bradlight en este foro y el código de mi instructor pero no estoy seguro de que lo escribió: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1259091426

5. compilar el código

6. Si no hay ningún error (no debería haber), cargar el código para el arduino

7. cuando se carga el código ahora debe ser capaz de controlar el servo inclinando el nunchuck, izquierdo, derecha, arriba o abajo. Si el servo no responde, mantenga presionado el botón de reset, sincronizar el nunchuk, luego suelte el botón de reset. He encontrado que el nunchuk debe ser sincronizado antes de que el código empieza a correr o se atasca el servo. Por esta razón mi diseño incluye un interruptor momentáneo para un botón de reset.

#include < Wire.h >
#include < string.h >
#include < stdio.h >

telefonía de uint8_t [6];

int cnt = 0;
int ledPin = 13;

int servoPin = 5;
int servoPin2 = 6;

anchura de impulso de int = 0;
int pulseWidth2 = 0;

lastPulse largo = 0;
lastPulse2 largo = 0;

int z_button = 0;
int c_button = 0;

int refreshTime = 20;

int minPulse = 1000;
int minPulse2 = 500;

tiempo de int = 10;

#define pwbuffsize 10
largo pwbuff [pwbuffsize];
pwbuffpos largo = 0;
pwbuff2 largo [pwbuffsize];
pwbuffpos2 largo = 0;

void setup()
{
Serial.Begin (19200);
Wire.Begin ();
nunchuck_init ();
pinMode (servoPin, salida);
pinMode (servoPin2, salida);

anchura de impulso = minPulse;
pulseWidth2 = minPulse2;
Serial.Print ("setup\n final");
}

void nunchuck_init()
{
Wire.beginTransmission (0x52);
Wire.Send (0xF0);
Wire.Send (0x55);
Wire.endTransmission ();
Delay(30);

Wire.beginTransmission(0x52);
Wire.Send (0xFA);
Wire.endTransmission();
Delay(30);

Wire.requestFrom(0x52, 6);
Delay(30);
}

void send_zero()
{
Wire.beginTransmission (0x52);
Wire.Send (0 x 00);
Wire.endTransmission ();
}

int t = 0;

void loop()
{
t ++;
fin = millis();

Si (t == 1) {}

t = 0;

Wire.requestFrom (0x52, 6);

mientras que (Wire.available ()) {}
telefonía [cnt] = nunchuk_decode_byte (Wire.receive ());
digitalWrite (ledPin, HIGH);
CNT ++;
}

Si (cnt > = 5) {}

printNunchuckData();

int z_button = 0;
int c_button = 0;

Si ((telefonía [5] >> 0) & 1)
z_button = 1;
Si ((telefonía [5] >> 1) & 1)
c_button = 1;

interruptor (c_button) {}
caso 1:
interruptor (z_button) {}
caso 0:
rotura;
caso 1:
MUOVI();
rotura;
}
rotura;
caso 0:
interruptor (z_button) {}
caso 0:
Delay(10000);
rotura;


caso 1:
Delay(3000);
rotura;
}
rotura;
}
}

CNT = 0;
send_zero();

} / / if(t==)

updateServo();

Delay(dtime);
}

void updateServo() {}

Si (millis() - lastPulse > = refreshTime) {}

digitalWrite (servoPin, HIGH);
delayMicroseconds(pulseWidth);
digitalWrite (servoPin, bajo);

digitalWrite (servoPin2, HIGH);
delayMicroseconds(pulseWidth2);
digitalWrite (servoPin2, bajo);

lastPulse = millis();
}
}

int i = 0;
void printNunchuckData()
{
int joy_x_axis = telefonía [0];
int joy_y_axis = telefonía [1];
int accel_x_axis = telefonía [2] * 2 * 2; // * 2 * 2;
int accel_y_axis = telefonía [3] * 2 * 2; // * 2 * 2;
int accel_z_axis = telefonía [4] * 2 * 2; // * 2 * 2;

int z_button = 0;
int c_button = 0;

Si ((telefonía [5] >> 0) & 1)
z_button = 1;
Si ((telefonía [5] >> 1) & 1)
c_button = 1;
Si ((telefonía [5] >> 2) & 1)
accel_x_axis += 2;
Si ((telefonía [5] >> 3) & 1)
accel_x_axis += 1;

Si ((telefonía [5] >> 4) & 1)
accel_y_axis += 2;
Si ((telefonía [5] >> 5) & 1)
accel_y_axis += 1;

Si ((telefonía [5] >> 6) & 1)
accel_z_axis += 2;
Si ((telefonía [5] >> 7) & 1)
accel_z_axis += 1;

Serial.Print (i, DEC);
Serial.Print ("\t");

Serial.Print ("X:");
Serial.Print (joy_x_axis, DEC);
Serial.Print ("\t");

Serial.Print ("Y:");
Serial.Print (joy_y_axis, DEC);
Serial.Print ("\t");

Serial.Print ("AccX:");
Serial.Print (accel_x_axis, DEC);
Serial.Print ("\t");

Serial.Print ("Accy de la presión:");
Serial.Print (accel_y_axis, DEC);
Serial.Print ("\t");

Serial.Print ("AccZ:");
Serial.Print (accel_z_axis, DEC);
Serial.Print ("\t");

Serial.Print (z_button, DEC);
Serial.Print ("");
Serial.Print (c_button, DEC);
Serial.Print ("\r\n");
i ++;
}

char nunchuk_decode_byte (char x)
{
x = (x ^ 0x17) + 0x17;
return x;
}

muovi nula () {}
inclinación del flotador = (700 - outbuf[3]*2*2);
flotador tilt2 = telefonía [2] * 2 * 2;

inclinación = (inclinación);
anchura de impulso = (inclinación * 5) + minPulse;

tilt2 = (tilt2-288);
pulseWidth2 = (tilt2 * 5) + minPulse2;

pwbuff [pwbuffpos] = anchura de impulso;
pwbuff2 [pwbuffpos2] = pulseWidth2;

Si (++ pwbuffpos == pwbuffsize) pwbuffpos = 0;
Si (++ pwbuffpos2 == pwbuffsize) pwbuffpos2 = 0;

anchura de impulso = 0;
pulseWidth2 = 0;

para (int p = 0; p < pwbuffsize; p ++) {}
anchura de impulso += pwbuff [p];
pulseWidth2 += pwbuff2 [p];
}

anchura de impulso = pwbuffsize;
pulseWidth2 = pwbuffsize;

}



Artículos Relacionados

Nunchuck Wii inalámbrico controlado por Arduino

Nunchuck Wii inalámbrico controlado por Arduino

Utilizar un sin modificar totalmente inalámbrico Wii Nunchuck como un sistema de control para cualquier proyecto basado en Arduino. No pares de transmisor/receptor de radio mayor etc..Este instructable asumir alguna experiencia con el microcontrolado
Proyectos de Carlitos: Inalámbrico controlado por discurso Arduino Robot

Proyectos de Carlitos: Inalámbrico controlado por discurso Arduino Robot

Todos soñamos con tener aparatos y máquinas que pueden obedecer a nuestros comandos hablados. Bien, vamos a tomar el primer paso para que esto suceda y construir un intervención controlada basada en Arduino robot móvil.Puedes estar pensando que hacer
Inalámbrico de mano Animatronic

Inalámbrico de mano Animatronic

Aquí hay un video de como se ve por ahora:El uso de un robot se está convirtiendo en una necesidad diaria, utilizamos cuando la fabricación de productos y artículos, ayudando a personas necesidades y mejorar incluso nuestra propia debilidad. Animatro
Inalámbrico de Omán Robot direccional controlada fútbol con nRF 24L 01 + y Arduino

Inalámbrico de Omán Robot direccional controlada fútbol con nRF 24L 01 + y Arduino

Hey todo el mundoBienvenidos a mi primer instructable. Un robot WiFi controlado Omaní direccional robot.a inalámbrico controlado puede ser utilizado en muchos ways.i hecho para jugar un fútbol porque hubo un evento de fútbol jugar robots en mi instit
Inalámbrico de acelerómetro controlado rgb-LED

Inalámbrico de acelerómetro controlado rgb-LED

acelerómetros MEMS (sistemas Micro electromecánicos) son de uso generalizado como sensores de inclinación en los teléfonos móviles y cámaras. Acelerómetros simples están disponibles ambos como ic chip y pcb-tablas de desarrollo económico.Chips inalám
Inalámbrico de RF controlado fuego efectos

Inalámbrico de RF controlado fuego efectos

hombres de las cavernas inventó el fuego hace cerca de un millón de millones de años, y desde ese día hombre se ha ido planteando con formas más innovadoras de hacer bolas de fuego cada vez mayor. Aquí está mi intento de traer su homo erectus estilo
ESP8266 ESP-12E NodeMCU v1.0 con Arduino IDE en registrador de temperatura inalámbrico de programación

ESP8266 ESP-12E NodeMCU v1.0 con Arduino IDE en registrador de temperatura inalámbrico de programación

A finales de 2014 y 2015 temprano, su vino realmente a través deeste ingenioso ESP8266 de Chip WiFi (ESP-01) y a la batalla entre la documentación inconsistente de diversas fuentes. Para el momento del estímulo, él documentó sus frustraciones (result
3D impreso mano guante inalámbrico control

3D impreso mano guante inalámbrico control

Este instructable fue creado en cumplimiento de un requisito del proyecto de la Makecourse de la Universidad de South Florida (www.makecourse.com). Es una mano impresa 3D único grado de libertad que es controlada de forma inalámbrica con un guante. S
Utilizar un controlador de Xbox 360 en OS X (con cable + inalámbrico)

Utilizar un controlador de Xbox 360 en OS X (con cable + inalámbrico)

recogí Borderlands 2 para OS X en la reciente venta de vapor porque mis amigos no le Callas sobre el juego. Por lo que encendió sólo para descubrir que necesitaba usar (muchas teclas) Teclado + ratón (síndrome del túnel carpiano = no) para jugar. Es
Tiras de LED de Phone Remote-Controlled inalámbrico: RasPi con conductor Fadecandy con WS2811/WS2812 direccionable LED tiras con TouchOSC Smartphone App con el Iphone o el Droid

Tiras de LED de Phone Remote-Controlled inalámbrico: RasPi con conductor Fadecandy con WS2811/WS2812 direccionable LED tiras con TouchOSC Smartphone App con el Iphone o el Droid

Aquí va un resumen de diseño cada vez más amplia de mi último proyecto. A continuación, un vídeo que he subido mostrando algunas funciones:La progresión de la idea original fue algo como lo siguiente:Tira de LED direccionable (s siempre queremos más
Inalámbrico de altavoz Robot

Inalámbrico de altavoz Robot

Gracias por comprobar hacia fuera mi instuctable en cómo construí mi Apocalipsis temática Robot Wifi altavoz.Esta es mi tercera generación de altavoces wifi. Se integra con mis otras 4 diy construido altavoces wifi para hacer un sistema de audio comp
Inalámbrico de guantes que controla un robot moviendo los dedos

Inalámbrico de guantes que controla un robot moviendo los dedos

Contamos con un un robot es controlado inalámbricamente utilizando nuestros dedos a lo... utilizamos dos kits de arduino... uno por nuestro lado... y uno en el robot... Utilizamos sensores flexibles en los dedos... sensores flexibles es algo así como
Inalámbrico de temporizador de luz de Navidad con Python y frambuesa Pi

Inalámbrico de temporizador de luz de Navidad con Python y frambuesa Pi

actualización 14/01/2014: gracias a todos los que votaron por este proyecto en el concurso de Hacking de Hardware! Esperando a mi nueva pluma del fabricante.¿Actualización 31/12/2013: en busca de una versión más avanzada de este proyecto? Echale mi n
Inalámbrico de Joystick con 2 operaciones

Inalámbrico de Joystick con 2 operaciones

Quizás hayas escuchado sobre joystick utilizado para juegos de azar y en grúas y máquinas grandes, palanca de cambios de coche etc. en estos joystick todo está conectada a la computadora principal, pero en este tutorial te mostraré hacer un joystick