Construir una réplica traje depredador (4 / 10 paso)

Paso 4: Electrónica y programación

Adición de un cerebro y efectos de sonido-

Ahora que tuve la mecánica hace que necesitaba para hacerla mover. Usé un Arduino Mini Pro para manejar las entradas y movimientos servo y y un Arduino Pro con un protector de la onda de Adafruit para manejar los efectos de sonido. Hay una pequeña tabla que tiene tres transistores en él-los transistores encienda la mira láser de casco y disparar el cañón LED y efectos de sonido. La Junta también tiene un 3.3V regulador para proporcionar energía para la vista del laser del casco.

El cañón de LED es un Luxeon azul brillante que es conducido por un conductor actual constante del "Buck Toot". Con el fin de evitar cualquier problema de ruido del servo los Arduinos son accionados por una batería de 9V y todo lo demás es alimentado por cuatro pilas alcalinas "AA". Yo pude han utilizado baterías de NiCad, NiMH o LiPo pero ya que estábamos en una apretada agenda no quería que los chicos tengan que preocuparse de baterías especializadas o carga largo veces-podían conseguir baterías de repuesto en cualquier tienda de comestibles.

Entradas de control sería tres Interruptores táctiles punta de dedo pequeño. Los interruptores son de encendido/apagado así que si Jamie empuja uno de ellos un sonido se repita una y otra vez hasta que se apague. Además el cañón seguirá moverse a través de ha programado secuencia hasta que se apague. Los interruptores de punta de dedo se conectaron a la mochila mediante un cable ethernet que funcionaría a lo largo del brazo de Jamie y los interruptores se sentarían dentro de los dedos del guante.

La electrónica se monta en una 1/8" espesor placa de aluminio con separadores de plástico y tornillos 4-40.

Se muestra el diagrama de cableado completo y he incluido el sonido sonido de archivos uno es para el cañón, una es el depredador "chasquidos" y el último sonido es el rugir del depredador.

Los Arduinos se programan utilizando un desglose básico de FTDI. Escribí una guía de programación de Arduino aquí-

Aquí está el código para el Arduino Mini Pro- controla los movimientos del cañón:

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

Servo1 servo;  crea una instancia del objeto servo para controlar un servo
Servo servo2;
Servo servo3;


int servoPin1 = 9;  pin de control de servo
int servoPin2 = 8;
int servoPin3 = 7;


ledPin1 int = 11;  pin de control de LED
int ledPin2 = 12;  pin de control de láser de la vista
int soundPin1 = 10;  pin de control de tarjeta de sonido

void setup() {}

servo1.Attach(servoPin1);  se fija el servo en el pin al objeto servo
servo2.Attach(servoPin2);
servo3.Attach(servoPin3);

pinMode (ledPin1, salida);  establece el pin LED como salida
pinMode (ledPin2, salida);
pinMode (soundPin1, salida);  establece el sonido pin como salida
digitalWrite (ledPin1, LOW); establece el pin del LED baja (apaga)
digitalWrite (ledPin2, LOW);
digitalWrite (soundPin1, bajo);
}

void loop() {}

digitalWrite (ledPin2, HIGH); establece el pin LED alta (enciende)


servo3.Write(170); brazo de cañón plantea
servo1.Write(140); gira el cañón hacia arriba

Delay(2000);

servo2.Write(40); gira el cañón de la cabeza

Delay(2000);

servo2.Write(110); gira el cañón hacia la cabeza
digitalWrite (ledPin1, HIGH);
digitalWrite (soundPin1, HIGH);
Delay(10);
digitalWrite (ledPin1, LOW);
digitalWrite (soundPin1, bajo);

Delay(4000);

servo2.Write(60); gira el cañón de la cabeza
servo1.Write(120); gira el cañón hacia arriba
Delay(1000);
digitalWrite (ledPin1, HIGH);
digitalWrite (soundPin1, HIGH);
Delay(10);
digitalWrite (ledPin1, LOW);
digitalWrite (soundPin1, bajo);

Delay(3000);

servo2.Write(120); gira el cañón hacia la cabeza
servo1.Write(150); gira el cañón hacia abajo
Delay(2000);
digitalWrite (ledPin1, HIGH);
digitalWrite (soundPin1, HIGH);
Delay(10);
digitalWrite (ledPin1, LOW);
digitalWrite (soundPin1, bajo);
Delay(1000);
servo1.Write(140);

Delay(3000);

servo1.Write(170);
Delay(500);
servo2.Write(90);
Delay(1000);
servo3.Write(10);
digitalWrite (ledPin2, LOW);

Delay(5000);

}

Aquí está el código para el escudo de onda - (cortesía de Adafruit)

#include < FatReader.h >
#include < SdReader.h >
#include < avr/pgmspace.h >
#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

Cómo construir una réplica de cuadro Daft Punk

Cómo construir una réplica de cuadro Daft Punk

