Arduino / Wii control torreta de cohetes Lego Star Wars (3 / 3 paso)

Paso 3: Sketch de Arduino

Basado en código de http://www.ideavirus.it/ adaptada con la ayuda de Oliver en London Hackspace. Incluye son: wire.h, string.h, stdio.h y Servo.h - por alguna razón Instructables les cae cuando pegue mi código.

#include
#include
#include
#include / / controla el servo del disparador sólo

Servo myservo;  crear objeto servo para controlar el servo de gatillo

int pos = 90;    variable para almacenar la posición del servo de gatillo

telefonía de uint8_t [6];

int cnt = 0;
int ledPin = 13;

int servoPin = 7;
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 = 70;  ajustado para servos FutabaS3003

int minPulse = 600;  ajustado para servos FutabaS3003
int minPulse2 = 600;  ajustado para servos FutabaS3003
int maxPulse = 2400; posición máxima servo
int maxPuls2e = 2400; posición máxima servo

tiempo de int = 10;

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

void setup()
{
myservo.Attach(8);  se fija el servo de gatillo en el pin 8 al objeto servo

Serial.Begin (9600);
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 (0 x 40);
Wire.Send (0 x 00);
Wire.endTransmission ();
}

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) {}

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:

MUOVI (telefonía [3], telefonía [2]);
rotura;
caso 0:
MUOVI (telefonía [1] / 2 + 0x3E, telefonía [0] / 2 + 0x3E);
rotura;
}

interruptor (z_button) {}
caso 0:

para (pos = 90; pos > = 120; pos += 1) / / dispara el gatillo cuando presiona el botón Z
{
myservo.Write(POS);
Delay(15);
}
para (pos = 120; pos > = 90; pos-= 2) / / devuelve el disparo al centro
{
myservo.Write(POS);
Delay(15);
}

rotura;
caso 1:
rotura;
}

}

CNT = 0;
send_zero();

}

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];
int accel_y_axis = telefonía [3];
int accel_z_axis = telefonía [4];

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;
}

void muovi (uint8_t x uint8_t y) {}
inclinación del flotador = (700 - x * 2 * 2);
flotador tilt2 = (0x7E - y + 0x7E) * 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 anchura de impulso += pwbuff [p];
pulseWidth2 += pwbuff2 [p];
}

anchura de impulso = pwbuffsize;
pulseWidth2 = pwbuffsize;

}

Artículos Relacionados

Jugar lego star wars para PC con wiimote

Jugar lego star wars para PC con wiimote

bueno soy un gran fan de glovePIE y lego star wars para poner ambos en un mismo proyecto! el gamepad que tengo para mi PC es muy corta para tener que sentarse justo al lado de la torre para jugar pero ya no. Si todo listo tienes un wiimote y nunchuk
BB8 construido con piezas de Lego Star Wars... Y sin embargo se mueve al final de este tutorial:

BB8 construido con piezas de Lego Star Wars... Y sin embargo se mueve al final de este tutorial:

He presentado este modelo a las Ideas de Legohttps://ideas.LEGO.com/projects/127584Si te gusta esta versión de Lego de BB8, por favor voten por este proyecto.Iniciar sesión con su cuenta de medios de comunicación socialy votar por él.Gracias 1 millón
LEGO Star Wars Mural

LEGO Star Wars Mural

quería compartir este proyecto con la comunidad de estoy realmente orgulloso de lo que salió. Hace meses comenzó con un concepto de dibujo y desde entonces ha progresado a un proyecto. Mi hijo es realmente en Star Wars y Lego Star Wars, así que mi am
DIY Orrery de Lego (Star Wars estilo)

DIY Orrery de Lego (Star Wars estilo)

Para todos los fans de Star Wars o aquellos que estén interesados en un proyecto de física, aquí es un DIY Lego Orrery, un modelo mecánico de la sistema solar. El orrery traerá a la atención algunos conceptos como fuerza centrípeta y la rotación grav
Intercambiables Lego Star Wars reloj mi hijo

Intercambiables Lego Star Wars reloj mi hijo

mi hijo hizo este reloj en la clase de arcilla cuando tenía 4 años de edad. Asegúrese que es 12" de diámetro o mayor si lo tuyo fuera de arcilla o madera, pero también se podría utilizar una cara de reloj de madera hecha de antemano. Haz una búsqueda
LEGO STAR WARS: AT-ST

LEGO STAR WARS: AT-ST

Hi todo el mundo! Soy densidad y tengo 14 años. Soy un gran fan de star wars y Lego, así que decidí mostrarle cómo hacer el AT-ST. El transporte de Scout de todo terreno (AT-ST) es un reconocimiento (observación militar de una región para ubicar al e
Cómo construir un Lego Star Wars crucero de batalla

Cómo construir un Lego Star Wars crucero de batalla

Hoy, voy a mostrarle cómo construir un crucero de batalla personalizado de Star Wars. Es sólo trece pasos! Esperamos que disfrutes! Si te gusta esto, por favor comenten.Paso 1: partes Paso 2: Alas y piso Paso 3: Piezas laterales de piso y slant blanc
LEGO Star Wars Starfighter

LEGO Star Wars Starfighter

se trata de una nave de Star Wars mi hermano construido hace algún tiempo, y pensé que sería cool mostrar a ustedes chicos. Tiene una cabina profunda y es fácil de sostener y "volar" alrededor. Es mucho como muchos de los otros Star Wars Starfig
Lego star wars ships

Lego star wars ships

Estas son naves de star wars que hice hace mucho tiempo. Lo siento pero no tengo un video acerca de ellos.lista de las naves:deslizador de nieve de EP VHalcón Milenario EP III, IV, V, VIAla-a fighter VI EPreductor de velocidad (azul) EP V de nieveZam
LEGO Star Wars animación Final

LEGO Star Wars animación Final

esta es la animación final en la trilogía de las guerras de ladrillo.Estos son enlaces a los dos primeros Instructables, con las dos primeras animaciones.Paso 1: El capítulo Final Después de completar dos animaciones en el universo de guerras de ladr
LEGO Star Wars X-Wing

LEGO Star Wars X-Wing

Hola a todos, hoy voy a mostrar como hacer una X-Wing de nueva LEGO!Paso 1: materiales: Para la X-wing necesita unas piezas de Lego (lo siento si no utilizo el nombre correcto)Cuerpo principal:2 ladrillos negro 1 x 1Azulejo de azotea de 1 x 1 de clar
LEGO Star Wars trajes

LEGO Star Wars trajes

Kylo Ren Lego y Lego YodaPaso 1: no obtengo un montón de fotos de los materiales, pero aquí hay algunas fotos de algunas cosas que utiliza en su mayoría de cartón para todo... gracias por ver Paso 2: agregar detalles al cuerpo Lo pintó gratis manos
Nuevo modelo de LEGO star wars destructor.

Nuevo modelo de LEGO star wars destructor.

Tardó 11 horas aproximadamente para construir y mucha concentración para llegar a construirlo. El destructor tomó unos 5 intentos de hacer y fue construido en mi casa las mamás (vivo con mis abuelos). El lego me fue dado como un regalo que yo quería
Como hacer un Lego / Star Wars Stop Motion animación

Como hacer un Lego / Star Wars Stop Motion animación

Lego es una de las mejores maneras de hacer una animación de stop motion.Es más fácil que el uso de juguetes más grandes, y se ve muy bueno en comparación y tendrá menos tiempo para hacer.Paso 1: Construir el conjunto Cosas básicas que necesita para