Bouwen van een replica Predator kostuum (4 / 10 stap)

Stap 4: Elektronica en programmering


Een brein en geluidseffecten-toe te voegen

Nu dat ik de monteurs gedaan had ik nodig had om het verplaatsen te maken. Ik gebruikte een Arduino Pro Mini om de ingangen en servo bewegingen en en een Arduino Pro met een Adafruit Wave Shield om de geluidseffecten. Er is een kleine board dat drie transistoren op it heeft-de transistors zet de helm laser zicht en leiden tot het kanon LED en geluidseffect. De Raad van bestuur heeft ook een 3.3V regelgever voor de stroomvoorziening voor de helm laser zicht.

Het kanon LED is een heldere blauwe Luxeon dat wordt aangestuurd door een constante huidige "Buck Toot" bestuurder. Om te voorkomen dat eventuele problemen servo lawaai de Arduinos worden aangedreven door een 9V batterij en alles wordt aangedreven door vier "AA" alkaline batterijen. Ik kon heb gebruikt NiCad, NiMH of LiPo Accu's, maar sinds we dergelijke volgens een strak schema waren wilde ik de jongens om hoeft te maken over gespecialiseerde batterijpakken of lange heffing keer-ze vervangende batterijen in elke supermarkt krijgen konden.

Controle ingangen zou drie kleine vinger tip tactiele schakelaars. De schakelaars zijn aan/uit, dus als Jamie een van hen duwde een geluid zich over en voorbij herhalen zou totdat het was uitgeschakeld. Ook het kanon zou blijven verplaatsen via het heeft geprogrammeerd volgorde totdat deze is uitgeschakeld. De vinger tip schakelaars waren verbonden met de rugzak met behulp van een ethernet-kabel die langs de lange zijde van Jamie's arm zou worden uitgevoerd en de schakelopties zou zitten in de vingers van de handschoen.

De elektronica werden op een 1/8" dikke aluminiumplaat met behulp van kunststof koelbloedig en 4-40 schroeven gemonteerd.

De volledige schakelvoorbeeld is afgebeeld en ik heb ook het geluid bestanden-één geluid voor het kanon is, behoort de Predator "te klikken op" geluid en het laatste geluid is het gebrul van de Predator.

De Arduinos zijn geprogrammeerd met behulp van een FTDI fundamentele breakout. Ik schreef een handleiding voor het programmeren van de Arduino hier-

Hier is de code voor de Arduino Pro Mini- dit regelt de kanon bewegingen:

#include < Servo.h > / / de servo-bibliotheek

Servo servo1;  Hiermee maakt u een exemplaar van het servo-object om te bepalen van een servo
Servo servo2;
Servo servo3;


int servoPin1 = 9;  controle pin voor servo
int servoPin2 = 8;
int servoPin3 = 7;


int ledPin1 = 11;  controle pin voor LED
int ledPin2 = 12;  controle pin voor laser zicht
int soundPin1 = 10;  controle pin voor geluidskaart

VOID Setup {}

servo1.attach(servoPin1);  de servo op pin hecht aan de servo-object
servo2.attach(servoPin2);
servo3.attach(servoPin3);

pinMode (ledPin1, OUTPUT);  Hiermee stelt u de LED-pin als uitvoer
pinMode (ledPin2, OUTPUT);
pinMode (soundPin1, OUTPUT);  Hiermee stelt u de correcte pin als uitvoer
digitalWrite (ledPin1, laag); Hiermee stelt u de LED pin LOW (uitgeschakeld)
digitalWrite (ledPin2, laag);
digitalWrite (soundPin1, laag);
}

void loop {}

digitalWrite (ledPin2, hoge); Hiermee stelt u de LED pin HIGH (verandert het op)


servo3.write(170); werpt kanon arm
servo1.write(140); kanon omhoog draait

delay(2000);

servo2.write(40); kanon uit de buurt van hoofd draait

delay(2000);

servo2.write(110); kanon naar hoofd draait
digitalWrite (ledPin1, hoge);
digitalWrite (soundPin1, hoge);
delay(10);
digitalWrite (ledPin1, laag);
digitalWrite (soundPin1, laag);

delay(4000);

