Traje animatronic hierro hombre Mk III (11 / 17 paso)

Paso 11: Electrónica-izquierda lado esquemático y código

Aquí es el esquema para el sistema de control del lado izquierdo.

Hay algunas notas en el diagrama pero es bastante sencillo. Cuando las piezas fueron compradas para el juego el lector ID12 sólo estaba disponible en una versión de 5V, que es alimentada por el Arduino. Puesto que los servos son accionados por una batería de 6V, era más fácil simplemente utilizar una batería de 9V para los paquetes de Arduinos y 6V para los servos porque necesita aislar la fuente de alimentación para el Arduino debido al ruido eléctrico generado por los servos.

Ahora que la ID12 está disponible en una versión de bajo voltaje que sería más simple de todo, desde una batería de 6V de alimentación y utilice un 3.3V Arduino Pro Mini y usar un 3.3V convertidor DC/DC fuente de alimentación aislada el Arduino. Sin embargo el protector de la onda sólo funciona a 5V.

En el código, verá que se muestran todas las etiquetas RFID cuatro dedos pero sólo dos identificadores de etiqueta son reconocidos en el código. Acabo de encontrarlo más fácil a la lista de todas las etiquetas que se utilizaba para el juego de construcción y entonces unívocamente la etiqueta individual IDs para funciones específicas. Tenga en cuenta que por supuesto tienes que ingresar tus propios códigos de ID de etiqueta. Para obtener más información sobre etiquetas RFID lectores y códigos de ID de etiqueta identificación echen un vistazo a este gran artículo de Bildr.

Tenga en cuenta que se necesita cambiar el nombre del archivo de audio de la llamarada de cadera pod a "Sonido1. WAV"para el protector de la onda jugarlo. También necesitará invertir el sentido de giro del servo para tres de los servos de pod de cadera ya que se agrupan en pares que reciben una señal idéntica.

Aquí está el código-

#include
#include "Servo.h" / / incluye la librería servo

Servo podServo; servo para mover cadera vainas
Servo leverServo; servo para mover las palancas de cadera pod
Servo rotateServo; servo para girar cadera vainas
Servo leftflapServo; servo para mover la aleta trasera izquierda
Servo rightflapServo; servo para mover hacia atrás la aleta

NewSoftSerial mySerial = NewSoftSerial (2, 3);

int RFIDResetPin = 13;
ledPin1 int = 6; pin de control de pod de cadera izquierda LED
int ledPin2 = 5; pin de control para LEDs de vaina derecha cadera
int servoPin1 = 10; pin de control de servo de la solapa izquierda
int servoPin2 = 11; pin de control de servo de aleta derecha
int servoPin3 = 9; pin de control de servo de pod
int servoPin4 = 8; pin de control de servo de palanca
int servoPin5 = 7; pin de control de servo gire
int soundPin = 12; pin de control de sonido de la llamarada

Registre aquí sus etiquetas RFID
char tag1 [13] = "440085E77452"; usted necesitará cambiar su propia etiqueta de
char la etiqueta2 [13] = "440085FC330E";
char tag3 [13] = "440085F97840";
char tag4 [13] = "4400863914EF";

void setup() {}
Serial.Begin(9600);
mySerial.begin(9600);

podServo.attach(servoPin3); se fija el servo en el pin 9 al objeto servo
leverServo.attach(servoPin4); se fija el servo en el pin 8 al objeto servo
rotateServo.attach(servoPin5); se fija el servo en el pin 7 al objeto servo
leftflapServo.attach(servoPin1); attches el servo en el pin 10 al objeto servo
rightflapServo.attach(servoPin2); se fija el servo en el pin 11 al objeto servo
podServo.write(155); girar el servo pod a 135 grados
leverServo.write(145); girar el servo palanca a 135 grados
rotateServo.write(165); girar el servo de rotación pod a 170 grados
leftflapServo.write(170); girar el servo de la solapa izquierda a 170 grados
rightflapServo.write(10); girar el servo derecho aleta a 10 grados
pinMode (ledPin1, salida); establece el pin LED como salida
pinMode (ledPin2, salida); establece el pin LED como salida
digitalWrite (ledPin1, LOW); Apagar LED
digitalWrite (ledPin2, LOW); Apagar LED
pinMode (soundPin, salida); establece el sonido pin como salida
digitalWrite (soundPin, bajo); Apague sonido pin

