Animatronic Iron Man Mk III kostym (11 / 17 steg)

Steg 11: Elektronik-vänster sida Schematisk och kod



Här är schematiskt för vänster sida.

Det finns några anteckningar i diagrammet men det är ganska enkelt. När delar köptes för kostym var ID12 tag läsaren endast tillgänglig i en 5V version, som drivs av Arduino. Eftersom servon är drivs av en 6V batteri det var lättast att bara använda ett 9V batteri för Arduinos och 6V Pack för servon eftersom du behöver isolera strömförsörjningen för Arduino på grund av den elektriska störningar som genereras av servon.

Nu när ID12 finns i en låg spänning version det vore enklare att driva allt från en 6V batteriet och använda en 3.3V Arduino Pro Mini och använda en 3,3 v DC/DC omvandlare till isolerad strömförsörjning Arduino. Wave sköld fungerar emellertid endast på 5V.

I koden ser du att alla fyra finger RFID-taggar finns men bara två tagg-ID: N redovisas i koden. Jag hittade bara att det är lättare att lista alla Taggar jag använde för kostym bygga och sedan peka ut enskilda taggen ID: N för specifika funktioner. Observera att naturligtvis måste du ange din egen tagg ID-koder. För mer information om RFID-tagg har läsare och identifierande etiketten ID-koder en titt på denna stora Bildr artikel.

Observera att du måste ändra namnet på ljudfilen hip pod utflytning till "SOUND1. WAV"för Wave Shield att spela den. Du måste också vända rotationsriktningen servo för tre av hip pod servon eftersom de grupperas parvis som får en identisk signal.

Här är koden-

#include
#include "Servo.h" / / include servo biblioteket

Servo podServo; servo flytta hip pods
Servo leverServo; servo flytta hip pod spakar
Servo rotateServo; servo att rotera höften pods
Servo leftflapServo; servo flytta vänster bakre lock
Servo rightflapServo; servo att flytta tillbaka luckan

NewSoftSerial mySerial = NewSoftSerial (2, 3);

int RFIDResetPin = 13.
int ledPin1 = 6; kontroll pin för vänster höft pod lysdioder
int ledPin2 = 5; kontroll stift för höger höft pod lysdioder
int servoPin1 = 10; kontroll stift för lämnad viftar servo
int servoPin2 = 11; kontroll stift för rätt lock servo
int servoPin3 = 9; kontroll stift för pod servo
int servoPin4 = 8; kontroll stift för spaken servo
int servoPin5 = 7. kontroll stift för rotera servo
int soundPin = 12; kontroll pin för utflytning ljud

Registrera din RFID-taggar här
char tag1 [13] = "440085E77452"; du kommer att behöva ändra detta för din egen tagg
char tag2 [13] = "440085FC330E";
char tag3 [13] = "440085F97840";
char tag4 [13] = "4400863914EF";

void setup() {
Serial.BEGIN(9600);
mySerial.begin(9600);

podServo.attach(servoPin3); tillmäter objektet servo servo på pin 9
leverServo.attach(servoPin4); tillmäter objektet servo servo på stift 8
rotateServo.attach(servoPin5); tillmäter objektet servo servo på stift 7
leftflapServo.attach(servoPin1); attches servo på stift 10 till objektet servo
rightflapServo.attach(servoPin2); tillmäter objektet servo servo på stift 11
podServo.write(155); rotera pod servo till 135 grader
leverServo.write(145); Vrid spaken servo till 135 grader
rotateServo.write(165); rotera pod rotation servo till 170 grader
leftflapServo.write(170); Rotera vänster lock servo till 170 grader
rightflapServo.write(10); rotera rätt lock servo till 10 grader
pinMode (ledPin1, produktionen); Anger den LED stiftet som en utgång
pinMode (ledPin2, produktionen); Anger den LED stiftet som en utgång
digitalWrite (ledPin1, låg); stänga av lysdioder
digitalWrite (ledPin2, låg); stänga av lysdioder
pinMode (soundPin, produktionen); ställer in ljud PIN-koden som utgång
digitalWrite (soundPin, låg); stänga av ljud pin

pinMode (RFIDResetPin, OUTPUT);
digitalWrite (RFIDResetPin, hög);

}