servo2.write(60); kanon uit de buurt van hoofd draait
servo1.write(120); kanon omhoog draait
delay(1000);
digitalWrite (ledPin1, hoge);
digitalWrite (soundPin1, hoge);
delay(10);
digitalWrite (ledPin1, laag);
digitalWrite (soundPin1, laag);

delay(3000);

servo2.write(120); kanon naar hoofd draait
servo1.write(150); kanon naar beneden draait
delay(2000);
digitalWrite (ledPin1, hoge);
digitalWrite (soundPin1, hoge);
delay(10);
digitalWrite (ledPin1, laag);
digitalWrite (soundPin1, laag);
delay(1000);
servo1.write(140);

delay(3000);

servo1.write(170);
delay(500);
servo2.write(90);
delay(1000);
servo3.write(10);
digitalWrite (ledPin2, laag);

delay(5000);

}

Hier is de code voor de Wave Shield - (hoffelijkheid van Adafruit)

#include < FatReader.h >
#include < SdReader.h >
#include < avr/pgmspace.h >
#include "WaveUtil.h"
#include "WaveHC.h"

Kaart van de SdReader;    Dit object bevat de gegevens voor de kaart
FatVolume vol;    Dit houdt de informatie voor de partitie op de kaart
FatReader wortel;   Dit bevat de gegevens voor het bestandssysteem op de kaart
F FatReader;      Dit bevat de gegevens voor het bestand we aan het spelen bent

WaveHC Golf;      Dit is de enige Golf (audio) object, omdat we zullen slechts één filter tegelijk spelen

#define DEBOUNCE 100 / / button debouncer

deze handige functie geeft het aantal bytes in het RAM, momenteel gratis groot voor debugging!
int freeRam(void)
{
extern int __bss_end;
extern int * __brkval;
int free_memory;
Als (__brkval (int) == 0) {}
FREE_MEMORY = ((int) & free_memory)-((int) & __bss_end);
}
else {}
FREE_MEMORY = ((int) & free_memory)-((int) __brkval);
}
Return free_memory;
}

VOID sdErrorCheck(void)
{
Als (! card.errorCode()) keren;
putstring ("\n\rSD I/O fout:");
Serial.Print(Card.ErrorCode(), HEX);
putstring (",");
Serial.println(Card.errorData(), HEX);
while(1);
}

VOID Setup {}
seriële poort instellen
Serial.begin(9600);
putstring_nl ("WaveHC met 6 knoppen");

putstring ("vrije RAM:");       Dit kan helpen met het opsporen van fouten, uit RAM lopend is slecht
Serial.println(freeRam());      Als dit onder 150 bytes kan het problemen magie!

De pennen voor de DAC-besturingselement instellen Deze pennen zijn gedefinieerd in de bibliotheek
pinMode (2, OUTPUT);
pinMode (3, OUTPUT);
pinMode (4, OUTPUT);
pinMode (5, OUTPUT);

pin13 LED
pinMode (13, OUTPUT);

inschakelen van pull-up weerstanden op schakelaar pinnen (analoge ingangen)
digitalWrite (14, hoge);
digitalWrite (15, hoge);
digitalWrite (16, hoge);
digitalWrite (17, hoge);
digitalWrite (18, hoge);
digitalWrite (19, hoge);

Als (! card.init(true)) {//play met 4 MHz spi als 8MHz niet voor u werkt
Als (! card.init()) {//play met 8 MHz spi (standaard sneller!)
putstring_nl ("Card init. mislukt!");  Er ging iets mis, laat uitprinten waarom
sdErrorCheck();
while(1);                            vervolgens 'stoppen' - niets doen!
}

inschakelen optimaliseren lees - sommige kaarten kunnen timeout. Uitschakelen als u problemen ondervindt
card.partialBlockRead(true);

Nu gaan we voor een FAT-partitie!
uint8_t deel;
voor (deel = 0; deel < 5; deel ++) {/ / Wij hebben maximaal 5 "slots" om in te kijken
Als (vol.init (kaart, deel))
breken;                             We vonden een, laat borgtocht
}
Als (deel == 5) {/ / als we uiteindelijk niet het vinden van een :(
putstring_nl ("geen geldige FAT-partitie!");
sdErrorCheck();      Er ging iets mis, laat uitprinten waarom
while(1);                            vervolgens 'stoppen' - niets doen!
}

Laat de gebruiker te vertellen over wat we gevonden
putstring ("Using partitie");
Serial.Print (deel, DEC);
putstring (", type is vet");
Serial.println(vol.fatType(),DEC);     FAT16 of FAT32?

Probeert te openen van de root directory
Als (! root.openRoot(vol)) {}
putstring_nl ("kan niet openen root dir!"); Er ging iets mis,
while(1);                             vervolgens 'stoppen' - niets doen!
}

Oef! Daar kregen we voorbij de harde delen.
putstring_nl("Ready!");
}

