Arduino animatronics-Maak uw geweldige kostuums meer awesome! (11 / 15 stap)

Stap 11: Predator kanon


Example 7- Predator cannon

Gebruik van een gemodificeerde Wii nunchuck bord kunnen we een "hoofd" volgsysteem waarmee een animatronic Predator kanon. Dit systeem werd ontworpen om het mechanisme van het kanon in de eerste Predator film eruit.

De plank van de nunchuck is weggenomen uit de zaak, de joystick wordt verwijderd en de Raad van bestuur niveau wordt geplaatst in de top van de Bio van de Predator-helm. De draden worden verlengd voor de knoppen, zodat ze kunnen worden gebruikt als vingertop knoppen om te activeren het kanon en de volgorde van de bakken trigger.

Als u wilt verwijderen van de printplaat van de Wii nunchuck geval moet u een tri-wing schroevendraaier-
http://www.Play-Asia.com/paOS-13-71-1e-49-en-70-1fe.html

Het geluidseffect verloopt net als de Iron Man repulsor in voorbeeld 4 met behulp van de Adafruit Wave Shield. Aangezien de Wave Shield code gebruikt kan ondersteunen zes afzonderlijke geluiden die u kunt toevoegen van vijf andere geluiden van de Predator en activeren ze met behulp van de vingertop schakelaars-neat!

Er is een servo die erop is afgestemd op 4:1, dat het kanon arm verhoogt-in de code kunt u zien dit als de servo 180 graden, draaien waardoor het verhogen van de arm kanon 45 graden. De andere twee servo's beogen het kanon met behulp van de ingangen van de versnellingsmeter. Er zijn transistors die de gericht servo's inschakelen en laser zicht wanneer een knop wordt ingedrukt. Als de gericht servo's waren altijd op zou vervolgens het kanon draaien zelfs toen het in de verlaagde positie, zodat te hoeven zij een manier wordt uitgeschakeld wanneer het kanon is verlaagd.

Dus een één knoop en het kanon roept omhoog te duwen, de gericht servo's inschakelen en de laser zicht wordt ingeschakeld. Druk op de tweede knop en het kanon branden-twee transistors het kanon LED inschakelen en activeren van het geluid van de vuren. Drie rode LEDs kunnen worden gebruikt in plaats van de laser zicht. Het kanon LED kunnen om het even wat uit diverse kleine LEDs aan een krachtige Luxeon LED. Wanneer u een high power moet Luxeon LED zeker een constante huidige stuurprogramma gebruiken om het vermogen.

Servo's kunnen tekenen een eerlijke bit van de macht, zodat ik een TIP 120 transistor gebruiken om te schakelen de gericht servo's.

Het prototype kanon mechanisme is gebouwd met behulp van Delrin kunststof kladjes en tandriemen en versnellingen van oude desktop printers en fotokopieerapparaten vond ik in de Prullenbak. Wanneer ik de definitieve versie voor de Predator kostuum bouwen zal het waarschijnlijk volledig versnelling gereden om er meer compact en schoner.

Voor Predator kostuums info kijk op http://www.thehunterslair.com

Deze individuen die geïnteresseerd zijn in het verkrijgen van een kanon van de hars gieten moeten contact opnemen met mijn vriend Carl hier - http://www.accurizedhunterparts.com/

Carl's werk is absoluut briljant-Bekijk de foto's hieronder van de Predator rugzak klei beeldhouwen dat hij gemaakt voor dit project. Dat is een heleboel klei! Wanneer contact opnemen met Carl wees a.u.b. geduldig zoals hij extreem druk is en hij een grote achterstand van werk heeft.

Hier is de code-

/*
* Voorbeeld 7
* Predator kanon
* Deze maakt gebruik van een gemodificeerde Wii nunchuck als een hoofd bijhouden invoerapparaat waarmee een animatronic Predator kanon
* Adafruit Wave shield is gebruikt voor geluidseffecten
* Honus 2007, 2010 bijgewerkt
* Wii nunchuck lezen code aangepast/uitgebreid vanaf nunchuck code door Tod E. Kurt en Windmeadow Labs
* 2007 Tod E. Kurt, http://todbot.com/blog/
* De Wii Nunchuck lezen code is overgenomen uit Windmeadow Labs, http://www.windmeadow.com/node/42
*/

