Orejas de gato Necomimi Arduino (4 / 8 paso)

Paso 4: Datos incompletos

Aquí está el código del bosquejo.

Sólo cortar y pegar como subir un archivo en ibles no puede retener el nombre del archivo y será confuso.

=== Inicio del sketch ===
/*
Este programa está basado en ejemplos de sketch de Arduino y los siguientes:
ADXL345_Example.PDE - esquema de ejemplo de integración con un ADXL345 triple acelerómetro de ejes.
Copyright (C) 2011 amor electrónica (loveelectronics.co.uk)

Este programa es software libre: usted puede redistribuirlo y/o modificar
bajo los términos de la versión 3 de Licencia Pública General GNU como
Publicado por la Free Software Foundation.

Este programa se distribuye con la esperanza de que sea útil,
pero sin ninguna garantía; ni siquiera la garantía implícita de
COMERCIABILIDAD o aptitud para un propósito PARTICULAR. Ver la
GNU General Public License para más detalles.

Usted debe han recibido una copia de la Licencia Pública General de GNU
junto con este programa. Si no, consulte < http://www.gnu.org/licenses/>.

*/

Incluir la biblioteca de alambre por lo que podemos empezar usando I2C.
#include < Wire.h >

Incluir la biblioteca electrónica ADXL345 de amor para que podamos usar el acelerómetro.
#include < ADXL345.h >

incluir la librería servo para controlar el servo
#include < Servo.h >

Servo myservoA; crear objeto servo para controlar un servo
se puede crear un máximo de ocho objetos de servo

Servo myservoB; crear objeto servo para controlar un servo
se puede crear un máximo de ocho objetos de servo

posA de int = 0; variable para almacenar la posición del servo
posB int = 0;

Declarar una instancia global del acelerómetro.
ADXL345 accel;

Configurar un pin que vamos a utilizar para indicar nuestro estado mediante un LED.
int statusPin = 2; Estoy usando el pin digital 2.

//------------------------------------------------------

void setup()
{
myservoA.attach(7); se fija el servo en el pin 6 al objeto servo
myservoB.attach(6); se fija el servo en el pin 7 al objeto servo

Empezar por configurar el puerto Serial por lo que podemos enviar los resultados de nuestras.
Serial.Begin(9600);
Iniciar la biblioteca de hilos I2C para que podamos usar I2C para hablar con el acelerómetro.
Wire.Begin();

Listo un LED para indicar nuestro estado.
pinMode (statusPin, salida);

Crear una instancia del acelerómetro en la dirección por defecto (0x1D)
aceleración = ADXL345();

Compruebe que el acelerómetro es de hecho conectado.
if(ACCEL. EnsureConnected())
{
Serial.println ("conectado a ADXL345.");
digitalWrite (statusPin, HIGH); Si estamos conectados, la luz LED de nuestro estado.
}
otra cosa
{
Serial.println ("Could not connect to ADXL345.");
digitalWrite (statusPin, bajo); Si no estamos conectados, apague el LED.
}

Establecer el intervalo del acelerómetro a un máximo de 2G.
Accel. SetRange (2, true);
Dile el acelerómetro para empezar a tomar medidas.
Accel. EnableMeasurements();
}

//----------------------------------
void loop()
{

if(ACCEL. IsConnected) / / si estamos conectados al acelerómetro.
{
Leer los datos en bruto en el acelerómetro.
AccelerometerRaw raw = accel. ReadRawAxis();
Estos datos se pueden acceder como sigue:
int xAxisRawData = crudo. XAxis;

Leer la * escala * datos procedentes del acelerómetro (esto hace su propia lectura del acelerómetro
así que no tienes que ReadRawAxis antes de usar este método).
Este método útil le da el valor de G gracias a la biblioteca electrónica de amor.
AccelerometerScaled escalada = accel. ReadScaledAxis();
Estos datos se pueden acceder como sigue:
Float xAxisGs = escala. XAxis;

Habían salida de los datos recibidos.
Salida (crudo, escala);

}

}