pinMode (RFIDResetPin, salida);
digitalWrite (RFIDResetPin, alto);

}

void loop() {}

char tagString [13];
Índice de int = 0;
lectura boolean = false;

{while(serial.Available())}

readByte int = Serial.read(); Lee el siguiente byte disponible

if(readByte == 2) de lectura = true; Inicio de etiqueta
if(readByte == 3) de lectura = false; final de la etiqueta

Si (lectura & & readByte! = 2 & & readByte! = 10 & & readByte! = 13) {}
Guarde la etiqueta
tagString [index] = readByte;
Índice ++;
}
}

checkTag(tagString); comprobar si es un partido
clearTag(tagString); claro al char de todo valor
resetReader(); reiniciar el lector de RFID
}

void checkTag (char tag[]) {}
///////////////////////////////////
Compruebe la etiqueta leída contra conocidas etiquetas
///////////////////////////////////

if(strlen(TAG) == 0) volver; vacío, no hay necesidad de seguir

Si (compareTag (etiqueta, tag1)) {/ / si tag1, ello
mySerial.print('A'); envía etiquetas leer sobre XBee

} else if (compareTag (etiqueta, etiqueta2)) {/ / si tag2, ello
podServo.write(90); girar el servo pod a 90 grados
Delay(500); esperar medio segundo
leverServo.write(95); girar el servo palanca a 90 grados
Delay(1000);
rotateServo.write(5); girar el servo de rotación pod a 10 grados
Delay(1500);
leverServo.write(145);
Delay(500);
digitalWrite (soundPin, HIGH); desactivar sonido en
Delay(10); Espere diez milisegundos
digitalWrite (soundPin, bajo); Activar sonido
digitalWrite (ledPin1, HIGH); encender LEDs
digitalWrite (ledPin2, HIGH); encender LEDs
Delay(50); esperar 50 milisegundos
digitalWrite (ledPin1, LOW); Apagar LED
digitalWrite (ledPin2, LOW); Apagar LED
Delay(50);
digitalWrite (ledPin1, HIGH); encender LEDs
digitalWrite (ledPin2, HIGH); encender LEDs
Delay(50);
digitalWrite (ledPin1, LOW); Apagar LED
digitalWrite (ledPin2, LOW); Apagar LED
Delay(50);
digitalWrite (ledPin1, HIGH); encender LEDs
digitalWrite (ledPin2, HIGH); encender LEDs
Delay(50);
digitalWrite (ledPin1, LOW); Apagar LED
digitalWrite (ledPin2, LOW); Apagar LED
Delay(50);
digitalWrite (ledPin1, HIGH); encender LEDs
digitalWrite (ledPin2, HIGH); encender LEDs
Delay(50);
digitalWrite (ledPin1, LOW); Apagar LED
digitalWrite (ledPin2, LOW); Apagar LED
Delay(50);
digitalWrite (ledPin1, HIGH); Apagar LED
digitalWrite (ledPin2, HIGH); Apagar LED
Delay(50);
digitalWrite (ledPin1, LOW); Apagar LED
digitalWrite (ledPin2, LOW); Apagar LED
Delay(50);
digitalWrite (ledPin1, HIGH); encender LEDs
digitalWrite (ledPin2, HIGH); encender LEDs
Delay(50);
digitalWrite (ledPin1, LOW); Apagar LED
digitalWrite (ledPin2, LOW); Apagar LED
Delay(50);
digitalWrite (ledPin1, HIGH); encender LEDs
digitalWrite (ledPin2, HIGH); encender LEDs
Delay(50);
digitalWrite (ledPin1, LOW); Apagar LED
digitalWrite (ledPin2, LOW); Apagar LED
Delay(50);
digitalWrite (ledPin1, HIGH); encender LEDs
digitalWrite (ledPin2, HIGH); encender LEDs
Delay(50);
digitalWrite (ledPin1, HIGH); Apagar LED
digitalWrite (ledPin2, HIGH); Apagar LED
Delay(50);
digitalWrite (ledPin1, LOW); Apagar LED
digitalWrite (ledPin2, LOW); Apagar LED
Delay(50);
digitalWrite (ledPin1, HIGH); encender LEDs
digitalWrite (ledPin2, HIGH); encender LEDs
Delay(50);
digitalWrite (ledPin1, LOW); Apagar LED
digitalWrite (ledPin2, LOW); Apagar LED
Delay(50);
digitalWrite (ledPin1, HIGH); encender LEDs
digitalWrite (ledPin2, HIGH); encender LEDs
Delay(50);
digitalWrite (ledPin1, LOW); Apagar LED
digitalWrite (ledPin2, LOW); Apagar LED
Delay(50);
digitalWrite (ledPin1, HIGH); encender LEDs
digitalWrite (ledPin2, HIGH); encender LEDs
Delay(50);
digitalWrite (ledPin1, LOW); Apagar LED
digitalWrite (ledPin2, LOW);
digitalWrite (ledPin1, HIGH); encender LEDs
digitalWrite (ledPin2, HIGH); encender LEDs
Delay(50);
digitalWrite (ledPin1, LOW); Apagar LED
digitalWrite (ledPin2, LOW); Apagar LED
Delay(50);
digitalWrite (ledPin1, HIGH); encender LEDs
digitalWrite (ledPin2, HIGH); encender LEDs
Delay(50);
digitalWrite (ledPin1, HIGH); Apagar LED
digitalWrite (ledPin2, HIGH); Apagar LED
Delay(50);
digitalWrite (ledPin1, LOW); Apagar LED
digitalWrite (ledPin2, LOW); Apagar LED
Delay(50);
digitalWrite (ledPin1, HIGH); encender LEDs
digitalWrite (ledPin2, HIGH); encender LEDs
Delay(50);
digitalWrite (ledPin1, LOW); Apagar LED
digitalWrite (ledPin2, LOW); Apagar LED
Delay(50);
digitalWrite (ledPin1, HIGH); encender LEDs
digitalWrite (ledPin2, HIGH); encender LEDs
Delay(50);
digitalWrite (ledPin1, LOW); Apagar LED
digitalWrite (ledPin2, LOW); Apagar LED
Delay(50);
digitalWrite (ledPin1, HIGH); encender LEDs
digitalWrite (ledPin2, HIGH); encender LEDs
Delay(50);
digitalWrite (ledPin1, LOW); Apagar LED
digitalWrite (ledPin2, LOW);
digitalWrite (ledPin1, HIGH); encender LEDs
digitalWrite (ledPin2, HIGH); encender LEDs
Delay(50);
digitalWrite (ledPin1, HIGH); Apagar LED
digitalWrite (ledPin2, HIGH); Apagar LED
Delay(50);
digitalWrite (ledPin1, LOW); Apagar LED
digitalWrite (ledPin2, LOW); Apagar LED
Delay(50);
digitalWrite (ledPin1, HIGH); encender LEDs
digitalWrite (ledPin2, HIGH); encender LEDs
Delay(50);
digitalWrite (ledPin1, LOW); Apagar LED
digitalWrite (ledPin2, LOW); Apagar LED
Delay(50);
digitalWrite (ledPin1, HIGH); encender LEDs
digitalWrite (ledPin2, HIGH); encender LEDs
Delay(50);
digitalWrite (ledPin1, LOW); Apagar LED
digitalWrite (ledPin2, LOW); Apagar LED
leverServo.write(95); girar el servo palanca a 90 grados
Delay(1500);
rotateServo.write(165); girar el servo pod a 135 grados
Delay(1000);
leverServo.write(145);
Delay(500);
podServo.write(155); girar el servo pod a 135 grados
Delay(2000);
leftflapServo.write(125); girar el servo de la solapa izquierda a 125 grados máximo
rightflapServo.write(55); girar el servo derecho aleta a 55 grados máximo
Delay(500);
leftflapServo.write(170); girar el servo de la solapa izquierda a 170 grados - completo abajo
rightflapServo.write(10); girar el servo derecho aleta a 10 grados - completo abajo
Delay(500);
leftflapServo.write(125); solapa izquierda completa hasta
Delay(500);
leftflapServo.write(170); solapa a la izquierda completo abajo
Delay(500);
rightflapServo.write(55); aleta derecha completa hasta
Delay(500);
rightflapServo.write(10); a la derecha aleta completo abajo

} else {}
Serial.println(TAG); leer cualquier etiqueta desconocido
}

}

