Arduino Lens Controller - Synkronisert zoom / Fokus med Wii Classic Controller: 11 trinn (med bilder)

Arduino Lens Controller - Synkronisert zoom / Fokus med Wii Classic Controller: 11 trinn (med bilder)

Innholdsfortegnelse:

Anonim

Min Lumix GH2 Micro Four Thirds-kamera skaper ikke bare fantastiske HD-videoer, men med billige adaptere kan jeg bruke den med eldre manuelle linser som er billige og ofte veldig høy kvalitet. Jeg skyter masse ytelsesvideoer til min datters dansestudio, og jeg bruker en f3.5 Nikon 28-85mm zoomobjektiv fordi den gir et godt zoomområde og en rask blenderåpning for et zoomobjektiv. Problemet med dette oppsettet er at jeg må zoome og fokusere objektivet manuelt, og selv om jeg prøver å minimere zoomingen mens du tar bilder, er det tidspunkter når det er viktig å opprettholde riktig innramming og for å vise dansernes ferdigheter. Jeg har klart å lære å zoome manuelt uten å introdusere overdreven kamerajitter (vanligvis), men siden jeg også fokuserer manuelt, er det litt av en rolle å raskt og jevnt justere fokuset etter å ha zoomet inn eller ut. For å overvinne denne mangelen bestemte jeg meg for å bygge en strømzoom og fokuskontroll for kameraet mitt (som mange andre har gjort), med det kritiske målet om å kunne opprettholde riktig fokus automatisk når linsen jevnt zoomer inn og ut. Etter mange måneder med prototyping kom jeg til en flott løsning som bruker en Arduino klon som aksepterer inngang fra en Wii Classic-kontroller, og som bruker 2 hobby servos til å flytte linsen.Den totale kostnaden for sluttproduktet er mindre enn $ 100.

Designet som jeg til slutt implementerte har en rekke avanserte funksjoner:

- 2 joysticks gir kontinuerlig variabel hastighet linse kontroll. Flytting av høyre pinne frem og tilbake styrer synkronisert zoom og fokus, og flytte venstre pinne side til side kontrollerer bare fokus. Implementeringen av fartkontrollen bidrar også til å holde servostøyen nede til akseptable nivåer.

- Det er 6 programmerbare "goto" zoom / fokusinnstillinger som kan programmeres på fluen fra Wii Classic, og det vil flytte zoomen og fokusere til ønsket posisjon bare ved å trykke på en knapp (venstre skulder for bredeste zoom, høyre skulder for de fleste zoom, og a, b, x og y for hvilken som helst zoom / fokusposisjon).

- De maksimale objektivbevegelsesinnstillingene kan også programmeres på fluen for å sikre at servoene ikke forsøker å rotere utover grensene for objektivets zoom- og fokusposisjoner.

- D-pad gir enkelgraders bevegelser av zoom (opp og ned pute) og fokus (venstre og høyre pute) for å gjøre presise justeringer for kritisk fokus / zoom.

Her er en demonstrasjon av hvordan det synkroniserte zoomfokuset fungerer på min GH2 med et Nikon 28 - 85mm zoomobjektiv:

I denne instruksjonen vil jeg dekke grunnleggende om hvordan du bygger din egen versjon av denne kontrolleren, inkludert Arduino-koden og instruksjonene for montering av servoer til en skinnebasert kameramaskinrigger. Jeg skal nevne hvordan jeg bygget rigget mitt, men siden jeg ikke er veldig fornøyd med det, vil jeg ikke gå inn i detaljerte trinn på det og la det være deg å finne ut din egen løsning basert på bildene på min rigg og noen notater om hvordan jeg gjorde det.

Dette var mitt første forsøk på å bygge noe med Arduino, selv om jeg har hatt noen programmeringserfaring, så det var ikke så vanskelig for meg å lære grunnleggende om Arduino-koden. Men hvis du ønsker å takle dette prosjektet, og du ikke allerede har fått kjent med å sette opp og programmere en Arduino, anbefaler jeg at du går gjennom veiledningene på Arduino-siden, spesielt de for Servos.