Salida de los datos por el puerto serie.
Salida nula (AccelerometerRaw prima, AccelerometerScaled escaladas)
{
Inicializa el pin LED como salida:
pinMode (8, salida);
pinMode (9, salida);
pinMode (11, salida);
pinMode (12, salida);

Nos hablan de los valores crudos de acelerómetro.
Serial.Print("Raw:\t");
Serial.Print (crudo. XAxis);
Serial.Print("");
Serial.Print (crudo. EjeY respectivamente);
Serial.Print("");
Serial.Print (crudo. ZAxis);

Nos hablan de esto datos, pero la escala en unidades de utilidad (G).
Serial.Print ("\tScaled:\t");
Serial.Print (escalado. XAxis);
Serial.Print ("G");
Serial.Print (escalado. EjeY respectivamente);
Serial.Print ("G");
Serial.Print (escalado. ZAxis);
Serial.println("G");

Show conducido por eje
Si (a escala. XAxis > 0) {}
digitalWrite (8, HIGH); prende el LED
}
otra cosa
{
digitalWrite (8, bajo); fijar el LED apagado

}
//
Si (a escala. EjeY respectivamente > 0) {}
digitalWrite (9, alto); prende el LED
}
otra cosa
{
digitalWrite (9, bajo); fijar el LED apagado

}
//
Si (a escala. ZAxis > 0.8) {}
digitalWrite (11, alto); prende el LED
}
otra cosa
{
digitalWrite (11, bajo); fijar el LED apagado

}

mover servo según condiciones detecta---

Si (a escala. ZAxis < 0.8) {}
Serial.println ("*** subir inferior---aumento menor");
RaiseLower();
Delay(265);
}

//
Si (a escala. EjeY respectivamente < 0) {}
Serial.println ("*** Twitch medio---media de contracción nerviosa");
twitchMiddle();
Delay(400);

}

//
Si (a escala. XAxis < 0 y escala. EjeY respectivamente > 0 y escala. ZAxis > 0) {}
Serial.println ("*** derecho---Wink Wink derecha");
winkRight();
Delay(265);
}

}

//-------------------------------
subrutina para subir y baja
void RaiseLower()
{

twitchshort();
Twitch();

para (posA = 0; posA < 135; posA += 1) / / va desde 0 grados a 135 grados
{/ / en pasos de 1 grado
myservoA.write(posA); Dile el servo a la posición en la variable 'pos'
myservoB.write(180-posA);
Delay(12); espera 15ms para el servo a la posición
}
para (posA = 135; posA > = 1; posA-= 1) / / va de 135 grados a 0 grados
{
myservoA.write(posA); Dile el servo a la posición en la variable 'pos'
myservoB.write(180-posA);
Delay(12); espera 15ms para el servo a la posición
}

}

subrutina para twitch---
void twitch()
{
para (posA = 0; posA < 45; posA += 1) / / va desde 0 grados a 45 grados
{/ / en pasos de 1 grado
myservoA.write(posA); Dile el servo a la posición en la variable 'pos'
myservoB.write(180-posA);
Delay(8); espera 15ms para el servo a la posición
}
para (posA = 45; posA > = 1; posA-= 1) / / va de 45 grados a 0 grados
{
myservoA.write(posA); Dile el servo a la posición en la variable 'pos'
myservoB.write(180-posA);
Delay(8); espera 15ms para el servo a la posición
}
}
subrutina para contracción---
void twitchshort()
{
para (posA = 0; posA < 25; posA += 1) / / va desde 0 grados a 25 grados
{/ / en pasos de 1 grado
myservoA.write(posA); Dile el servo a la posición en la variable 'pos'
myservoB.write(180-posA);
Delay(5); espera 15ms para el servo a la posición
}
para (posA = 25; posA > = 1; posA-= 1) / / va de 25 grados a 0 grados
{
myservoA.write(posA); Dile el servo a la posición en la variable 'pos'
myservoB.write(180-posA);
Delay(5); espera 15ms para el servo a la posición
}
}