void lightLED (int pin) {}
///////////////////////////////////
Enciende LED en pin "pin" de 250ms
///////////////////////////////////
Serial.println(PIN);

digitalWrite (pin, HIGH);
Delay(250);
digitalWrite (pin, LOW);
}

void resetReader() {}
///////////////////////////////////
Reiniciar el lector de RFID para leer otra vez.
///////////////////////////////////
digitalWrite (RFIDResetPin, bajo);
digitalWrite (RFIDResetPin, alto);
Delay(150);
}

void clearTag (char one[]) {}
///////////////////////////////////
claro el array de char por relleno de null - ASCII 0
Pensará la misma etiqueta ha sido leer de otra manera
///////////////////////////////////
para (int i = 0; i < strlen(one); i ++) {}
uno [i] = 0;
}
}

Boolean compareTag (char uno [], char two[]) {}
///////////////////////////////////
comparar dos valor a si mismo,
strcmp no funcionando al 100% por lo que lo hacemos
///////////////////////////////////

if(strlen(One) == 0) devuelven el valor false; vacío

para (int i = 0; i < 12; i ++) {}
Si (una [i]! = false return two[i]);
}

verdaderas; no hay desajustes
}

Aquí está el código para el WaveShield, cortesía de Adafruit-

#include
#include
#include
#include "WaveUtil.h"
#include "WaveHC.h"