void loop() {

char tagString [13].
heltal index = 0;
booleska läsning = false;

While(Serial.available()) {

int readByte = Serial.read(); läsa nästa tillgängliga byte

IF(readByte == 2) läsning = sant; början av tag
IF(readByte == 3) läsning = false; slutet av taggen

om (reading & & readByte! = 2 & & readByte! = 10 & & readByte! = 13) {
lagra etiketten
tagString [index] = readByte;
index ++;
}
}

checkTag(tagString); Kontrollera om det är en match
clearTag(tagString); Rensa röding av alla värde
resetReader(); återställa RFID-läsare
}

void checkTag (char tag[]) {
///////////////////////////////////
Kolla Läs etiketten mot kända märken
///////////////////////////////////

IF(strlen(tag) == 0) återvända; tomma, ingen anledning att fortsätta

om (compareTag (tag, tag1)) {/ / om matchade tag1, göra detta
mySerial.print('A'); skickar tag läste över XBee

} else om (compareTag (tag, tag2)) {/ / om matchade tag2, göra detta
podServo.write(90); rotera pod servo till 90 grader
Delay(500); vänta en halv sekund
leverServo.write(95); Vrid spaken servo till 90 grader
Delay(1000);
rotateServo.write(5); rotera pod rotation servo till 10 grader
Delay(1500);
leverServo.write(145);
Delay(500);
digitalWrite (soundPin, hög); Aktivera ljud på
Delay(10); vänta tio millisekunder
digitalWrite (soundPin, låg); Aktivera ljud av
digitalWrite (ledPin1, hög); slå på lysdioder
digitalWrite (ledPin2, hög); slå på lysdioder
Delay(50); vänta 50 millisekunder
digitalWrite (ledPin1, låg); stänga av lysdioder
digitalWrite (ledPin2, låg); stänga av lysdioder
Delay(50);
digitalWrite (ledPin1, hög); slå på lysdioder
digitalWrite (ledPin2, hög); slå på lysdioder
Delay(50);
digitalWrite (ledPin1, låg); stänga av lysdioder
digitalWrite (ledPin2, låg); stänga av lysdioder
Delay(50);
digitalWrite (ledPin1, hög); slå på lysdioder
digitalWrite (ledPin2, hög); slå på lysdioder
Delay(50);
digitalWrite (ledPin1, låg); stänga av lysdioder
digitalWrite (ledPin2, låg); stänga av lysdioder
Delay(50);
digitalWrite (ledPin1, hög); slå på lysdioder
digitalWrite (ledPin2, hög); slå på lysdioder
Delay(50);
digitalWrite (ledPin1, låg); stänga av lysdioder
digitalWrite (ledPin2, låg); stänga av lysdioder
Delay(50);
digitalWrite (ledPin1, hög); stänga av lysdioder
digitalWrite (ledPin2, hög); stänga av lysdioder
Delay(50);
digitalWrite (ledPin1, låg); stänga av lysdioder
digitalWrite (ledPin2, låg); stänga av lysdioder
Delay(50);
digitalWrite (ledPin1, hög); slå på lysdioder
digitalWrite (ledPin2, hög); slå på lysdioder
Delay(50);
digitalWrite (ledPin1, låg); stänga av lysdioder
digitalWrite (ledPin2, låg); stänga av lysdioder
Delay(50);
digitalWrite (ledPin1, hög); slå på lysdioder
digitalWrite (ledPin2, hög); slå på lysdioder
Delay(50);
digitalWrite (ledPin1, låg); stänga av lysdioder
digitalWrite (ledPin2, låg); stänga av lysdioder
Delay(50);
digitalWrite (ledPin1, hög); slå på lysdioder
digitalWrite (ledPin2, hög); slå på lysdioder
Delay(50);
digitalWrite (ledPin1, hög); stänga av lysdioder
digitalWrite (ledPin2, hög); stänga av lysdioder
Delay(50);
digitalWrite (ledPin1, låg); stänga av lysdioder
digitalWrite (ledPin2, låg); stänga av lysdioder
Delay(50);
digitalWrite (ledPin1, hög); slå på lysdioder
digitalWrite (ledPin2, hög); slå på lysdioder
Delay(50);
digitalWrite (ledPin1, låg); stänga av lysdioder
digitalWrite (ledPin2, låg); stänga av lysdioder
Delay(50);
digitalWrite (ledPin1, hög); slå på lysdioder
digitalWrite (ledPin2, hög); slå på lysdioder
Delay(50);
digitalWrite (ledPin1, låg); stänga av lysdioder
digitalWrite (ledPin2, låg); stänga av lysdioder
Delay(50);
digitalWrite (ledPin1, hög); slå på lysdioder
digitalWrite (ledPin2, hög); slå på lysdioder
Delay(50);
digitalWrite (ledPin1, låg); stänga av lysdioder
digitalWrite (ledPin2, låg);
digitalWrite (ledPin1, hög); slå på lysdioder
digitalWrite (ledPin2, hög); slå på lysdioder
Delay(50);
digitalWrite (ledPin1, låg); stänga av lysdioder
digitalWrite (ledPin2, låg); stänga av lysdioder
Delay(50);
digitalWrite (ledPin1, hög); slå på lysdioder
digitalWrite (ledPin2, hög); slå på lysdioder
Delay(50);
digitalWrite (ledPin1, hög); stänga av lysdioder
digitalWrite (ledPin2, hög); stänga av lysdioder
Delay(50);
digitalWrite (ledPin1, låg); stänga av lysdioder
digitalWrite (ledPin2, låg); stänga av lysdioder
Delay(50);
digitalWrite (ledPin1, hög); slå på lysdioder
digitalWrite (ledPin2, hög); slå på lysdioder
Delay(50);
digitalWrite (ledPin1, låg); stänga av lysdioder
digitalWrite (ledPin2, låg); stänga av lysdioder
Delay(50);
digitalWrite (ledPin1, hög); slå på lysdioder
digitalWrite (ledPin2, hög); slå på lysdioder
Delay(50);
digitalWrite (ledPin1, låg); stänga av lysdioder
digitalWrite (ledPin2, låg); stänga av lysdioder
Delay(50);
digitalWrite (ledPin1, hög); slå på lysdioder
digitalWrite (ledPin2, hög); slå på lysdioder
Delay(50);
digitalWrite (ledPin1, låg); stänga av lysdioder
digitalWrite (ledPin2, låg);
digitalWrite (ledPin1, hög); slå på lysdioder
digitalWrite (ledPin2, hög); slå på lysdioder
Delay(50);
digitalWrite (ledPin1, hög); stänga av lysdioder
digitalWrite (ledPin2, hög); stänga av lysdioder
Delay(50);
digitalWrite (ledPin1, låg); stänga av lysdioder
digitalWrite (ledPin2, låg); stänga av lysdioder
Delay(50);
digitalWrite (ledPin1, hög); slå på lysdioder
digitalWrite (ledPin2, hög); slå på lysdioder
Delay(50);
digitalWrite (ledPin1, låg); stänga av lysdioder
digitalWrite (ledPin2, låg); stänga av lysdioder
Delay(50);
digitalWrite (ledPin1, hög); slå på lysdioder
digitalWrite (ledPin2, hög); slå på lysdioder
Delay(50);
digitalWrite (ledPin1, låg); stänga av lysdioder
digitalWrite (ledPin2, låg); stänga av lysdioder
leverServo.write(95); Vrid spaken servo till 90 grader
Delay(1500);
rotateServo.write(165); rotera pod servo till 135 grader
Delay(1000);
leverServo.write(145);
Delay(500);
podServo.write(155); rotera pod servo till 135 grader
Delay(2000);
leftflapServo.write(125); Rotera vänster lock servo till 125 grader-full upp
rightflapServo.write(55); rotera rätt lock servo till 55 grader-full upp
Delay(500);
leftflapServo.write(170); Rotera vänster lock servo till 170 grader - full ner
rightflapServo.write(10); rotera rätt lock servo till 10 grader - full ner
Delay(500);
leftflapServo.write(125); lämnad viftar full upp
Delay(500);
leftflapServo.write(170); vänster klaff full ner
Delay(500);
rightflapServo.write(55); viftar med rätt fullt upp
Delay(500);
rightflapServo.write(10); rätt lock full ner

} annat {
Serial.println(tag); läste ut en okänd tagg
}

}