subrutina para contracción media---
void twitchMiddle()
{
para (posA = 0; posA < 100; posA += 1) / / va de 100 grados a 0 grados
{/ / en pasos de 1 grado
myservoA.write(posA); Dile el servo a la posición en la variable 'pos'
myservoB.write(180-posA);
Delay(10); espera 15ms para el servo a la posición
}
para (posA = 100; posA > = 1; posA-= 1) / / va de 100 grados a 0 grados
{
myservoA.write(posA); Dile el servo a la posición en la variable 'pos'
myservoB.write(180-posA);
Delay(10); espera 15ms para el servo a la posición
}
Delay(250);
para (posA = 0; posA < 120; posA += 1) / / va de 100 grados a 0 grados
{/ / en pasos de 1 grado
myservoA.write(posA); Dile el servo a la posición en la variable 'pos'
myservoB.write(180-posA);
Delay(10); espera 15ms para el servo a la posición
}
}

subrutina para guiño derecho---
void winkRight()
{
para (posA = 0; posA < 120; posA += 1) / / va desde 0 grados hasta 120 grados
{/ / en pasos de 1 grado
myservoA.write(posA); Dile el servo a la posición en la variable 'pos'
myservoB.write(180-posA);
Delay(10); espera 15ms para el servo a la posición
}
para (posA = 120; posA > = 1; posA-= 1) / / va de 180 grados a 0 grados
{
myservoA.write(posA); Dile el servo a la posición en la variable 'pos'
myservoB.write(180-posA);
Delay(10); espera 15ms para el servo a la posición
}
myservoB.write(180); elevar la otra oreja si descansando para que coincida con la vertical
}
=== final del bosquejo ===

Si inclina la cabeza hacia adelante, las orejas deben hacer un completo arriba y abajo.

Si inclina la cabeza hacia la derecha, la oreja izquierda debe ir hacia arriba y hacia abajo.

Debe haber un leve meneo si una ligera inclinación.  Los oídos de la gota en una posición baja.

Jugar con los valores de retardo y servo tiempo lazos de acción realista.

Recuerde que tendrá que averiguar donde tus servos están colocados al comienzo de 0 grados y de qué manera giran.  Luego tienes que acomodar el movimiento con los comandos de servo en el bosquejo.

X, Y, Z y servo movimiento en mi prototipo puede no coincidir con ustedes.

Artículos Relacionados

Orejas de gato de Animatronic

Orejas de gato de Animatronic

vi el video de demostración para los oídos de gato de neurowear "necomimi" cerebro controlado y pensé que eran bastante impresionantes.  Estoy empezando a aprender electrónica y pensé un divertido proyecto para empezar estaría haciendo mi propia
Orejas de gato geodésica accesorio de la joyería

Orejas de gato geodésica accesorio de la joyería

Esta hermosa pieza de accesorio de la joyería del pelo, inspirada en la escultura Himmeli y estructura geodésica, es divertido y único. Hecho de simple tubo de cobre y cableado de grano, estas orejas de gato deconstruido son super frescos y llamativo
Orejas de gato de gatito

Orejas de gato de gatito

aquí están las orejas de gato que coincide con mi kitty cat paw guantes!Materiales: tela furry, tejido elástico, venda del pelo o pinza de pelo.Herramientas: máquina de coser/hilo de rosca y aguja, pegamento de pistola, tijeras, marcador, papel.Paso
Orejas de gato!

Orejas de gato!

Mi muñeco de bestia Thursenberger está sacudiendo las orejas de gato!Estas orejitas son útiles si son cosplaying como Meowth o Pusheen o algún otro personaje de cat.Paso 1: Material Necesita-Cartulina-Furry tela de cualquier Color-Tela suave rosa-Pel
Orejas de gato/lobo musical violín!

