Arduino Animatronic ojos (7 / 8 paso)

Paso 7: programación

Esto puede ser la parte más confusa del proyecto así que intenté escribir tanto código como pude para ideal, reducir al mínimo los problemas que tenga.

Todos los archivos están en el sketchbook.zip.

Primero, aquí está el código para tus servos centrados. El problema que enfrentamos es conseguir que la posición del servo correcto. Tenga en cuenta que estos servos van de 0 a 180 grados.

Así en resumen que queremos fijar los servos a 90 y 90 para su en el centro de los servos "rango de movimiento". Entonces podemos establecer la Horizontal (eje x) y Vertical (eje y) límites. Para eso puede utilizar el eyes_servo_single_test cambio de horServo.write(); y vertServo.write();

[eyes_servo_single_test código]

#include < Servo.h >

Servo horServo;
Servo vertServo;

void setup() {}
horServo.attach(8);
vertServo.attach(9);
}

void loop() {}
horServo.write(80);
vertServo.write(40);
}

[CÓDIGO DE FINAL]

Luego utilizaría eyes_full_servo_test enchufar otra vez sus valores altos y bajos para los servos así usted puede ver si tienes cualquier enlace. Construí en una tecla intermitente así que usted puede visualizar lo que paso tu sobre. Siempre puede pararlo a mitad de camino por el cable USB.

[eyes_full_servo_test código]

//==================
Esta es una prueba de posición de servo rápido que hice para mi proyecto de ojo
Los servos se mueven de los postions sets para el eje X e Y
Uno conjuntos de que parpadean el LED alta 20 segundos, tiempo de pruebas.
Prueba dos establece los servos en posición 40,0 6,5 segundos, dos parpadeos.
Prueba tres establece los servos en posición 80,0 durante 7,5 segundos, tres parpadea.
Prueba cuatro establece los servos en posición 0,70 8,5 segundos, cuatro parpadeos.
Cinco conjuntos de pruebas los servos en posición 0,110 9,5 segundos, cinco parpadea.

NECESIDAD DE PULSAR RESET UNA VEZ COMPLETADA LA PRUEBA

#include < Servo.h > //servo biblioteca

Servo horServo; servo de eje x
Servo vertServo; asxis y servo
int led = 13;

void setup() {}
horServo.attach(8); pin de servo de eje x 8
vertServo.attach(9); perno de eje servo 9
pinMode (led, salida);
}

void loop() {}
//==================TEST ONE=============//

Servos en posición de descanso o centro.
horServo.write(80);
vertServo.write(40);

parpadear una vez
digitalWrite (led, alto);
Delay(20000);
digitalWrite (led, baja);

//============Test Two=================//

prueba dos parpadea dos veces

horServo.write(20); límite a la izquierda de x
vertServo.write(40);

parpadee dos veces
digitalWrite (led, alto);
Delay(500);
digitalWrite (led, baja);
Delay(500);
digitalWrite(led,HIGH);
Delay(500);
digitalWrite (led, baja);
Delay(5000);

//=================Test Three==================//

prueba tres parpadea veces tres

horServo.write(80); x tope derecho
vertServo.write(40);

parpadear tres veces
digitalWrite (led, alto);
Delay(500);
digitalWrite (led, baja);
Delay(500);
digitalWrite(led,HIGH);
Delay(500);
digitalWrite (led, baja);
Delay(500);
digitalWrite(led,HIGH);
Delay(500);
digitalWrite (led, baja);
Delay(5000);


//==================Test four==================//

Prueba cuatro parpadea cuatro veces

horServo.write(80);
vertServo.write(0); límite superior y

parpadea cuatro veces
digitalWrite (led, alto);
Delay(500);
digitalWrite (led, baja);
Delay(500);
digitalWrite(led,HIGH);
Delay(500);
digitalWrite (led, baja);
Delay(500);
digitalWrite(led,HIGH);
Delay(500);
digitalWrite (led, baja);
Delay(500);
digitalWrite(led,HIGH);
Delay(500);
digitalWrite (led, baja);
Delay(5000);

//=================Test Five===================//

Prueba cinco parpadea veces cinco

horServo.write(80);
vertServo.write(110); límite inferior de y