void lightLED (int pin) {
///////////////////////////////////
Slå på lampan på pin "pin" för 250ms
///////////////////////////////////
Serial.println(PIN);

digitalWrite (pin, hög);
Delay(250);
digitalWrite (pin, låg);
}

void resetReader() {
///////////////////////////////////
Återställa RFID-läsare att läsa igen.
///////////////////////////////////
digitalWrite (RFIDResetPin, låg);
digitalWrite (RFIDResetPin, hög);
Delay(150);
}

void clearTag (char one[]) {
///////////////////////////////////
Rensa char matrisen genom att fylla med null - ASCII 0
Kommer att tänka samma tagg har lästs annars
///////////////////////////////////
för (int jag = 0; jag < strlen(one); i ++) {
en [i] = 0;
}
}

booleska compareTag (char [en], char two[]) {
///////////////////////////////////
Jämför två värde att se om samma,
Strcmp inte fungerar 100% så det gör vi
///////////////////////////////////

IF(strlen(One) == 0) return false; Tom

för (int jag = 0; jag < 12, i ++) {
om (en [i]! = two[i]) return false;
}

return true; inga avvikelser
}

Här är koden för WaveShield, med tillstånd av Adafruit-

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

SdReader kort; Detta objekt innehåller information för kortet
FatVolume vol; Detta innehåller information för partitionen på kortet
FatReader rot. Detta innehåller information för filsystemet på kortet
FatReader f; Detta innehåller information för filen vi är spelar