#include "Wire.h" / / de draad bibliotheek
#include "Servo.h" / / de servo-bibliotheek

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

int controlPin1 = 6; Controle pin voor geluidseffecten board met z-knop
int transistorPin1 = 13; Controle pin voor LED met z-knop
int transistorPin2 = 12; Controle pin voor laser zicht met behulp van c knop
int transistorPin3 = 11; Controle pin voor het gebruik van de servo 1 c knop
int transistorPin4 = 10; Controle pin voor het gebruik van de servo 2 c knop
int servoPin1 = 7; Controle pin voor servo 1 met behulp van de versnellingsmeter x-as
int servoPin2 = 8; Controle pin voor het gebruik van de servo 2 versnellingsmeter y-as
int servoPin3 = 9;  controle pin voor servo arm

int pulseWidth1 = 0; Bedrag aan de pols van de servo 1
int pulseWidth2 = 0; Bedrag aan de servo 2 pulse

int refreshTime = 20; de tijd in millisecs nodig tussen servo pulsen
lange lastPulse1;
lange lastPulse2;

int minPulse = 700; minimale servo pulsbreedte
int loop_cnt = 0;

Boole button_down = false;
niet-ondertekende lange start;

VOID Setup
{
Serial.begin(19200);

servo3.attach(servoPin3);  de servo op pin 9 hecht aan de servo-object

pinMode (controlPin1, OUTPUT); Controle pin 1 stellen als uitvoerapparaat
pinMode (transistorPin1, OUTPUT); Transistor pin 1 stellen als uitvoerapparaat
pinMode (transistorPin2, OUTPUT); Transistor pin 2 stellen als uitvoerapparaat
pinMode (transistorPin3, OUTPUT); Transistor pin 3 stellen als uitvoerapparaat
pinMode (transistorPin4, OUTPUT); Transistor pin 4 stellen als uitvoerapparaat
pinMode (servoPin1, OUTPUT); Servo pin 1 stellen als uitvoerapparaat
pinMode (servoPin2, OUTPUT); Servo pin 2 stellen als uitvoerapparaat

pulseWidth1 = minPulse; Stel de positie van de servo tot het minimum
pulseWidth2 = minPulse; Stel de positie van de servo tot het minimum

nunchuck_init(); Stuur de handdruk initilization
Serial.Print ("NunchuckServo ready\n");
}

void loop
{
checkNunchuck1();
updateServo1(); Update servo 1 positie
checkNunchuck2();
updateServo2(); Update 2 servo positie

Als (nunchuck_cbutton()) {}
digitalWrite (transistorPin2, hoge); transistor pin 2 inschakelen als c-knop wordt ingedrukt
digitalWrite (transistorPin3, hoge); transistor pin 3 inschakelen als c-knop wordt ingedrukt
digitalWrite (transistorPin4, hoge); transistor pin 4 inschakelen als c-knop wordt ingedrukt

servo3.write(180);
}
else {}
digitalWrite (transistorPin2, laag);
digitalWrite (transistorPin3, laag);
digitalWrite (transistorPin4, laag);
servo3.write(0);
}

Als (nunchuck_zbutton())
{
Als (! button_down) / / als net gedrukt werd dit doen
{
digitalWrite (controlPin1, hoge);
button_down = true;
Start = millis();
}
anders als (millis() - start > 1200) / / als de timer is verstreken hiervoor
{
digitalWrite (transistorPin1, hoge);
}
}
anders / / als knop omhoog doen dit is
{
button_down = false;
digitalWrite (controlPin1, laag);
digitalWrite (transistorPin1, laag);
}

delay(1); Dit is hier een bekende tijd per lus te geven
}

