Arduino animatörerna-gör din awesome kostymer mer awesome! (11 / 15 steg)

Steg 11: Rovdjur kanon




Example 7- Predator cannon

Med hjälp av en modifierad Wii nunchuck ombord kan vi göra en "head tracking" system för att styra en animatronic Predator kanon. Detta system var utformad som kanon mekanismen i den första filmen Rovdjuret.

Nunchuck styrelsen tas bort från dess fall, styrspaken tas bort och styrelsen är placerad nivå i toppen av Predator Bio hjälmen. Kablar utökas för knapparna så att de kan användas som fingertoppen knappar att aktivera kanonen och utlösa den bränning sekvensen.

Ta bort kretskortet från Wii nunchuck fallet behöver du en tri-wing skruvmejsel-
http://www.Play-Asia.com/paOS-13-71-1e-49-en-70-1fe.html

Ljudeffekten hanteras precis som Iron Man repulsor i exempel 4 med Adafruit Wave sköld. Eftersom Wave sköld koden används kan stödja sex enskilda ljud du kan lägga till fem andra rovdjur ljud och aktivera dem med fingertoppen växlar-snyggt!

Det finns en servo som är inriktad på 4:1 som höjer kanon arm-i koden du kan se detta som servo rotera 180 grader, därmed höja kanon armen 45 grader. De andra två servon mål kanonen med hjälp av accelerometer ingångarna. Det finns transistorer som slår på syftar servon och lasersikte när en knapp trycks. Om syftar servon var alltid på skulle kanonen rotera även när det var i nedfällt läge, så de behöver ett sätt att vara avstängd när kanonen sänks.

Så trycker man en knapp och kanonen väcker upp, sikta servon slå på och lasersikte tänds. Skjut den andra knappen och kanon bränder-två transistorer slå på kanonen LED och aktivera bränning ljudet. Tre röda lysdioder kan användas i stället för lasersikte. Kanonen LED kan vara allt från flera små ljusdioder till en hög effekt Luxeon LED. När du använder en hög effekt måste Luxeon LED du använda en konstant aktuell drivrutin för att driva den.

Servon kan dra en hel del makt så använder jag en spets 120 transistor aktivera syftar servon.

Den prototyp kanon mekanismen byggdes med Delrin plast scraps och kuggremmar och redskap från gamla skrivare och kopieringsmaskiner hittade jag i papperskorgen. När jag bygger den slutliga versionen för Predator kostym kommer det förmodligen helt redskap driven att göra det mer kompakt och renare.

För Predator costuming info kolla in http://www.thehunterslair.com

De personer som är intresserad av att få en kåda kanon gjutning bör kontakta min vän Carl här - http://www.accurizedhunterparts.com/

Carls arbete är absolut lysande-kolla in bilderna nedan från rovdjur ryggsäck lera skulptera att han skapade för detta projekt. Det är en hel del lera! När du kontaktar Carl ha tålamod som han är mycket upptagen och han har en stor eftersläpning av arbete.

Här är koden-

/*
* Exempel 7
* Predator kanon
* Detta används en modifierad Wii nunchuck som en head tracking enhet för att styra en animatronic Predator kanon
* Adafruit Wave sköld används för ljudeffekter
* Honus 2007, uppdaterad 2010
* Wii nunchuck läsa koden ändrade och utökade från nunchuck kod av Tod E. Kurt och Windmeadow Labs
* 2007 Tod E. Kurt, http://todbot.com/blog/
* Wii Nunchuck läsa koden tas från Windmeadow Labs, http://www.windmeadow.com/node/42
*/

#include "Wire.h" / / include tråd biblioteket
#include "Servo.h" / / include servo biblioteket

Servo servo3; skapar en instans av objektet servo att styra en servo

int controlPin1 = 6; Kontroll stift för ljudeffekter styrelsen med z-knappen
int transistorPin1 = 13. Kontroll stift för LED med z-knappen
int transistorPin2 = 12; Kontroll stift för lasersikte med c-knappen
int transistorPin3 = 11; Kontroll stift för servo 1 med c-knappen
int transistorPin4 = 10; Kontroll stift för servo 2 med c-knappen
int servoPin1 = 7. Kontroll stift för servo 1 med hjälp av accelerometer x-axeln
int servoPin2 = 8; Kontroll stift för servo 2 med hjälp av accelerometer y-axeln
int servoPin3 = 9; kontroll stift för arm servo