Tarjeta SdReader; Este objeto contiene la información de la tarjeta
FatVolume vol; Contiene la información de la partición en la tarjeta
FatReader raíz; Esto contiene la información para el sistema de archivos en la tarjeta
FatReader f; Esto contiene la información del archivo estamos jugamos

Ola WaveHC; Este es el único objeto (audio) de la onda, puesto que sólo jugaremos uno a la vez

#define DEBOUNCE 100 / botón debouncer

Esta práctica función devolverá el número de bytes actualmente libres en RAM, ideal para depuración!
int freeRam(void)
{
extern int __bss_end;
extern int * __brkval;
int free_memory;
Si ((int) __brkval == 0) {}
free_memory = ((int) & free_memory)-((int) & __bss_end);
}
Else {}
free_memory = ((int) & free_memory)-((int) __brkval);
}
volver free_memory;
}

void sdErrorCheck(void)
{
Si (! card.errorCode()) retorno;
putstring ("\n\rSD I/O error:");
Serial.Print(Card.ErrorCode(), hexagonal);
putstring (",");
Serial.println(Card.errorData(), hexagonal);
while(1);
}

void setup() {}
Configurar puerto serie
Serial.Begin(9600);
putstring_nl ("WaveHC con 6 botones");

putstring ("memoria RAM libre:"); Esto puede ayudar con la depuración, es malo quedarse sin RAM
Serial.println(freeRam()); Si es menor de 150 bytes escribe con problemas!

Configurar los pines de salida para el control de la DAC. Este los pernos se definen en la biblioteca
pinMode (2, salida);
pinMode (3, salida);
pinMode (4, salida);
pinMode (5, salida);

pin13 LED
pinMode (13, salida);

habilitar las resistencias pull-up en las patillas del interruptor (entradas analógicas)
digitalWrite (14, alto);
digitalWrite (15, alto);
digitalWrite (16, alto);
digitalWrite (17, HIGH);
digitalWrite (18, alta);
digitalWrite (19, alto);