VOID checkNunchuck1()
{
Als (loop_cnt > 100) {/ / lus () s is elke 1msec, dit is elke 100msec

nunchuck_get_data();
nunchuck_print_data();

zweven tilt = nunchuck_accelx(); x-as, in dit geval varieert van ~ 70 - ~ 185
kantelen (tilt - 70) = * 1,5; omzetten in hoek in graden, ruwweg
pulseWidth1 = (kantelen * 9) + minPulse; hoek omzetten in microseconden

loop_cnt = 0; Reset voor
}
loop_cnt ++;

}

elke loop genoemd.
Gebruik globale variabelen servoPin, pulsewidth, lastPulse, & refreshTime
VOID updateServo1()
{
Pulse de servo opnieuw als rhe refresh tijd (20 ms) hebt uitgevoerd:
Als (millis() - lastPulse1 > = refreshTime) {}
digitalWrite (servoPin1, hoge); De servo inschakelen
delayMicroseconds(pulseWidth1); Lengte van de pols stelt u de positie van de servo
digitalWrite (servoPin1, laag); De servo uitschakelen
lastPulse1 = millis(); opslaan van het tijdstip van de laatste puls
}
}

VOID checkNunchuck2()
{
Als (loop_cnt > 100) {/ / lus () s is elke 1msec, dit is elke 100msec

nunchuck_get_data();
nunchuck_print_data();

zweven tilt = nunchuck_accely(); y-as, in dit geval varieert van ~ 70 - ~ 185
kantelen (tilt - 70) = * 1,5; omzetten in hoek in graden, ruwweg
pulseWidth2 = (kantelen * 9) + minPulse; hoek omzetten in microseconden

loop_cnt = 0; Reset voor
}
loop_cnt ++;

}

elke loop genoemd.
Gebruik globale variabelen servoPin, pulsewidth, lastPulse, & refreshTime
VOID updateServo2()
{
Pulse de servo opnieuw als rhe refresh tijd (20 ms) hebt uitgevoerd:
Als (millis() - lastPulse2 > = refreshTime) {}
digitalWrite (servoPin2, hoge);  De servo inschakelen
delayMicroseconds(pulseWidth2); Lengte van de pols stelt u de positie van de servo
digitalWrite (servoPin2, laag); De servo uitschakelen
lastPulse2 = millis(); opslaan van het tijdstip van de laatste puls
}
}

//
Functies van de Nunchuck
//

statische uint8_t nunchuck_buf [6]; matrix voor het opslaan van gegevens van de nunchuck,

initialiseren van de I2C-systeem, join de I2C-bus,
en nunchuck vertellen dat we aan het praten
VOID nunchuck_init()
{
Wire.begin(); Join i2c bus als meester
Wire.beginTransmission(0x52); verzenden naar apparaat 0x52
Wire.send(0x40); stuurt geheugenadres
Wire.send(0x00); stuurt verzonden een nul.
Wire.endTransmission(); stoppen met het verzenden van
}

Een verzoek om gegevens verzenden met de nunchuck
was "send_zero()"
VOID nunchuck_send_request()
{
Wire.beginTransmission(0x52); verzenden naar apparaat 0x52
Wire.send(0x00); stuurt één byte
Wire.endTransmission(); stoppen met het verzenden van
}

Gegevens ontvangen terug van de nunchuck,
geeft als resultaat 1 op succesvolle Lees. geeft als resultaat 0 op mislukking
int nunchuck_get_data()
{
int cnt = 0;
Wire.requestFrom (0x52, 6); aanvraaggegevens uit nunchuck
terwijl (Wire.available ()) {}
Ontvangen bytes als integer
nunchuck_buf [cnt] = nunchuk_decode_byte(Wire.receive());
CNT ++;
}
nunchuck_send_request(); verzoek tot volgende gegevenslading sturen
Als we de 6 bytes ontvangen, ga dan afdrukken
Als (cnt > = 5) {}
return 1; succes
}
keren 0; storing
}