int pulseWidth1 = 0; Belopp till puls servo 1
int pulseWidth2 = 0; Belopp till puls servo 2

int refreshTime = 20; tiden i millisecs behövs mellan servo pulser
lång lastPulse1;
lång lastPulse2;

int minPulse = 700; minsta servo bredd för synkpuls
int loop_cnt = 0;

booleska button_down = false;
osignerade långa start;

void setup()
{
Serial.BEGIN(19200);

servo3.attach(servoPin3); tillmäter objektet servo servo på pin 9

pinMode (controlPin1, produktionen); Ange kontroll stift 1
pinMode (transistorPin1, produktionen); Ange transistor stift 1
pinMode (transistorPin2, produktionen); Ange transistor stift 2
pinMode (transistorPin3, produktionen); Ange transistor stift 3
pinMode (transistorPin4, produktionen); Ange transistor stift 4
pinMode (servoPin1, produktionen); Ange servo stift 1
pinMode (servoPin2, produktionen); Ange servo stift 2

pulseWidth1 = minPulse; Ange servo position till ett minimum
pulseWidth2 = minPulse; Ange servo position till ett minimum

nunchuck_init(); Skicka initilization handslag
Serial.Print ("NunchuckServo ready\n");
}

void loop()
{
checkNunchuck1();
updateServo1(); uppdatera servo 1 position
checkNunchuck2();
updateServo2(); uppdatera servo 2 position

om (nunchuck_cbutton()) {
digitalWrite (transistorPin2, hög); slå på transistorn stift 2 om c knapp trycks
digitalWrite (transistorPin3, hög); slå på transistorn stift 3 om c knapp trycks
digitalWrite (transistorPin4, hög); slå på transistorn stift 4 om c knapp trycks

servo3.write(180);
}
annat {
digitalWrite (transistorPin2, låg);
digitalWrite (transistorPin3, låg);
digitalWrite (transistorPin4, låg);
servo3.write(0);
}

om (nunchuck_zbutton())
{
om (! button_down) / / om knappen trycktes bara göra detta
{
digitalWrite (controlPin1, hög);
button_down = sant;
Start = millis();
}
annars om (millis() - start > 1200) / / om timern har förflutit gör detta
{
digitalWrite (transistorPin1, hög);
}
}
annat / / om knappen är gör detta
{
button_down = false;
digitalWrite (controlPin1, låg);
digitalWrite (transistorPin1, låg);
}

Delay(1); Detta är här att ge en känd tid per slinga
}

void checkNunchuck1()
{
om (loop_cnt > 100) {/ / loop () s är varje 1msec, detta är varje 100msec

nunchuck_get_data();
nunchuck_print_data();

flyta tilt = nunchuck_accelx(); x-axeln, i detta fall sträcker sig från ~ 70 - ~ 185
lutning = (tilt - 70) * 1,5; konvertera till vinkeln i grader, ungefär
pulseWidth1 = (luta * 9) + minPulse; konvertera vinkel till mikrosekunder

loop_cnt = 0; återställa för
}
loop_cnt ++;

}

kallas varje loop().
använder globala variabler servoPin, pulsewidth, lastPulse och refreshTime
void updateServo1()
{
puls servo igen om rhe uppdateringstid (20 ms) har gått:
om (millis() - lastPulse1 > = refreshTime) {
digitalWrite (servoPin1, hög); Aktivera servo
delayMicroseconds(pulseWidth1); Längden på pulsen anger servo
digitalWrite (servoPin1, låg); Inaktivera servo
lastPulse1 = millis(); Spara tiden för den sista pulsen
}
}