forsyninger:

Trinn 1: Komme i gang: Verktøy og materialer

Du kan fullføre elektronikken for dette prosjektet med bare noen wire strippere og et loddejern. Men for å gjøre servo montering armer det hjelper å få tilgang til en båndsag og en bore trykk (selv om forsiktig arbeid med en hånd drill kan negere behovet for sistnevnte). Jeg brukte også et bord til å kutte plastplaten og en bordmontert router med en 1/2 diameter kjerneboksbit for å kutte sporene i plasten for å matche skinnene på mitt hjemmebakte kamerajernsystem.

Her er en liste over de viktigste forsyningene du trenger for å fullføre dette prosjektet, men vær så snill å gå gjennom hele instruksen før du kjøper noe slik at du forstår hva du skal kjøpe for å passe dine egne behov.

- Arduino eller Arduino klon (jeg brukte en Seeeduino fordi den var litt billigere enn Arduiino og gir samme funksjonalitet).

- Wii Classic Controller. Jeg kjøpte min fra eBay for rundt $ 10 sendt.

- Wiichuck Adapter (et lite kretskort som plugger inn i Wii Classic, slik at du ikke trenger å kutte kabelen). Jeg fikk dette fra FunGizmos for $ 4:

- 2 standard hobby servos med nylon gir og kulelagre. Nylongirene er roligere, og kulelagrene gir bedre støtte for akselen når du håndterer belastningen på stivere zoomobjektiver. Jeg kjøpte noen overskytende servos fra en lokal RC-butikk for $ 5 hver, men erstatter dem med 360 graders digitale servoer som burde være enda roligere og mer nøyaktige, og de koster meg $ 20 hver fra eBay.

- 2 objektivgir som kan monteres på linsens zoom og fokusringer. Jeg brukte de fleksible som jeg fant på eBay for $ 10 hver, og laget mine egne spacer ringer for å gi bedre oppløsning og litt mer mekanisk fordel for servoene. Du kan også bruke omtrent dobbelt så mye og få linseutvekslingsringer som har innebygde mellomrom, og disse er også tilgjengelige på eBay. bare søk etter "lens gear follow focus".

- 2 Kjør gir til montering på servoene for å kjøre linsene. Disse må være 32p eller mod.8 girhøyde (som er standardhøyde for linsetrykk). Jeg dype mine egne drivgir ved å montere litt $ 4 RC-spenningsgir på de originale servostyringsarmene, men det krevde litt arbeid på en mini-dreiebenk som ikke alle har. Et bedre alternativ ville være å kjøpe servostyrbare gir fra Servo City for bare noen få dollar mer: http://www.servocity.com/html/32_pitch_hitec_servo_gears.html. Mens du bestiller dem, sparer du deg selv noen problemer, kjøper du også et par mannlige servo-ledninger for å gjøre det enklere å koble dine servoer til din Arduino og å bytte servo hvis behovet oppstår.

- 1/2-tommers tykt arkplast eller 3/4 "tykt aluminium for å gjøre servostyrene. Jeg brukte et gammelt plast skjærebrett, men hvis du gjør det, må du sørge for at det er vanskeligere ridgid (du burde ikke være i stand til å knuse overflaten i det hele tatt med miniatyrbildet.) Den mykere typen er UHMW og vil ikke maskinere godt nok til dette formålet.

- Knotter og tilhørende vognbolter for å klemme servostyrene til skinnene.

Trinn 2: Velge Gears og Servos for linsene dine

Før du kjøper servo eller gir, må du forstå noen ting om servo. Servos har et begrenset bevegelsesområde (vanligvis 180), så hvis du vil kunne kontrollere linsen i hele zoom- og fokusområdet, må du gjøre en liten beregning basert på linsens ringbevegelse og linsens diameter utstyr som servoen skal kjøre. Jeg synes det er best å bare gå gjennom prosessen som jeg gikk gjennom, slik at du kan følge samme tilnærming til ditt eget systems behov.