WaveHC våg; Detta är enda våg (audio)-objektet, eftersom vi bara kommer att spela en i taget

#define DÄMPNINGSTID 100 / / knappen debouncer

Denna behändiga funktionen returnerar antalet byte för närvarande gratis i RAM, bra för felsökning!
int freeRam(void)
{
extern int __bss_end;
extern int * __brkval;
int free_memory;
om ((int) __brkval == 0) {
free_memory = ((int) & free_memory)-((int) & __bss_end);
}
annat {
free_memory = ((int) & free_memory)-((int) __brkval);
}
återvända free_memory;
}

void sdErrorCheck(void)
{
om (! card.errorCode()) återvända;
putstring ("\n\rSD I/O fel:");
Serial.Print(Card.ErrorCode(), HEX);
putstring (",");
Serial.println(Card.errorData(), HEX);
While(1);
}

void setup() {
Ställ in serieporten
Serial.BEGIN(9600);
putstring_nl ("WaveHC med 6 knappar");

putstring ("fri slå ned:"); Detta kan hjälpa till med felsökning, slut RAM är dålig
Serial.println(freeRam()); om detta är under 150 byte kan det stava problem!

Ställa in produktionen stift för DAC kontroll. Detta stift definieras i biblioteket
pinMode (2, utgång);
pinMode (3, OUTPUT);
pinMode (4, OUTPUT);
pinMode (5, OUTPUT);

pin13 LED
pinMode (13, OUTPUT);

Aktivera pull-up motstånd på switch stift (analoga ingångar)
digitalWrite (14, hög).
digitalWrite (15, hög).
digitalWrite (16, hög).
digitalWrite (17, hög),
digitalWrite (18, hög).
digitalWrite (19, hög).

om (! card.init(true)) {//play med 4 MHz spi om 8MHz inte fungerar för dig
om (! card.init()) {//play med 8 MHz spi (standard snabbare!)
putstring_nl ("kort init. misslyckades!"); Något gick fel, kan skriva ut varför
sdErrorCheck();
While(1); sedan 'stoppa' - gör ingenting!
}

Aktivera optimera Läs - vissa kort kan timeout. Inaktivera om du har problem
card.partialBlockRead(true);

Nu söker vi en FAT-partition!
uint8_t del;
för (del = 0; del < 5; del ++) {/ / vi har upp till 5 platser att titta i
om (vol.init (kort, del))
bryta; Vi hittade en, låter borgen
}
om (del == 5) {/ / om vi slutade inte att hitta en :(
putstring_nl ("ingen giltig FAT-partition!");
sdErrorCheck(); Något gick fel, kan skriva ut varför
While(1); sedan 'stoppa' - gör ingenting!
}

Kan tala om för användaren om vad vi hittade
putstring ("använda partition");
Serial.Print (del, DEC);
putstring (", typ är FAT");
Serial.println(Vol.fatType(),dec); FAT16 eller FAT32?

Försök öppna rotkatalogen
om (! root.openRoot(vol)) {
putstring_nl kan inte ("öppna rotfästa dir!"); Något gick fel,
While(1); sedan 'stoppa' - gör ingenting!
}

Usch! Vi fick tidigare de hårda delarna.
putstring_nl("ready!");
}

void loop() {
putstring("."); avkommentera här för att se om slingan inte är kör
Switch (check_switches()) {
fall 1:
playcomplete ("SOUND1. WAV");
bryta;
fall 2:
playcomplete ("SOUND2. WAV");
bryta;
fall 3:
playcomplete ("SOUND3. WAV");
bryta;
fall 4:
playcomplete ("SOUND4. WAV");
bryta;
fall 5:
playcomplete ("SOUND5. WAV");
bryta;
fall 6:
playcomplete ("SOUND6. WAV");
}
}

byte check_switches()
{
statiska byte tidigare [6].
statiska lång tid [6].
byte läsning;
byte pressade,
byte index.
tryckte = 0;

för (byte index = 0; index < 6. ++ index) {
läsning = digitalRead (14 + indexet);
om (läser == låg & & föregående [index] == hög & & millis() - tid [index] > DÄMPNINGSTID)
{
Switch tryckte
tid [index] = millis();
tryckte = index + 1.
bryta;
}
föregående [index] = behandlingen.
}
returnera switch nummer (1-6)
avkastning (pressad);
}

Spelar en full fil från början till slut med ingen paus.
void playcomplete(char *name) {
Ring vår hjälpare för att hitta och spela detta namn
playfile(Name);
samtidigt (wave.isplaying) {
göra ingenting samtidigt dess spelar
}
dess gjort spelar nu
}

void playfile(char *name) {
se om objektet våg för närvarande gör något
om (wave.isplaying) {/ / redan spelar något, så sluta det!
Wave.stop(); Sluta
}
titta i rotkatalogen och öppna filen
om (! f.open (rot, namn)) {
putstring kunde inte ("öppna filen"); Serial.Print(Name); hemkomst.
}
OK läsa filen och förvandla det till en våg objekt
om (! wave.create(f)) {
putstring_nl ("inte en giltig WAV"); hemkomst.
}

OK dags att spela! starta uppspelningen
Wave.Play();
}

Se Steg
Relaterade Ämnen

Billiga Iron Man (Mark 3) kostym med arbetande frontplåten, belysning, elektronik

visas här är mitt halloween 2012 projekt. Efter mixtra med Arduino för ett par månader och behöver en kostym för Halloween, bestämde jag mig att blanda två. Jag ville bara göra någon Iron Man kostym dock. Jag ville ha denna färg, för att vara så tekn...

IRON MAN 3 MK42 kostym

Hej alla!Tja är jag tillbaka med mitt senaste projekt... min alla helt nya kostym från IRON MAN 3Jag kommer att lägga alla steg instructables för denna kostym snart!Här en sneak peek, hoppas ni gillar det!Sekkei.Facebook.com/sekkei.props...

Iron Man Mark VI kostym

detta var min Halloween kostym från förra året (2011). Jag arbetade på det från juni 2010 till oktober 2011. Jag bär det igen för Halloween i år (2012) eftersom jag tillbringade en stor del av tiden på det, jag tänkte att jag skulle få några löpande...

Min Iron Man klassisk halloween kostym

min Halloween kostym för denna year(2008). Det är den klassiska Iron Man kostym. Du kan se bättre bilder på hjälmen på webbsidan. Plaz gärna använda mina bilder som referenser....

IRON MAN kostym

ett år sedan bestämde jag mig för att jag ville göra den ultimata Halloween-kostym, så jag beslöt att göra en IRON MAN kostym. Jag hade ingen aning hur inblandade fabricera dräkten skulle vara. Det var en utmaning, men en hel del kul. Om du funderar...

Iron Man Casemod

Detta är ett jobb jag har gjort några år, 2012.Det är en dator + animatronic Iron Man.Kortfattat förklara det:Början i fas1, Pepakura2. fas, planering robotics3. fasen, församlingen.Steg 1: Pepakura Sök mycket på de delar som utgör persoangem och sed...

Hand made Iron Man kostym

jag ville ha en Iron man kostym för en födelsedagsfest men problemet var kostnaden! Om jag ville köpa en på ebay eller någon annanstans var det ganska dyrt.Jag köpte bara masken för 10€.Sedan köpte jag en unibody lycra röd kostym och vissa tyg färger...

Hur man gör en riktig iron man kostym replika

Så du gillar iron man, och du vill att dräkten, men om du ser online för en riktig replik hittar du att det genomsnittliga priset är $2000 en bit som är dyr för de flesta och inte många är villiga att spendera så mycket på en kostym. Dessutom något b...

Enkelt och billigt lägga till repulsor ljus till childs iron man kostym

Vi köpte denna iron man kostym för våra 6 år gammal son, som kom med en mycket trevlig "muskel" bundna kropp kostym, en heltäckande ansiktsskydd hjälm med en inandningsmotstånd som öppnar och stänger som filmer och ett par handskar. Bodysuit har...

Mark 1 Iron man kostym!

Detta är min Mark 1 Iron man kostym. Dess helt skönheten är inte det? DFörra året för Halloween utklädd jag till Tony Stark, med bågreaktorn fastspänd runt mitt bröst. Det var en sista minuten beslut som jag ville bygga något "techie". Bågreakto...

Iron Man M1 kostym med en $3,08

som du kvalster har gissat detta inte ger dig film korrekta resultat, men det är något roligt för små barn att göra med hjälp av en vuxen, eller kul för vuxna att röra runt i. hoppas du gillar det!Steg 1: material heres what you'll need:Svetsning mas...

Hur man gör en Iron Man bågreaktorn

Feb 2012Länge i vardande, men jag äntligen nöjet att meddela att denna båge har ersatts av en nyare design som jag kallar MkII. MkII funktioner lasern skär delar från en metallic färgad akryl och undvika kopiösa timmar av böjning och skära små bitar...

Iron Man bågreaktorn

detta är en min enkel båge reaktorn, eftersom jag bara börjar använda denna apps, så jag lägga upp detta... och jag fick en iron man kostym, jag kommer att publicera det upp nästa gång :)Steg 1: Första steget. Ditt material, behöver du 9 volts batter...

Iron Man Cosplay stövlar

Om du är en Iron Man fan och skulle älska att cosplay i replika kostym men inte nödvändigtvis har pengar och tid att göra en fullvärdig Iron Man kostym är detta det perfekta projektet för dig. På ett personligt plan beundrar jag djupt den komiska ser...

Iron Man hjälm... billigt sätt.

Hej, alla. Jag har fått ännu en enkel, mycket roligt men tidskrävande instructable här. Det är Iron Man hjälm från pepakura filer. Även om det liknar vad andra har gjort, är den här gjort helt med tjockt papper, tejp, spray lim och färg. Denna hjälm...

Iron Man Tony Stark och rustningar

Detta Instructable fortsätter på en av mina tidigare Instructable från 2015. kallade Tony Stark båge/RepolserHär är en bra fråga, vad är Tony utan hans rustning. Jo är han en geni miljardär heter Tony Stark. Häxa är inte riktigt lika imponerande. Så...

Iron Man War Machine hjälm

under en lång tid jag har varit nyfiken på att hoppa in i världen av kostym byggnad, och här juluppehåll det gjorde det perfekta projektet. Jag dök huvudet först in i det roliga och kluriga värld av Pepakura.Pepakura är ett program som tar 3D-modelle...

Iron man 3 - järn PATRIOT hjälm

efter att få ironman hjälmen för min kostym och med min vän göra en latex rösterna. Jag bestämde mig att försöka göra en war machine hjälm. Jag gjorde prep och primas det sedan insåg jag hade ingen svart spray i mitt lager. Jag gjorde silver och seda...

Göra An Iron Man Full Metal BRYNJA + armar

vill visa upp att din vän din bygga upp kompetens och originalitet? Detta instructable kan vara bra för dig! Jag kommer att visa dig hur man gör en full metall BRYNJA och vapen som får dig att stå ut från mängden, bokstavligen! Du kan göra järn manne...