void checkNunchuck2()
{
om (loop_cnt > 100) {/ / loop () s är varje 1msec, detta är varje 100msec

nunchuck_get_data();
nunchuck_print_data();

flyta tilt = nunchuck_accely(); y-axeln, i detta fall sträcker sig från ~ 70 - ~ 185
lutning = (tilt - 70) * 1,5; konvertera till vinkeln i grader, ungefär
pulseWidth2 = (luta * 9) + minPulse; konvertera vinkel till mikrosekunder

loop_cnt = 0; återställa för
}
loop_cnt ++;

}

kallas varje loop().
använder globala variabler servoPin, pulsewidth, lastPulse och refreshTime
void updateServo2()
{
puls servo igen om rhe uppdateringstid (20 ms) har gått:
om (millis() - lastPulse2 > = refreshTime) {
digitalWrite (servoPin2, hög); Aktivera servo
delayMicroseconds(pulseWidth2); Längden på pulsen anger servo
digitalWrite (servoPin2, låg); Inaktivera servo
lastPulse2 = millis(); Spara tiden för den sista pulsen
}
}

//
Nunchuck funktioner
//

statisk uint8_t nunchuck_buf [6]. matrisen att lagra nunchuck data,

initiera I2C systemet, gå med I2C bussen,
och berätta nunchuck vi pratar till den
void nunchuck_init()
{
Wire.BEGIN(); gå med i2c bussen som master
Wire.beginTransmission(0x52); överföra till enhet 0x52
Wire.send(0x40); skickar minnesadress
Wire.send(0x00); skickar skickade en nolla.
Wire.endTransmission(); stoppa överföring
}

Skicka en begäran om data till nunchuck
var "send_zero()"
void nunchuck_send_request()
{
Wire.beginTransmission(0x52); överföra till enhet 0x52
Wire.send(0x00); skickar en byte
Wire.endTransmission(); stoppa överföring
}

Få data tillbaka från nunchuck,
Returnerar 1 om framgångsrika read. returnerar 0 om fel
int nunchuck_get_data()
{
int cnt = 0;
Wire.requestFrom (0x52, 6); begäran data från nunchuck
medan (Wire.available ()) {
ta emot byte som ett heltal
nunchuck_buf [cnt] = nunchuk_decode_byte(Wire.receive());
CNT ++;
}
nunchuck_send_request(); skicka begäran om nästa datanyttolasten
Om vi fått 6 byte, gå sedan skriva ut dem
om (cnt > = 5) {
tillbaka 1. framgång
}
Return 0; misslyckande
}

Skriva ut indata har vi fått
accel data är 10 bitar lång
så vi läsa 8 bitar, då måste vi lägga till
på de sista 2 bitarna. Det är därför jag
multiplicera dem med 2 * 2
void nunchuck_print_data()
{
statisk int jag = 0;
int joy_x_axis = nunchuck_buf [0];
int joy_y_axis = nunchuck_buf [1].
int accel_x_axis = nunchuck_buf [2]. // * 2 * 2;
int accel_y_axis = nunchuck_buf [3]. // * 2 * 2;
int accel_z_axis = nunchuck_buf [4]. // * 2 * 2;

int z_button = 0;
int c_button = 0;

byte nunchuck_buf [5] innehåller bitar för z- och c-knapparna
den innehåller också de minst signifikanta bitarna för accelerometer data
så vi måste kontrollera varje bit av byte outbuf [5]
om ((nunchuck_buf [5] >> 0) & 1)
z_button = 1;
om ((nunchuck_buf [5] >> 1) & 1)
c_button = 1;

om ((nunchuck_buf [5] >> 2) & 1)
accel_x_axis += 2.
om ((nunchuck_buf [5] >> 3) & 1)
accel_x_axis + = 1;

om ((nunchuck_buf [5] >> 4) & 1)
accel_y_axis += 2.
om ((nunchuck_buf [5] >> 5) & 1)
accel_y_axis + = 1;

om ((nunchuck_buf [5] >> 6) & 1)
accel_z_axis += 2.
om ((nunchuck_buf [5] >> 7) & 1)
accel_z_axis + = 1;

Serial.Print(i,dec);
Serial.Print("\t");

Serial.Print("Joy:");
Serial.Print(joy_x_axis,dec);
Serial.Print(",");
Serial.Print (joy_y_axis, DEC);
Serial.Print ("\t");

Serial.Print("ACC:");
Serial.Print (accel_x_axis, DEC);
Serial.Print(",");
Serial.Print (accel_y_axis, DEC);
Serial.Print(",");
Serial.Print (accel_z_axis, DEC);
Serial.Print("\t");

Serial.Print("but:");
Serial.Print (z_button, DEC);
Serial.Print(",");
Serial.Print (c_button, DEC);

Serial.Print("\r\n"); newline
i ++;
}