Orejas de gato/lobo musical violín!

Esto cómo hacer Cat/lobo orejas para conciertos, fiestas y mucho más!Paso 1: materiales-La espuma (espuma de la cama está muy bien)-Diadema-Pintura de colores de su elección-Pistola de pegamento caliente-Tijeras-Secador de pelo (opcional)Paso 2: orej
Arduino Shield usable fácil coser

Arduino Shield usable fácil coser

Wearable computing, e-textiles, circuitos suaves o como quiera llamarlo, es un creciente campo de aplicación de la tecnología a la ropa o los accesorios como zapatos, bolsos o mochilas.  Es una diversión y desafío creativo que va más allá de añadir l
Orejas de conejo en una tapa de

Orejas de conejo en una tapa de

somos estudiantes de la Politécnica de Singapur.Después de ver las famosas orejas de gato Necomimi Arduino, decidimos darle una oportunidad para familiarizarse con el acelerómetro y el arduino.Utilizando los materiales que teníamos en mano, logramos
Juegos de azar con pensamientos/Mindwaves (con Arduino)

Juegos de azar con pensamientos/Mindwaves (con Arduino)

¿Qué pensar ¿por qué nos gusta de videojuegos? La respuesta no es difícil: el de los videojuegos nos muestra, muy buenos retos. Yo juego videojuegos rara vez, pero mis favoritos son carreras de coches y juegos de mundo abierto como necesidad de veloc
Usar la fuerza... ¿O sus ondas cerebrales? (pensamiento multifuctional sistema controlado)

Usar la fuerza... ¿O sus ondas cerebrales? (pensamiento multifuctional sistema controlado)

Cuando era niño siempre quise tener una habilidad especial, como mover objetos con pensamientos o volando. Traté de mover objetos con "el poder de mi mente", por supuesto sin ningún éxito. Bueno, sí, era y soy un gran fan de Star Wars, pero tamb
Arduino para principiantes y básicos electrónica Kit cartilla

Arduino para principiantes y básicos electrónica Kit cartilla

aprendí que una de mis sobrinas tuvo un interés en la programación.  Ella estaba trabajando con la robótica en el colegio y tiene una pasantía de verano donde tuvieron Arduinos.  Creo que ella fue capaz de pedir prestado un Arduino para experimentar
Referencia de la bolsa del gato

Referencia de la bolsa del gato

Hola.Por favor hacer una bolsa al final del año.(Esta bolsa es incómoda de usar.)He intentado hacerlo, porque me encanta el diseño.Este diseño estaba pensando a finales de octubre.Para aquellos que quieren hacer esta bolsa extraña.Estaba preparado pa
Orejas animales disfraz rápido y fácil

Orejas animales disfraz rápido y fácil

es el último minuto, y necesita un traje, rápido!Este método le permite hacer un par de orejas de animales cómodos con una forma realista en una media hora.  Es bastante flexible - si orejas de gato delicado corto o gigante se sacude orejas de conejo
Cómo hacer lindos llaveros con hilo azul envuelto colgante gato

Cómo hacer lindos llaveros con hilo azul envuelto colgante gato

¿Quieres diseñar tu propio llavero personalizado barato? Aquí voy a mostrar cómo hacer un llavero de gato precioso con alambre de aluminio azul. Este es un proyecto DIY fácil de 3 pasos para el adulto hacer con sus hijos. Vamos a ver cómo hacer el li
Extraño gato de Cheshire de Alicia en el país de las maravillas

Extraño gato de Cheshire de Alicia en el país de las maravillas

Sólo en tu mente:Bienvenido a sólo en tu mente. Uno de mis buenos amigos que Michelle sugirió hacer una Alicia en el maquillaje del país de las maravillas así que hice el gato de Cheshire. Espero que todos disfruten el gato de aspecto malvado.Maquill