Objektivets fokus- og zoomeing ringer omtrent 90 grader fra ende til slutt, og med avstandsstykker og linsehjul er den totale diameteren på giret som kjøres av servoen, 4,25 tommer. Jeg brukte en omkrets kalkulator fra dette nettstedet (http://math.about.com/library/blcirclecalculator.htm) for å få en omkrets på 13,35 tommer. Siden 90 grader er 1/4 av 360, kan jeg beregne at min servo trenger å gi ca 3,4 tommer reise (13,35 / 4). Jeg brukte standard 180 graders servoer, så jeg vet at omkretsen til min servo-kjøredrev måtte være minst 6,8 tommer (180 grader er halvparten av 360, så mine servoer vil bare kunne gi bevegelse som er halvparten av totalomkretsen av servo-kjøredrevene). Ved hjelp av omkrets kalkulatoren igjen, vet jeg at jeg trenger gir som er minst 2,2 tommer diameter. Jeg endte faktisk med å bruke et litt mindre objektivutstyr fordi jeg ikke trenger hele spekteret av fokusbevegelse, og jeg ville ha litt finere kontroll over fokus siden det er mer kritisk enn zoom for meg. Dette er en annen vurdering å huske på - jo nærmere er du 1: 1 mellom kjøreutstyr og objektivutstyr, jo mindre oppløsning har du. For eksempel, i oppsettet mitt er et 1-graders servosteg = 1/2-graders linse, men hvis drevets diameter var lik linsegiret, ville linsen bevege seg 1 grad for hver servo grad. Du trenger også mer servomoment for en 1: 1-stasjon: linseforhold som du gjør for en 1: 2-stasjon: linseforhold.

Du bør også vite at det finnes en annen variabel som du kan introdusere - servo rotasjon. Min servokontrollkode er skrevet for standard servoer som roterer 180 grader, men jeg har bestilt et par digitale servoer som roterer 360 grader, og det vil tillate at kontrolleren min håndterer linser som krever mer reise. Du kan få servoer som roterer opptil 3 omdreininger, som skal være nok til å håndtere de fleste linser, samtidig som du opprettholder lav kjøring til linserutvekslingsforhold. Selvfølgelig må du gjøre noen mindre endringer i koden for å håndtere det økte graden, men det skal være ganske grei. Hvis du vil ha full sving eller multi-sving servos, søk etter "vinsj servo" på eBay.

Trinn 3: Klargjør Arduino (eller Klon)

Når du har din Arduino (eller tilsvarende), din Wiichuck-kontakt, dine servoer og ledninger, og din Wii Classic-kontroller, er du klar til å begynne å sette ting sammen og laste koden på din Arduino. Her er oversikten: Koble Wiichuck-kontakten og servoledningene slik at du kan begynne å teste alt sammen (det trinnet krever noe lodding). Når du har ting tilkoblet, kan du konfigurere Arduino IDE på datamaskinen, koble til Arduino, og begynne å laste inn biblioteker og eksempler du trenger. Så begynner moroa.

Tilkobling av WiiChuck-adapteren:

Denne delen er ganske enkelt, hvis du ikke gjør det jeg gjorde og mister den lille 4-tapphodet som følger med den. Du lodde bare toppteksten på plass, og deretter plugge den inn i Arduino som vist på bildet på FunGizmos nettside. For å koble din Classic-kontroller, må du bare sørge for at innrykket på kontrollerpluggen stikker opp med "nc" på Wiichuck-adapteren.

Kabling av servoer:

Jeg kjøpte opprinnelig en motorstyringskort fordi jeg først prøvde å bygge dette prosjektet med steppermotorer i stedet for servoer (fordi jeg trodde de var roligere, noe som viste seg å være ganske feilhodet). Brettet har 2 hobby servokoblinger, så jeg behøvde ikke gjøre lodding for å koble til min servoer. Men prosessen er for å koble dem enkelt: du kobler bare strømledninger fra begge servoene (svart er negativt, rødt er positivt) til bakken og VCC på bordet ditt. Du har flere steder du kan velge fra. Koble deretter et av signalene (gule) ledningene til en servo til pin 9 og den andre til pin 10. Dette er standard PWM-pinnene som gir standardpulsbredde-modulasjonsutganger som kreves for å fortelle servoen hvor langt den skal vende.

Når du er ferdig med ledningen, kan du koble alt sammen, koble Arduino til datamaskinen via USB-kabelen, og start lastingskoden.

Trinn 4: Programstyret ditt: Få biblioteker og min kode og begynn å spille

Før du laster inn koden jeg skrev for linsekontrolleren, må du få Arduino IDE satt opp på datamaskinen din og laste inn de biblioteker du trenger. Servo-kontrollbiblioteket er inkludert i Arduino IDE, slik at du ikke trenger å gjøre noe for det. Men min kode bruker også et brukerbidrag Wii Classic Controller-bibliotek som er tilgjengelig på Arduino lekeplass.

Du kan følge trinnene på siden for å legge til dette i biblioteket ditt, eller bare last ned zip-filen som jeg har vedlagt, og pakke den ut i mappen din i Arduino-biblioteker. Gruva er i denne banen:

.. Documents Arduino Arduino-1.0 biblioteker

Jeg opprettet en mappe som heter MiconoWiiClassic i mappen libararies, og lagret "WiiClassic.h" -filen i den mappen. Du kan bare pakke ut filen MiconoWiiClassic.zip som jeg har tatt med her til din Arduino-1.9 libraries-mappe.

OPPDATERINGER:

1) Siden jeg først skrev inn denne instruksjonsboken, har jeg funnet ut hvordan du kan doble oppløsningen på servene, noe som gjør dem jevnere og mer nøyaktige. Jeg gjorde dette ved å tilpasse Servos-biblioteket som er installert av Arduino. Du kan enten tilpasse biblioteket selv, eller du kan laste ned Servo.zip-filen og pakke ut Servo.cpp-filen i din Arduino arduino-1.0 libraries Servo-mappe og overskrive Servo.cpp-filen som er der. Hvis du vil justere filen selv, kan du bare åpne filen fra biblioteket i Notisblokk, og erstatte alle forekomster av "180" med "360". Hvis du lastet ned skissen min før jeg lagde denne oppdateringen, bør du laste ned FocusController_gp.zip og trekke den ut i skissemappen din. Det vil legge til focus_zoom_controller_servo_final_2xresolution.ino til den mappen.