Koda data om du vill formatera som de flesta wiimote förare utom
behövs endast om du använder en av de regelbundna wiimote förarna
char nunchuk_decode_byte (char x)
{
x = (x ^ 0x17) + 0x17;
återvändande x;
}

Returnerar zbutton stat: 1 = pressad, 0 = notpressed
int nunchuck_zbutton()
{
tillbaka ((nunchuck_buf [5] >> 0) & 1)? 0: 1; Voodoo
}

Returnerar zbutton stat: 1 = pressad, 0 = notpressed
int nunchuck_cbutton()
{
tillbaka ((nunchuck_buf [5] >> 1) & 1)? 0: 1; Voodoo
}

Returnerar värdet på x-axeln joystick
int nunchuck_joyx()
{
återgå nunchuck_buf [0];
}

Returnerar värdet på y-axeln joystick
int nunchuck_joyy()
{
återgå nunchuck_buf [1].
}

Returnerar värdet för x-axeln accelerometer
int nunchuck_accelx()
{
återgå nunchuck_buf [2]. FIXME: detta lämnar ut 2-bitar av data
}

Returnerar värdet för y-axeln accelerometer
int nunchuck_accely()
{
återgå nunchuck_buf [3]. FIXME: detta lämnar ut 2-bitar av data
}

Returnerar värdet på z-axeln accelerometer
int nunchuck_accelz()
{
återgå nunchuck_buf [4]. FIXME: detta lämnar ut 2-bitar av data
}

Se Steg
Relaterade Ämnen

Skapa enkla animatörerna-del ett: hjälp av MAKE controller

här är hur man bygger enkla animatörerna med billig hobby servon och göra controller kit. Jag ville hålla det så enkelt som möjligt så det finns ingen programmering krävs och elektroniken hålls till ett minimum så att alla ska kunna göra detta med et...

Animatörerna

mitt kontor gör en jul float, och i år bestämde jag mig för jag ville göra animatörerna. Jag var chockad över hur lite du kan hitta på nätet om hur man gör animatörerna. Var får motorerna, hur man kan kontrollera sina rörelser, hur man skapar dem......

Halloween animatörerna

bygga en talande Animatronic skalle och pumpaEfter att ha sett Animatörerna Workshop ställer ut på Wired NextFest, var vår familj inspirerad att försöka göra en animatronic display för Halloween.För din njutning--The Gashlycrumb Tinies, av Edward Gor...

Enkla animatörerna (robotic hand)

jag gjorde min första animatronic hand när jag var ca 10 år gammal med grejer jag hittade runt huset. Nu vill jag dela med dig hur du enkelt göra din egen hemma!Denna hand är tillverkad av lättillgängliga material och är perfekt för din Halloween spö...

Ögonglober för specialeffekter, Halloween eller animatörerna riktigt billigt.

jag har alltid varit riktigt in specialeffekter. Mitt drömjobb skulle vara en specialeffekter ingenjör. En av de artiklar som jag alltid velat göra var super realistisk ögonglober du ser i skräckfilmer. En motivation för detta är att jag vill få in a...

Statler och Waldorf animatörerna

Statler och Waldorf. De två gamla killarna på balkongen från The Muppet Show. Jag gick till Disney World ett år och såg Muppet * Vision 3D och de hade animatörerna av dem. Enligt en artikel på nätet, hud (eller tyg) slutar halvvägs börjar där du inte...

Animatron-6: Kontrollprogrammet för animatörerna

Animatron-6 var programvaran jag utvecklat för att styra min animatronic, presenteras här i 2011 http://goo.gl/1Cndha . Det är en kompilerad grundläggande program, som tolkar en egna språk jag designade, kallas A-kod, för animatronic kod. http://goo....