void loop {}
putstring(".");            uncomment dit om te zien als de lus niet actief
schakelaar (check_switches()) {}
Case 1:
playcomplete ("SOUND1. WAV");
breken;
Case 2:
playcomplete ("SOUND2. WAV");
breken;
Case 3:
playcomplete ("SOUND3. WAV");
breken;
Case 4:
playcomplete ("SOUND4. WAV");
breken;
Case 5:
playcomplete ("SOUND5. WAV");
breken;
Case 6:
playcomplete ("SOUND6. WAV");
}
}

byte check_switches()
{
statische byte vorige [6];
statische lange tijd [6];
byte lezen;
byte gedrukt;
byte index;
ingedrukt = 0;

voor (byte index = 0; index < 6; ++ index) {}
lezen = digitalRead (14 + index);
Als (lezen == LOW & & Vorige [index] == HIGH & & millis() - tijd [index] > DEBOUNCE)
{
schakelaar ingedrukt
tijd [index] = millis();
ingedrukt = index + 1;
breken;
}
Vorige [index] = lezing;
}
retourneren van de schakeloptie-nummer (1-6)
terugkeer (gedrukt);
}

Speelt een volledige bestand van begin tot eind met geen pauze.
ongeldig playcomplete(char *name) {}
Bel onze helper vinden en spelen deze naam
playfile(name);
terwijl (wave.isplaying) {}
niets te doen tijdens het spelen van haar
}
nu zijn gedaan afspelen
}

ongeldig playfile(char *name) {}
Zie als de Golf-object is momenteel bezig met iets
Als (wave.isplaying) {/ / al het spelen van iets, dus stoppen met het!
Wave.stop(); Stop ermee
}
kijken in de root directory en open het bestand
Als (! f.open (root, naam)) {}
putstring kon niet ("open bestand"); Serial.Print(name); terugkeer;
}
OK lees het bestand en zet hem in een golf-object
Als (! wave.create(f)) {}
putstring_nl ("niet een geldig WAV"); terugkeer;
}

OK tijd om te spelen! Start het afspelen
Wave.Play();
}

Gerelateerde Artikelen

Hoe het bouwen van een Decepticons: "Starscream" kostuum

Hoe het bouwen van een Decepticons: "Starscream" kostuum

Die verstoort mijn kroning?! Starscream vliegt de niet-zo-vriendelijke luchten!Ik wilde aan toevoegen, een belangrijkste lid van de Transformers onze transformatoren cosplay, zodat die beter dan Starscream!* Een zeer speciale shout-out naar instructa
Bouwen van een Replica Skyrim Shield

Bouwen van een Replica Skyrim Shield

Dit schild is uit de video game Skyrim. Elk van de negen bezit, of de steden, heeft dit schild met een uniek symbool. Ik neem u door mijn proces van het creëren van twee schilden. Een ik benaderen als spel nauwkeurige grootte op 24" met het symbool v
Bouwen van een LEGO baksteen kostuum

Bouwen van een LEGO baksteen kostuum

alleen alles wat u nodig hebt is een vak, 8 containers & rode verf.1. Hier krijg je een vak over de grootte en de measurments die hieronder wordt vermeld2. Snij de gaten ongeveer 10" breed (de contianers moet dezelfde breedte als de containers wo
Bouwen van een 1:1 schaal Portal pistool met verlichting

Bouwen van een 1:1 schaal Portal pistool met verlichting