2) Etter at du har pakket opp filene må du endre en ting i WiiClassic.h-filen for å gjøre biblioteket som forventet med min kode. WiiClassic.h-biblioteket inneholder en DEFINE_ON_HOLD-funksjon som må være uncommented for å sikre at knappene trykkes bare en gang. For å uncomment dette må du åpne filen u200b u200b u200b libraries MiconoWiiClassic WiiClassic.h i Notisblokk og endre følgende linje:

// # definer REPORT_ON_HOLD

til

#define REPORT_ON_HOLD

Hvis du ikke gjør dette, vil du legge merke til at D-pad-knappene vil fortsette å bevege servoene mens du holder knappen, mens den bare skal flytte servo ett trinn per trykk. Denne feilen kan også forårsake merkelig oppførsel fra andre knappetrykk.

3) Hvis du kobler WiiChuck-adapteren til Analog-pinnene 2,3,4 og 5, må du konfigurere 2 og 3 som jord og strøm, ved å legge til følgende i oppsettdelen av koden din (takk til Phillip James for å fange denne ommisjonen)

"pinMode (16, OUTPUT);" Setter digital 16 pin (aka Analog 2) som jordnål

"digitalWrite (16, LOW);"

"pinMode (17, OUTPUT);" Setter digital 17 pin (aka Analog 3) som + 5V pin