Animatörerna: Lion Dance

gick igenom mina filer idag och hittade den här videon av en Lion Dance animatörerna Robot vi gjorde år tillbaka.Detta är när vi testade fortfarande typ av rörelser och kombinationer skulle vi kunna ha innan vi kodade den dansa längs till typiska kin...

Jack Daniels oberoende Project - animatörerna

Hej! Mitt namn är Ryan Powers (DOB: 6-7-1976) och detta är min post i Jack Daniels oberoende projekt.Jag är del av ett team att skapa en mycket interaktiv äventyr i minigolf. Som en del av detta äventyr vill vi införliva animatörerna i till erfarenhe...

Hur du ger din Nerf Maverick mer makt

Steg 1: demontering Hej alla. Detta är min första instructable och hoppas ni gillar den. Detta är hur du ger din nerf maverick mer makt istället för att få en våren ersättning. Men ta först isär din maverick.Steg 2: Ta bort skruvarna från grundning h...

Enkla animatörerna med servon och Arduino

servon är förvånansvärt enkel att använda. Ännu mer så än enkel DC-motorer och steppers när du har en mikrokontroller. I detta instructable vi använder en "duino att köra fem servon som kommer att kontrollera en docka armar och nacke.Jag köpte servon...

1950 diner servitris kostym

Jag fick denna idé från en kostym jag såg online av en kvinna som marscherade i 2011 i West Village parad i New York. Jag ville göra det 1950-talet diner servitris eftersom jag gillar utseendet på 1950-talet. Rutan som fungerar som räknaren diner är...

Exponerade hjärnan för din Zombie kostym

göra det mesta av din Skrillex frisyr detta Halloween säsongen genom att ge dig själv ett äckligt sår på sidan av huvudet!Andra bilden av den mycket duktiga Ming WuSteg 1: Vad som behövs för hjärnan Idén till detta projekt sprungen ur det faktum att...

Programmera en Arduino på språng med din Android-telefon eller surfplatta

genom åren Android har blivit en formidabel mobil plattform som erbjuder en hel del funktioner som tidigare endast finns på datorer. Idag vill jag ge dig ett sätt att skriva, kompilera och ladda upp Arduino program på språng med en Android-enhet.Steg...

Arduino vattensystem till våt din anläggning

Bevattningssystem, för vätning en växt från remote med ArduinoI detta projekt ser vi hur man skapar ett system som kan suga sin egen anläggning / planter även distans, med hjälp av lite "av elektronisk utrustning.Steg 1: Vad behöver vi? Detta projekt...

Älskling, jag krympte Arduino: flytta från Arduino till ATtiny och skriva din kod i ren AVR-C

Arduino är en stor hård- och mjukvaruplattform, men med alla dess funktioner är det också lite uppsvälld och ofta behöver du bara en liten del av alla funktioner. Projektet kräver ibland för att ha mindre och billigare enheter. Vad du behöver är ATti...

Hur man gör din awesome webbplats ännu mer AWESOME genom att göra det tillgängligt

del 0: InledningNär det är möjligt, försöka utforma en webbplats för att kunna användas av så många människor som möjligt. Det kan innefatta personer som inte kan se, höra eller flytta musen väl eller ens alls. Här är några tips och tips för tillgäng...

Arduino powered mini trafiksignal - övervaka din verkstad!

jag byggde en pryl för att köra en trafiksignal i kontoret för en snabb status för att se hur vi gör i vårt biljettsystem.Kräver:-RepairShopr.com konto (gratis)-Teleduino konto (gratis)-Arduino + ethernet shield-Skärbräda, sladdar, etc-3 + port relay...

Arduino Universal Bluetooth Anslut - kontroll din Arduino med din Android-enhet

Jag ville alltid enkelt styra min Arduino med min Smartphone, men jag hittat aldrig den perfekta lösningen för att göra. Jag vill inte säga att detta är perfekt, men det gör vad jag vill att det ska do...well inte helt men jag är nära... Jag tror.I d...