Inleiding:Dit Instructable zal detail het proces ging ik door terwijl de bouw van mijn eigen Diafragma wetenschap Handheld Portal apparaat [AKA de "Portal Gun"] uit het ventiel wild Portal & Portal 2. Hoewel de Portal Gun de belangrijkste fo
How to make van een Avenger "Wasp" kostuum

How to make van een Avenger "Wasp" kostuum

What's all the "buzz" over?? het is de WASP!  Ik weet, dat was een verschrikkelijk grap. Terwijl zijn er vele uitleveringen van wesp van de Avengers, deze versie is uit het "Avengers: de machtigste helden van de aarde" laten zien.Mater
Hoe het bouwen van een houten schip van Popsicle Stick

Hoe het bouwen van een houten schip van Popsicle Stick

onze oudste onlangs werd belast met een familie-project aan het bouwen van een model van een van de drie schepen die zeilde met Columbus toen hij de nieuwe wereld ontdekte.  Zoals geluk hebben zou, koos ze om te bouwen van de Nina over de Pinta of de
Het bouwen van een boot!

Het bouwen van een boot!

Over ongeveer een zes maandperiode bouwde ik een boot. De moeilijkste beslissing was om mijn eigen ontwerp of bouw van een reeks van plannen die al beschikbaar waren. Ik koos voor het laatste, omdat er al vele, vele plannen beschikbaar waren.De plann
Bouwen van een 3D-Printer van Polar uit Legos

Bouwen van een 3D-Printer van Polar uit Legos

heeft u ooit gedroomd van het hebben van een van deze replicators uit Star Trek? Ooit wilde maken zo ongeveer alles op de klep van een schakelaar?Nou wat denk je? Je bent in geluk, omdat in dit Instructable ik u hoe u het dichtste ding aan een replic
Bouwen van een apparaat die clips aan je riem en bijgehouden hoeveel tijd u binnen en buiten besteedt

Bouwen van een apparaat die clips aan je riem en bijgehouden hoeveel tijd u binnen en buiten besteedt

ons doel in deze stapsgewijze instructable is het bouwen van een apparaat kunt u illustraties aan uw riem en dragen gedurende de dag.  Dit apparaat zal het loggen van gegevens dat wanneer gedownload naar een back-endserver-systeem, zullen een verslag
Hoe het bouwen van een metaal-Arm

Hoe het bouwen van een metaal-Arm

I´m een fan van armors, ze uit de Middeleeuwen of andere plaats komen weer. Ik ook graag deze futuristische degenen, die behoren tot de fictieve helden uit de strips van marvel en dc comics/films. Dus bouwen waarom niet van mijn eigen land, op minst
Dus wilt je bouwen van een gigantische robot.

Dus wilt je bouwen van een gigantische robot.

u zeggen dat u wilt bouwen van een gigantische robot? Wat is uw doel? Werelddominantie? Uw vriendin niet krijgen dat bier voor u? Wat het ook is, hier is hoe om te beginnen op het zelf bouwen van een robot.Het doel van deze robot was voor een fase pr
Bouwen van een "batterij van Bagdad"

Bouwen van een "batterij van Bagdad"

de bedoeling van dit instructable is te voorzien dat ideeën experimenteren met batterij chemie in het algemeen, en om samen te vatten mijn ervaring produceren van een replica van wat wordt vaak aangeduid als de Batterij van Bagdad. In mijn versie van
Hoe te maken van een Lego "Superman" kostuum

Hoe te maken van een Lego "Superman" kostuum

voor Wizard world 2012, ik dacht dat ik was niet van plan om te hebben genoeg tijd om te bouwen van een ingewikkelde kostuum... Dus waarom niet gewoon bouwen van een lego een ~ klonk gemakkelijk genoeg... het kostte me ongeveer 5 dagen totaal. Ik zat
Bouwen van een Drinkbot: de Elixirator

Bouwen van een Drinkbot: de Elixirator

de Elixirator is een Steampunk cocktail machine mengen. Tot 10 verschillende dranken van vier ingrediënten kan worden geselecteerd en worden afgeleverd. Vier flessen zijn gebruikt om de geesten en Mengers voor de drankjes.  De inhoud van de flessen z