Afdrukken van de invoergegevens die we hebben ontvangen
accel gegevens is 10 bits lang
zodat wij 8 bits lezen, dan moeten zullen we toevoegen
op de laatste 2 bits. Dat is waarom ik
Ze vermenigvuldigen met 2 * 2
VOID nunchuck_print_data()
{
statische int i = 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;

nunchuck_buf [5] van de byte bevat bits voor knoppen z en c
het bevat ook de minst significante bits voor de versnellingsmeter-gegevens
dus we hebben om te controleren van elke bit van byte outbuf [5]
Als ((nunchuck_buf [5] >> 0) & 1)
z_button = 1;
Als ((nunchuck_buf [5] >> 1) & 1)
c_button = 1;

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

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

Als ((nunchuck_buf [5] >> 6) & 1)
accel_z_axis += 2;
Als ((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 ++;
}

Coderen gegevens opmaken dat meeste wiimote bestuurders behalve
alleen nodig als u een van de regelmatige wiimote stuurprogramma's gebruiken
char nunchuk_decode_byte (char x)
{
x = (x ^ 0x17) + 0x17;
return x;
}

Deze eigenschap retourneert de status zbutton: 1 = ingedrukt, 0 = notpressed
int nunchuck_zbutton()
{
retourneren ((nunchuck_buf [5] >> 0) & 1)? 0: 1; Voodoo
}

Deze eigenschap retourneert de status zbutton: 1 = ingedrukt, 0 = notpressed
int nunchuck_cbutton()
{
retourneren ((nunchuck_buf [5] >> 1) & 1)? 0: 1; Voodoo
}

Deze eigenschap retourneert een waarde voor x-as joystick
int nunchuck_joyx()
{
keren nunchuck_buf [0];
}

Deze eigenschap retourneert een waarde voor y-as joystick
int nunchuck_joyy()
{
terug van nunchuck_buf [1];
}

Deze eigenschap retourneert een waarde van de x-as versnellingsmeter
int nunchuck_accelx()
{
keren nunchuck_buf [2]; FIXME: Dit laat uit 2-bits van de gegevens
}

Deze eigenschap retourneert een waarde van y-as versnellingsmeter
int nunchuck_accely()
{
keren nunchuck_buf [3]; FIXME: Dit laat uit 2-bits van de gegevens
}

Deze eigenschap retourneert een waarde van de z-as versnellingsmeter
int nunchuck_accelz()
{
keren nunchuck_buf [4]; FIXME: Dit laat uit 2-bits van de gegevens
}

Gerelateerde Artikelen

Hoe om uw Andoird UI kijken meer Awesome

Hoe om uw Andoird UI kijken meer Awesome

INTRODUCTIEHallo daar, vandaag zal ik laten u dat hoe kunt u uw android telefoon/tablet meer awesome kijken en als je oude en lelijke Androïde versie (dwz 4.0 ice cream sandwich, 4.1, 4.2 Jellybean, 4.4 Kitkat) en wil het er bijgewerkte en ontzagwekk
Hoe maak je een kostuum van de Terminator Model T-600

Hoe maak je een kostuum van de Terminator Model T-600

zoals u van mijn avatar zien kunt, ik ben een grote fan van de Terminator-serie. Om deze reden dit jaar maakte ik mijn eigen kostuum van een model T-600 Terminator zoals te zien in Terminator Salvation.De definitieve kostuum omvat een minigun, een li
Hoe maak je een kostuum Corvid

Hoe maak je een kostuum Corvid

Ik kan me niet herinneren waarom, maar Halloween feest komen ik besloten om te verkleden als een monsterlijke-Crow / Raven (grote zwarte vogel)Het beste ding over een zelf-gemaakte kostuum is dat kunt u er vrij zeker dat niemand anders gaat er hetzel
Hoe maak je een kostuum Sinestro (paars lantaarn) Corp "Scarecrow"

Hoe maak je een kostuum Sinestro (paars lantaarn) Corp "Scarecrow"

daar gaan we weer! We wisten allemaal dat het uiteindelijk zou gebeuren dat scarecrow zou worden een paars lantaarn voor zijn capaciteit voor het opwekken van grote angst in anderen. Tijden veranderen en wij gotta houden met de trends juiste?Material
Maak een Link kostuum!

Maak een Link kostuum!

Dit instructable zal u tonen hoe een Link kostuum, allermeest naar de componenten aanbrengen van de Legend of Zelda. Met wat ik had, dit geliquideerd wordt een hybride tussen de Link van de Ocarina of Time en Twilight Princess. Dit omvat het maken va
Maak een geweldige zaak-minder flash drive, heb ik al gezegd dat het waterdicht is?

Maak een geweldige zaak-minder flash drive, heb ik al gezegd dat het waterdicht is?

Informatie over het gebruik van sommige algemeen beschikbare materialen die u hebt waarschijnlijk rond het huis om een geweldige zaak-minder flash drive.Stap 1: Verzamel materialen u zal eerst uw materialen die u nodig heeft om de flash drive, verzam
Maak een epische kostuum voor onder $15

Maak een epische kostuum voor onder $15

het is die tijd van het jaar weer, de bladeren vallen van de bomen, Thanksgiving nadert, maar het grootste deel van alle Halloween is de horizon en mensen scramble te hebben de beste kostuum op het blok, of het nu gaat om Iron Man naast de deur, of d
Hoe maak je een kostuum 'Jem'

Hoe maak je een kostuum 'Jem'

Jem was de zanger van een 80's cartoon band genaamd JEM en de hologrammen. Overdag was ze Jerrica, maar haar pseudoniem was Jem. Jem de blik over de afleveringen is geëvolueerd, maar die ik het beste bevalt is haar hete roze omslag jurk, glanzende as
Hoe maak je een kostuum Saber Lily

Hoe maak je een kostuum Saber Lily

ik hield van het ontwerp van dit teken, wanneer ik voor het eerst zag haar, en ten slotte het kostuum van haar maakte te wonen anime verdragen met.  Saber Lily is een alternatieve outfit voor het teken Saber vanaf Fate/Stay Night.  Saber Lily wordt w
Hoe om uw awesome website zelfs meer AWESOME door het toegankelijk te maken

Hoe om uw awesome website zelfs meer AWESOME door het toegankelijk te maken

deel 0: InleidingWanneer haalbaar is, probeer om een website om bruikbaar door zoveel mensen als mogelijk te ontwerpen.  Dit kan mensen die niet kunnen zien, horen of hun muis bewegen goed, of zelfs helemaal omvatten.  Hier zijn enkele hints en tips
Hoe maak je: Lego sleutelhanger + meer

Hoe maak je: Lego sleutelhanger + meer

Hallo iedereen,Ik ben bezig geweest de laatste paar dagen met mijn lego projecten, mijn doel was oude lego voorzien en gebruikt in het dagelijks leven zorg te worden gedragen en genoten:) Dit is een instructable op het proces van het maken van uw eig
Hoe maak je een kostuum voor een hond

Hoe maak je een kostuum voor een hond

ik denk dat ongeacht hoe u persoonlijk gevoel over honden, we er allemaal over eens dat hond kostuums hilarisch zijn. Ja, het klopt dat we op hen, en niet met hen lachen, maar zolang ze bereid bent te spelen mee ik denk niet dat er per se iets mis me
Hoe maak je Locker houden meer Stuff

Hoe maak je Locker houden meer Stuff

ik huurde een locker op mijn lokale TechShop locatie, dus ik houden kan project materialen en hulpmiddelen voor diverse persoonlijke, gunstig gelegen.  De kluisjes zijn lang en smal, zodat alles hoopt zich op in een stapel aan de onderkant.Ik opgeklo
Maak een zeemeermin kostuum uit oude rommel

Maak een zeemeermin kostuum uit oude rommel

ik ben het verblijf in de buurt van het strand in het moment en was geïnspireerd door de rommel er en sommige plastic zak materiële instructables.  Mijn vriend en ik maakte dit kostuum voor een video-shoot. Het is een beetje geïmproviseerde dus hoewe