parpadea cinco veces
digitalWrite (led, alto);
Delay(500);
digitalWrite (led, baja);
Delay(500);
digitalWrite(led,HIGH);
Delay(500);
digitalWrite (led, baja);
Delay(500);
digitalWrite(led,HIGH);
Delay(500);
digitalWrite (led, baja);
Delay(500);
digitalWrite(led,HIGH);
Delay(500);
digitalWrite (led, baja);
Delay(500);
digitalWrite(led,HIGH);
Delay(500);
digitalWrite (led, baja);
Delay(5000);

//=====================END======================//

Servos de vuelta a reposo o centro. La prueba terminó golpe RESET o espere para siempre

horServo.write(80);
vertServo.write(40);
digitalWrite (led, alto);
{while(1)}


}

[CÓDIGO DE FINAL]

El código utiliza PI para mover los ojos en un radio. Necesita asegurarse de que tiene tus servos en el pin 8 y 9 o cambiar en el código. Una vez que estés seguro que tienes todo correctamente puede fijar los conectores EZ en su lugar.

[eyes_sketch código]


#include < math.h >

#define pi 3.14159265358979323846
#define twopi (2 * pi)
Float circleradius = 50; 50 de cada lado - no hacer más cualquiera de los valores de límite máximo
Float stepnumber = 360;
Float stepangle;

#include < Servo.h > //include biblioteca de servo para control de servo

Servo horServo; servo para el movimiento de izquierda/derecha
Servo vertServo; servo para el movimiento de arriba/abajo

randomhor de bytes; definir variable aleatoria posición horizontal
randomvert de bytes; definir variable aleatoria posición vertical
int randomdelay; definir variable aleatorio de espera

#define HLEFTLIMIT 40 //define límite izquierdo en horizontal (izquierda/derecha) servo
#define HRIGHTLIMIT 80 //define tope derecho en horizontal (izquierda/derecha) servo

#define VTOPLIMIT 70 / / define el límite superior en vertical (arriba/abajo) servo
#define VBOTLIMIT 110 //define límite inferior horizontal (arriba/abajo) servo

void setup()
{
horServo.attach(8); horizontal servo en el pin 8
vertServo.attach(9); vertical servo en el pin 9
randomSeed(analogRead(0)); Crear algunos valores aleatorios usando un pin analógico

stepangle = twopi/stepnumber;
para (int i = 0; i < stepnumber; i ++) {}
ángulo de flotador = i * stepangle;
Float x = pecado (ángulo) * circleradius;
Float y = cos (ángulo) * circleradius;

x = mapa (x, 1-circleradius, circleradius, 0, 2 * circleradius);
y = mapa (y, 1 circleradius, circleradius, 0, 2 * circleradius);

horServo.write(x); escribir en el servo horizontal
vertServo.write(y); escribir en el servo horizontal

Delay(10);
}
}

void loop()
{
randomhor = random (HLEFTLIMIT, HRIGHTLIMIT); establecer límites de
randomvert = random (VTOPLIMIT, VBOTLIMIT); establecer límites de
randomdelay = random(1000, 4000); mueve cada 1 a 4 segundos

horServo.write(randomhor); escribir en el servo horizontal
vertServo.write(randomvert); escribir en el servo vertical
Delay(randomdelay); retrasar una cantidad aleatoria de tiempo (dentro de los valores por encima de)
}

[Código de final]

Artículos Relacionados

Arduino Animatronic de mano marca 1

Arduino Animatronic de mano marca 1

esto es un animatronic construí. Los dedos, la palma y el antebrazo están hechos completamente de madera (álamo para ser exactos). Los dedos se articulan mediante tendones (sedal) tirados por los motores. Ahora, los 5 servomotores se controlan con un
Animatronic ojos

Animatronic ojos

este instructable muestra cómo hice un par de ojos de un personaje de robot animatronic. Sólo mueva de lado a lado, pero tiene trabajo los párpados. (18 +)Realmente he modificado un conjunto manualmente controlado de ojos de muñeco DIY, utilizar serv
Arduino enorme Animatronic LED globo ocular

Arduino enorme Animatronic LED globo ocular