Si (! card.init(true)) {//play con spi de 4 MHz si 8MHz no funciona para usted
Si (! card.init()) {//play con spi de 8 MHz (por defecto más rápido!)
putstring_nl ("tarjeta init. no se pudo!"); Algo salió mal, permite imprimir por qué
sdErrorCheck();
while(1); entonces 'detener': ¡ no!
}

permiten optimizar la lectura - algunas tarjetas pueden tiempo de espera. Desactivar si tienes problemas
card.partialBlockRead(true);

Ahora buscaremos una partición FAT!
parte de uint8_t;
para (parte = 0; parte < 5; parte ++) {/ / tenemos hasta 5 ranuras en
Si (vol.init (tarjeta, parte))
rotura; encontró uno, permite la libertad bajo fianza
}
Si (parte == 5) {/ / si terminamos por no encontrar uno :(
putstring_nl ("No válida partición FAT!");
sdErrorCheck(); Algo salió mal, permite imprimir por qué
while(1); entonces 'detener': ¡ no!
}

Permite decir que el usuario lo que encontramos
putstring ("partición de uso");
Serial.Print (parte, DEC);
putstring (", el tipo es grasa");
Serial.println(Vol.fatType(),DEC); ¿FAT16 o FAT32?

Intente abrir el directorio raíz
Si (! {root.openRoot(vol))}
putstring_nl ("no se puede abrir raíz dir!"); Algo salió mal,
while(1); entonces 'detener': ¡ no!
}

¡ UF! Llegamos pasado las partes difíciles.
putstring_nl("Ready!");
}

void loop() {}
putstring("."); Sin comentarios para ver si no está ejecutando el bucle
interruptor (check_switches()) {}
caso 1:
playcomplete ("Sonido1. WAV");
rotura;
caso 2:
playcomplete ("Sonido2. WAV");
rotura;
caso 3:
playcomplete "(SOUND3. WAV");
rotura;
caso 4:
playcomplete ("SOUND4. WAV");
rotura;
caso 5:
playcomplete ("SOUND5. WAV");
rotura;
caso 6:
playcomplete "(SOUND6. WAV");
}
}

check_switches() bytes
{
Static byte anterior [6];
estática mucho tiempo [6];
byte de lectura;
byte que presiona;
Índice de bytes;
presiona = 0;

para (índice byte = 0; índice < 6; ++ índice) {}
lectura = digitalRead (14 + índice);
Si (leer == baja & & anterior [índice] == alto & & millis() - tiempo [índice] > DEBOUNCE)
{
interruptor presionado
tiempo [índice] = millis();
presiona = index + 1;
rotura;
}
anterior [índice] = lectura;
}
devolver el número de conmutador (1-6)
retorno (presionado);
}

Reproduce un archivo completo de principio a fin sin pausa.
void playcomplete(char *name) {}
llamar a nuestro ayudante para buscar y reproducir este nombre
playfile(Name);
mientras (wave.isplaying) {}
no hacer nada durante la reproducción de su
}
su hecho reproduciendo
}

void playfile(char *name) {}
ver si el objeto ola está haciendo algo
Si (wave.isplaying) {/ / así que ya está reproduciendo algo, stop!
Wave.STOP(); Basta
}
Buscar en el directorio raíz y abre el archivo
Si (! f.open (raíz, nombre)) {}
putstring ("no puede abrir archivo"); Serial.Print(Name); retorno;
}
Leer bien el archivo y convertirlo en un objeto de onda
Si (! {wave.create(f))}
putstring_nl ("no un válido WAV"); retorno;
}

OK el tiempo para jugar! iniciar la reproducción
Wave.Play();
}

Artículos Relacionados

¿Hacer un hierro hombre completo Metal Chestplate + brazos

¿Hacer un hierro hombre completo Metal Chestplate + brazos

desea mostrar a su amigo tus habilidades de construcción y originalidad? Este instructivo puede ser ideal para usted! Le mostrará cómo hacer un chestplate full metal y armas que te hacen están fuera de la multitud, literalmente! Puede hacer que el hi
Reactor de arco de hierro hombre Bang Bang etiqueta

Reactor de arco de hierro hombre Bang Bang etiqueta

Hola chicos...We Are Back...Todo el mundo quiere ser hombre de hierro una vez en su vida...Así que aquí os presentamos hierro hombre ARC REACTOR BANG BANG el TAG...Tenemos esta idea desde nuestro lugar natal donde los niños juegan juegos como ladrón
Hierro hombre casco construir

Hierro hombre casco construir