"digitalWrite (17, HIGH);"

Når du har det biblioteket på plass, kan du også laste ned prosjektkoden og pakke den ut til din viktigste Arduino-mappe, og neste gang du starter Arduino IDE, vil mine prosjekter dukke opp i din Sketchbook-mappe. Min Arduino-mappe er i dokumentmappen min, slik:

.. Documents Arduino

Trinn 5: Test ting ut: Wii Classic Controller

Med de elektroniske delene tilkoblet og koden din på plass, er det på tide å begynne å teste ut ting og justere koden, om nødvendig. Start med å laste inn WiiClassicTestValues-skissen fra Sketchbook (File> Sketchbook> WiiClassicTestValues). Før du legger det på bordet, må du kompilere det for å sørge for at du har installert biblioteket WiiClassic.h riktig (du bør også kunne se det på bibliotekslisten din (Sketch> Import Library). Hvis det kompileres riktig, legg det inn på bordet ditt.

Programmet gir verdien av hver av dine pinner på Wii Classic til Serial Monitor, så du må åpne Serial Monitor (Verktøy> Seriell skjerm). La kontrolleren løpe med stavene i ro for å se hva verdiene er i midtposisjonene, trykk deretter begge staver helt fremover i noen sekunder, så helt ned, så helt til venstre, så helt Ikke sant. Når du har gjort det, kan du slå Autoscrolling av i skjermvinduet og kopiere resultatene til Notisblokk og lagre filen for videre gjennomgang. Du er nå klar til å kontrollere at kontrollerkoden er kalibrert til Wii Classic Controller.

Trinn 6: Legg inn Lens Controller-koden og juster for Wii-kontrolleren

Nå kan du laste inn kontrollerkoden og sørge for at de forventede kontrollerverdiene stemmer overens med Wii Classic Controller. Begynn med å laste inn min kontrollerskisse fra Fil> Sketchbook> focus_zoom_controller_final.

Når den er lastet, blar du til linje 101 i koden for å se innstillingene for styringspinneverdiene, vist nedenfor:

// høyre pinne har 1/2 oppløsningen til venstre - disse verdiene kan variere fra en

// kontrolleren til en annen, så du må kjøre et testprogram for å skille verdiene til

// hver pinne posisjon

int yCenterRight = 15;

int yMinRight = 2;

int yMaxRight = 28;

int xCenterRight = 15;

int xMinRight = 3;

int xMaxRight = 28;

int centerOffsetRight = 3;

int endOffsetRight = 0;

int yCenterLeft = 32;

int yMinLeft = 6;

int yMaxLeft = 55;

int xCenterLeft = 31;

int xMinLeft = 6;

int xMaxLeft = 55;

int centerOffsetLeft = 6;

int endOffsetLeft = 0;

Kontroller disse verdiene mot utlesingen fra kontrolleren din, og endre eventuelle verdier etter behov. Pass på at du lagrer endringene dine.

Trinn 7:

Det er på tide å teste koden med servoene dine. I min kode har jeg Zoom servoen festet til pin 9 av Arduino og Focus servoen festet til pin 10. Du kan enkelt endre det i koden ved å endre tallene her:

ugyldig oppsett () {

Serial.begin (9600); // sette opp seriellbibliotek på 9600 bps

// Fest servoene og sett dem til startposisjonene for montering av servoene på linsen

zoomServo.attach (9);

focusServo.attach (10);

Når det er gjort og servoene dine er koblet til, må du koble bordet til USB-porten på datamaskinen og laste ned koden til bordet ditt. Når det er gjort nedlasting og oppstart, vil Zoom servo bevege seg til 180 grader, og Focus servo vil bevege seg til 0. Du kan nå begynne å spille med pinner og knapper for å se hva som skjer, og kan prøve å programmere de forskjellige servostillinger og fokus forhold. Noen av knappene har standardverdier, men du kan programmere hvilken som helst knapp ved å trykke på HOME, så vil knappen og programmet huske innstillingen til kortet er nullstilt eller slått av.

Når du er fornøyd med at kontrolleren fungerer som den skal for å flytte servoene, kan du ta tak i kameraet og objektivet og vurdere om servoretningene for stangbevegelsene er riktige. Hvis du skyver høyre stang fremover, bør du dreie servoen i riktig retning for å zoome linsen, og å trekke den tilbake skal gjøre motsatt. Samtidig bør det flytte fokuset i den retningen som trengs for å holde kameraet i fokus når zoomen flyttes. Jeg har mine satt opp slik at når jeg zoomer inn (skyv høyre stang fremover), må jeg flytte fokusstangen til høyre for å rette fokuset, og når jeg zoomer ut (trekk til høyre), må jeg Flytt fokuspinnen til venstre for å rette fokuset. Dette virket som det mest intuitive arrangementet.

Ved å sette servos ved siden av kameraet og objektivet på måten du planlegger å montere dem på kamerarigget, kan du se om de beveger seg i riktig retning, gitt hvordan objektivet beveger seg. Hvis de ikke gjør det, er det instruksjoner i koden om hvordan du endrer retningen for servo bevegelse i forhold til hver pinnebevegelse. Jeg har fremtidige planer om å hacke Servo-biblioteket for å gjøre det lettere, men for nå er det ikke så enkelt som å skifte en bryter, men det er heller ikke altfor komplisert.

Trinn 8: Sett det sammen for en ekte test

Her er det virkelig morsomt. Når du er fornøyd med at du har servene som beveger seg i riktig retning for kameraet, er det virkelig ingen grunn til ikke å montere alt og se hvordan det fungerer med kameraet og objektivet. Du kan lage innhegninger og legge til brytere, strømkontakter og vakre lys når alt fungerer til din tilfredshet, men det er egentlig ikke noe poeng å gjøre det før du ser om oppsettet ditt er i stand til å kjøre linsen slik du vil. Jeg gjorde dette med flere iterasjoner av prosjektet mitt, inkludert en trinnbasert versjon som var en komplett katastrofe og fikk meg til å bytte kurs og bytte til servo. Tanken er å svikte fort, før du har begått for mye arbeid på et sluttprodukt som fortsatt trenger tilpasning.

Start med å montere servostyrene og linsene. Dette er alt ganske greit, men hvis du oppdager at linsegiret glider i det hele tatt (som min gjorde), kan det være med til å vite at du kan øke grepet av alt med gummibakgrunnen som lett skli av baksiden av en billig, tynn mousepad. De samme tingene kan også brukes til å døde støy fra servoene. Langs disse linjene kan det også bidra til å redusere servostøyen ved å legge til noe plastikkert fett til servo girkassen.Jeg brukte fiskespolefett som er utpekt som plastikk, og det roste virkelig min zoom servo.

Hvis du ikke har et jernbanesystem, må du mote en ved å enten følge det jeg gjorde (jeg skal la bildet guide deg) eller finne en enda bedre design på nettet. Riggen min ble satt sammen raskt for testing, og jeg planlegger å erstatte den brosteinsbelagte-sammen designen med noe mer attraktivt, stivt og lett å justere. Mine skinner er 1/2 diameter karbon ski poler som jeg snagged fra Goodwill for $ 4 (Goode merkevare er ikke konisk, så de fungerte bra for dette). Skinneholderen er laget av et 1/2 "tykt, hardt plast skjærebrett som jeg så i en 2-1 / 2 tommers bred ved 6" lang stripe. For å skape skinnehullene dirigert jeg to 1/4 "dype med 1/2" diameter spor med en kjerneboksbit montert i et rutetabell og styrt av et lite gjerd. Jeg ønsker nå at jeg hadde gjort hele denne tingen bredere, men jeg ønsket å holde den smal, så jeg kunne fortsatt komme til batteridøren min uten å demontere kameraet fra skinnene. Jeg kutter stykket i 2 i lengderetningen, montert en spacer blokk med baltisk bjørk kryssfiner i den ene enden med noen tre skruer, og så boret et par 1,4 "hull i det for å feste det til kameraet og Manfrotto rask frigjøringsplate.

Når du har en jernbane, kan du mote noen servo montering blokker for å passe dine skinner. Jeg har også laget min fra et lite hardt skjærebrett av plast som jeg kjørte på rutetabellen. Jeg skrudde den ene enden sammen med noen små gipsskruer og boret en 1,4 "hel på den andre siden av skinnehullet for å holde en bærebolt. En liten knott tillater meg å stramme moutblokken for en ganske tett passform på skinnene. Når jeg var sikker på at alt passet bra, bor jeg små pilothull for å passe på servomonteringsskruene som fulgte med servoene mine, og festet servoene på plass. Merk at med dette arrangementet er servoen bare festet på forkant, så vær forsiktig hvor du utøver trykk når du monterer servo- og blokkmonteringen på skinnene.

Trinn 9: Gi det en prøvekjøring

Med kameraet på plass (og montert på et solidt stativ) og servoene montert på skinner, er det på tide å koble alt opp til en prøvekjøring. Ikke slått på Arduino med tannhjulene. I stedet må du først svinge dem vekk fra linsegiret slik at servoene kan rotere uten å flytte linsen. Du kan da slå opp bordet ditt. Hvis du ikke gjør dette, kan du oppdage at din servo forsøker å snu linsen utover grensene, og det er ikke bra.

Program kontrolleren din for linsen din (disse instruksjonene er også i Arduino-koden)

Etter at styret støvler opp og servoene har sluttet å bevege seg, flytt objektivzoomringen slik at den er i maksimal innstilling som tilsvarer servostilling. Når kontrolleren starter, beveger zoombjelken seg til den bredeste zoomposisjonen, så det er der jeg beveger linsen før jeg setter i zoom-servoen. Etter at jeg har flyttet linsen, svinger jeg servoen på plass, slik at drivgiret bare går i kontakt med linsegiret (hvis du legger for mye press på linsen, kan du få det til å holde fast og du vil ikke få så jevn bevegelse). Jeg programmerer så dette som den bredeste zoominnstillingen ved å trykke på "Hjem" og deretter "Venstre skulder" på Wii Classic Controller. Jeg bruker den riktige pinnen til å zoome inn inntil kameraet treffer zoomgrensen, og bruker puten til å gå av en eller to. Jeg programmerer så denne maksimale zoomposisjonen ved å trykke på "Hjem" og deretter "Høyre skulder" for å programmere maksimal zoominnstilling på linsen.

Jeg gjentar en lignende prosedyre for fokus servo, men programmer de høyre mest og venstre mest fokuserte servo innstillinger ved hjelp av "Høyre Z" og "Venstre Z" knapper.

Når disse grensene er angitt, er det på tide å slå på kameraet, velge et motiv og sette fokus for de bredeste og nærmeste zoominnstillingene. Det spiller ingen rolle hvor du starter, men jeg går vanligvis til maks zoom (bare trykk på høyre skulderknapp for å gå dit automatisk). Jeg bruker deretter venstre pinne og venstre høyre D-Pad for å få fokuset rett, og trykk deretter på "Hjem" og "+" for å sette fokus for Max Zoom. Neste zoome linsen helt ut til den bredeste zoomen og igjen, bruk venstre pinne og D-Pad for å ringe inn fokuen på motivet. Når det er bra, trykk "Hjem" og "-" for å stille fokus på Minzozo (bredest zoom) -posisjon. Hver gang du programmerer enten knappene "-" eller "+", beregner koden det riktige forholdet for å flytte fokuset mens du zoomer for å holde motivet i fokus når du zoomer. Du kan til enhver tid justere fokuset ved å bruke venstre pinne eller D-Pad, og til du programmerer "+" eller "-" -tasten, vil fokuset alltid bevege seg synkronisert med zoombevegelsen når du bruker riktig Hold deg til å zoome linsen. Dette er hvor magien i min "contraption" (som min kone kaller det) er.

Du kan også programmere knappene 4 (x, y, a, b) med dedikerte zoom- / fokusposisjoner. Bare flytt zoomen og fokuser til ønsket posisjon, trykk deretter på "Hjem", og deretter på en av knappene for å programmere den for den posisjonen. Hvis du bare beveger fokuseringsservo mens du programmerer hver av disse knappene, kan du gjøre kontrolleren din jobb som et følgefokus med 4 forhåndsinnstilte fokusposisjoner som ikke beveger zoomlinsen i det hele tatt.

Her er en video som demonstrerer denne prosessen med kontrolleren montert på mitt GH2 kamera:

Trinn 10: Pak det opp

Når du er ferdig med å spille og tåle og tilfredsstille at din egen versjon av min kontroller vil fungere for deg, er det på tide å gjøre alt permanent, pent og enkelt å montere og demontere. Jeg lar deg finne ut den delen på egen hånd (men forhåpentligvis deler du resultatene med meg). Jeg har en rekke tweaks å gjøre på kontrolleren min før jeg fullfører den, så jeg trodde jeg ville dele mine planer her for å få deg til å tenke på samme linje.

Kabinett og bedre servomotorer

Jeg har nettopp ikke fått det riktige kabinettet ennå, så jeg ønsker velkommen sugestions her. Jeg vil nok kjøpe en mindre Arduino som en mini, så jeg kan holde ting små og det vil åpne opp mine alternativer. Jeg kommer også til å ripple plastservo-monteringene med maskinbearbeidede aluminiumsmonter nå da jeg vet hvor bra denne tingen fungerer. Jeg skal også oppgradere servene selv.

Strømforsyning

For øyeblikket går kontrolleren av USB-strømmen ved å koble min USB-kabel til en iPod-lader. Imidlertid har jeg et ekstra eksternt 9 Volt DVD-batteri som kan lades mens det gir strøm til av kontrolleren, og jeg liker ideen om å ha batteri bare alternativ, så når jeg har funnet et passende kabinett, skal jeg koble den riktige kontakt til de eksterne pinnene på bordet mitt.

LED indikatorer

Den ville være fint (og veldig enkelt å legge til en indikator for "programmodus", så jeg har noen lysdioder som lyser når kontrolleren er i program- eller kjøremodus.

Enkel servo reversering

Som jeg antydde tidligere, er det litt kjedelig å endre servoens retning i forhold til pinnebevegelsene, så jeg har begynt å jobbe med å hacking Arduino servobiblioteket for å akseptere et servoretningsflagg.

Minne for linseinnstillinger

Det ville også være fint å ikke omprogrammere linsebegrensningsinnstillingene hver gang kontrollen stiger, så jeg planlegger å legge til SD-kortbasert lagring for hver objektivinnstilling.

Trinn 11: Tilbakemelding og oppfølging

Et annet medlem. Steve Dray, har gjort en god jobb med å bygge et par av sine egne versjoner av denne riggen, og har generøst delt sine ledningsdiagrammer og bilder. Jeg håper dette inspirerer og hjelper andre som prøver å bygge dette prosjektet, spesielt siden jeg har hatt begrenset tid til å svare på spørsmål. Steve hadde noen problemer som han diagnostiserte som dårlig strømforsyning, så han bygget sin egen regulerte forsyning, og inkluderte også skjematisk for det. Jeg har klart å komme forbi med min lille kube ipod lader.

Takk Steve!