la idea es construir una réplica de la tabla de Daft Punk vendido en hábitat, muy bonito, pero, mientras que yo sepa no venden más.El proceso de construcción no es muy complicado, la parte más difícil es decidir todo cuando su punto de partida es cer
Estado sólido control de Halloween y cómo construir una casa embrujada

Estado sólido control de Halloween y cómo construir una casa embrujada

esto era originalmente un artículo en hacer 03 donde mi impresionante editor Paul Spinrad realmente una réplica de mi controlador e hizo un trabajo mucho mejor que documentan lo que quisiera. Para la tarjeta controladora, si necesitas más explicación
Cómo hacer una réplica de la pistola "Pepperbox" madera

Cómo hacer una réplica de la pistola "Pepperbox" madera

este instructable es mostrar cómo hice, y por lo tanto, como se puede hacer, una réplica de madera de una pistola pepperbox como la ves aquí. La pistola pepperbox fue probablemente el primer "revolver" como lo fue la primera pistola con un surti
Cómo construir una nave de madera del palillo paletas

Cómo construir una nave de madera del palillo paletas

nuestra más antigua recientemente tuvo la tarea de un proyecto familiar para construir un modelo de una de las tres naves que navegaron con Colón cuando descubrió el nuevo mundo.  Como la suerte lo tendría, ella decidió construir a la Nina la Pinta o
Construir una bicicleta de carga carro comercial

Construir una bicicleta de carga carro comercial

Construir una bicicleta de carga de una vieja bicicleta de montaña, un carrito de compra metal, piezas de la bici varios, una variedad de pedazos de metal y una voluntad para hackear cosas apartes!Yo actualmente estoy viviendo una vida libre de coche
Construir una balsa de jarro de leche!

Construir una balsa de jarro de leche!

Este Instructable describe la construcción de una balsa de jarro de leche resistente construida con materiales reciclados y capaz de soportar más de 700 libras. El producto es un arte para lagos, ríos y piscinas por igual.Realmente yo me he entreteni
Cómo no construir una piscina de reflejo con Galium

Cómo no construir una piscina de reflejo con Galium

¡ Hola!Esto es una introducción de cómo no construir una piscina de reflejo con galio!Los dos primeros pasos era demostrar los pasos de principio sin embargo al final se documentan los errores que he hecho y lo que no debe hacer.La idea original era
Cómo construir una ducha walk-in (parte 2: instalación en pared de Wedi)

Cómo construir una ducha walk-in (parte 2: instalación en pared de Wedi)

Este es un tutorial épico...Te prometo que aprenderás cómo construir una ducha en 1 hora o menos.Es una seria garantía pero estoy detrás de él.¿Por qué?Nos adrede habían hecho paso a paso para que cualquier persona podría seguir.Impermeabilización es
Cómo construir una ducha walk-in (parte 1: ducha Wedi Pan)

Cómo construir una ducha walk-in (parte 1: ducha Wedi Pan)

Me encanta mi ducha.Esta es la historia, mi esposa y yo construido nuestro baño principal del sueño. Guardar nuestro dinero y compré en la remodelación. El elemento clave fue una ducha de azulejos personalizados. La manera más conveniente para dar un
Construir una repisa Vardo

Construir una repisa Vardo

Bienvenidos a mi 1er construir repisa Vardo.Mi nombre es David y mi esposa es Martha. Somos del norte de Indiana.Esperamos que el primer viaje con nuestros Vardo de repisa.Tuve este chasis construido para este propósito. $2600Es 12 pies de largo y 6
Construir una estación SUPER frambuesa Pi

Construir una estación SUPER frambuesa Pi

Seamos realistas, los seres humanos hablamos el tiempo un ⛅️ de mucho. La persona promedio habla el tiempo cuatro veces al día, para un promedio de 8 minutos y 21 segundos. Hacer la matemática y que asciende a 10 meses de su vida que pasará a ladrar
Usar escudo de Lora y RPi para construir una puerta de entrada de LoRaWAN

Usar escudo de Lora y RPi para construir una puerta de entrada de LoRaWAN

Aquí, usaremos la Lora Shileld, MEGA2560 y Raspberry Pi para la construcción de un canal de entrada de LoRaWAN.LoRa La tecnología es una modulación inalámbrica para aplicaciones derango de ong, bajo consumo, bajas tasas de datos de l. Obteniendo una
Cómo construir una moto eléctrica de 24 voltios

Cómo construir una moto eléctrica de 24 voltios

Yo he visto unas estructuras del vehículo eléctrico (EV) para motocicletas en Instructables y todos ellos fueron muy útiles. Espero agregar a aquellos que han salido adelante y construido, compartido y me motivó a construir uno. Se trata de cómo fui
Cómo construir una bicicleta eléctrica por menos de $100

Cómo construir una bicicleta eléctrica por menos de $100

sí, es posible construir una bicicleta eléctrica por menos de $100. El secreto para hacer este es... obtener la mayor parte de sus materiales gratis! Ahora no sólo voy a pierde y dicen ir encontrar este material o bien. Hay algunos trucos y consejos