Actualmente estoy en proceso de hacer un artilugio de Halloween que tiene unos componentes que vale la pena documentar. El Enorme globo ocular de LED de Arduino Animatronic es uno de ellos.FondoMás proyectos de globo ocular de animatronic que encontr
Monster Pizza animatronic

Monster Pizza animatronic

Este Instructable le explicará cómo Cameron Spitzfaden (estudiante de segundo año en la Universidad de Alma) y yo (un senior en Alma) crea un monstruo animatronic para un proyecto de clase y el corto de principio a fin.Utilizamos una gran variedad de
Ojo de Agamotto

Ojo de Agamotto

"Por el ojo de Agamotto!"El ojo de Agamotto. Un amuleto impresionante el talismán superior, el más excelente ojo, bling del más allá... lo llaman lo que usted va, pero no traje de Dr. Strange estaría completa sin ella. Cuelgue de su cuello, broc
Caramelo entrega monstruo

Caramelo entrega monstruo

Caramelo entrega monstruo es el módulo final en un más grande Halloween themed Rube Goldberg-como sistema que los miembros de la Marin Makerspace está haciendo para el Bon aire centro Halloween Bash 2014. Los niños vienen al centro comercial y, ademá
8 pies 6 pulgadas de alto, cabeza de calabaza, encargado del cementerio!

8 pies 6 pulgadas de alto, cabeza de calabaza, encargado del cementerio!

Thought you may like to see my Halloween costume for this year. Comencé en abril del 2011 y ahora está casi acabado. El tema es el de un calabaza cabeza "guardián del cementerio" y está parado mientras se está usando en 8'6 "alto! Es inclus
Ojos de Animatronic y Wii Nunchuck parte 2 - le dan una voz

Ojos de Animatronic y Wii Nunchuck parte 2 - le dan una voz

Después de los ojos de animatronic en la parte 1, quería completar la cara con una voz y posiblemente moviendo las cejas. Si usted repasa mi parte 1, verás que para la base he utilizado un modelo de Thingiverse. Una vez que tengas el modelo 3D impres
Ojos de Animatronic y Wii Nunchuck

Ojos de Animatronic y Wii Nunchuck

Encontré este archivo de 3D en Thingiverse por Micropuller. Rápidamente me di cuenta de que el archivo crea una unidad de gran tamaño ojo. Pero todavía quería explorar la creación de una cara de animatronic que pude controlar con un Arduino.Cuanto má
Arduino controlado esqueleto Animatronic de rock - en progreso

Arduino controlado esqueleto Animatronic de rock - en progreso

Para Halloween este año, decidí construir una banda de rock esqueleto de animatronic. Es un trabajo en progreso en este punto, pero estoy muy contento con cómo está llegando a lo largo. Casi todo está hecho de materiales que tenía en la mano (soy un
Nuevos ojos de animatronic: Rock en!

Nuevos ojos de animatronic: Rock en!

Alguien había visto a Peter Penguin o mi Instructables en Animatronic pingüino Torso o Animatronic de ojos y estaba trabajando en una escultura. Él quería animar la escultura cuando alguien entró en la habitación y preguntó si podía hacerlo. Lo pensé
Los ojos de monstruo rodante (simple animatronic)

Los ojos de monstruo rodante (simple animatronic)

Esto es muy barato y simple animatronic, sólo utiliza un solo motor caja de cambios y 1battery AA corriente continua. puede utilizar para formar parte de objetos de Halloween.Paso 1: Material 1. 5 m m madera contrachapada2. pistola de pegamento3. caj
Arduino Wireless mano Animatronic

Arduino Wireless mano Animatronic

por cierto! Este instructable es awsomeeeeeeSe trata de una forma muy sencilla pero al mismo tiempo un proyecto muy duro dependiendo de su nivel de habilidad. Permite acceder al edificio.Esto, es una mano animatronic inalámbrico que no necesita un or
Arduino Steve - un Minecraft Animatronic

Arduino Steve - un Minecraft Animatronic

ResumenCon frecuencia hago Introducción a la electrónica para grupos - y después de la teoría del camino - esto es divertido proyecto para ver la teoría en la práctica. Con una poca preparación (pre impreso documentos) se puede completar en menos de