Hola todo el mundo, gracias por sacar mi primer instructivo sobre cómo hacer un casco de hierro hombre marca 3. Estoy utilizando papel para hacerlo y entonces va a utilizar fibra de vidrio y resina de fibra de vidrio para endurecer el casco. Usted te
CR-tutoriales-hierro hombre Arc Reactor Prop

CR-tutoriales-hierro hombre Arc Reactor Prop

tutorial de Adán en un hierro hombre Arc Reactor PropVisite nuestro sitio web en CRTutorials.co.nrMúsica de Flashkit.com/loopsPor favor, suscribirse, añadirnos como amigos, a un amigo, deja un comentario, tasa este video y por ver
Hierro hombre bricolaje PC Case Mod

Hierro hombre bricolaje PC Case Mod

¿Cansado de su antigua torre de PC?Convertirlo en su propio hierro hombre caso Mod. Siga estos sencillos pasos.Lo que se necesita:Ordenador antiguoHerramienta DremelPintura en aerosol (rojo/dorado)LápizLija de grano 600Hombre de hierro DIY KitPaso 1:
Hierro hombre DIY XBOX 360 Mod del caso

Hierro hombre DIY XBOX 360 Mod del caso

¿Cansado de tu viejo XBOX 360?Convertirlo en su propio hierro hombre XBOX 360 caja Mod. Siga estos sencillos pasos.Lo que se necesita:XBOX 360Herramienta DremelDestornillador T10Pintura en aerosol (rojo/dorado)LápizLija de grano 600Hombre de hierro D
Hierro hombre - Perler edición

Hierro hombre - Perler edición

Pearler a veces son un poco lentos, pero pueden ser muy divertido y buscando realmente impresionante! En este instructable, espero que puedo mostrarte los pasos para crear mi cuentas perler Hierro hombre marca XX Python. La razón por la que no recrea
Hierro hombre Lego traje

Hierro hombre Lego traje

Paso 1: Corte un cuadro que tenía en mano y ducttaped que juntos.Paso 2: Cortar un agujero para la cabeza y brazos Asegúrese de que el agujero de la cabeza es más pequeña que la cabeza de lego, o bien no se sienta bien. Más adelante agrega pedazos de
Hierro hombre Cosplay botas

Hierro hombre Cosplay botas

Si usted es un fan de Iron Man y le encantaría cosplay traje replica pero no tienen el dinero y tiempo para hacer un traje de Iron Man completo este es el proyecto perfecto para usted. A nivel personal, admiro profundamente a la serie de cómics de Ir
Hierro hombre 4ª generación Reactor de arco

Hierro hombre 4ª generación Reactor de arco

DESCRIPCIÓNRealmente nadie puede decir no al traje marca fascinante desde la película que arrasó en todo el mundo. Si alguna vez han visto el cómic de Iron Man o una de las películas de Iron Man hubiera sabido que la fuente de alimentación de la marc
Casco de hierro hombre (estilo tron)

Casco de hierro hombre (estilo tron)

Hola a todos en este tutorial voy a mostrar cómo hice un casco de hombre de hierro con un tron miren o como yo lo llamo "hombre tron".Para hacer este impresionante casco necesitas los siguientes materiales:-6 metros de alambre de EL y el inverso
Hierro hombre Arc Reactor + casco (cubo)

Hierro hombre Arc Reactor + casco (cubo)

va a ser el hombre de hierro para halloween y este es mi casco arc reactor y cubo. Su nada demasiado complicado.
DIY hierro hombre MK. 1 Arc Reactor (hace super barato, por supuesto...)

DIY hierro hombre MK. 1 Arc Reactor (hace super barato, por supuesto...)

Aquí es mi propia en la construcción de una propuesta de Reactor de arco de hombre de hierro. De ninguna manera es dimensionalmente correcta, pero he intentado permanecer fiel a la apariencia de la prop original de película.Como es típico con mis est
KVG hierro hombre Jetboot

KVG hierro hombre Jetboot

aquí es un Jetboot de hombre de hierro hice de KVG. Aquí están las instrucciones. Se supone que se mueven con una cosa de tipo bisagra, pero era difícil de mover lo que conectado simplemente juntos. Ahora se trata de un modelo. También hice algunas m