Step 9: Give it a Test Run
Program your controller for your lens (these instructions are also in the Arduino code)
After your board boots up and the servos have stopped moving, move the lens zoom ring to that it is at the max setting that corresponds to the servo position. When my controller starts up my zoom servo moves to the widest zoom position, so that's where I move the lens before I engage the zoom servo. After I've moved the lens, I swing the servo into position so the drive gear just engages the lens gear (if put too much pressure on the lens, you may cause it to stick and you won't get as smooth of movement). I then program this as the widest zoom setting by pressing "Home", then "Left Shoulder " on the Wii Classic Controller. I then use the right stick to zoom in until the camera hits its zoom limit, and use the pad to back off a degree or two. I then program this max zoom position by pressing "Home", then "Right Shoulder" to program the maximum zoom setting of the lens.
I repeat a similar procedure for the focus servo, but program the right most and left most focus servo settings using the "Right Z" and "Left Z" buttons.
Once these limits are set, it's time to power up your camera, pick a subject and set the focus for the widest and closest zoom settings. It doesn't matter where you start, but I usually go max zoom (just press the right Shoulder button to automatically go there). I then use the left stick and left-right D-Pad to get the focus right, then press "Home" then "+" to set the focus for Max Zoom. Next zoom your lens all the way out to the widest zoom and again, use the left stick and D-Pad to dial in the focu on your subject. Once it's good, press "Home" then "-" to set the focus at the Min Zoom (widest zoom) position. Each time you program either the "-" or "+" buttons, the code calculates the correct ratio to move the focus while zooming in order to keep your subject in focus as you zoom. You can tweak the focus at any time by using the left stick or the D-Pad, and until you re-program the "+" or "-" key the focus will always move in synchronization with the zoom movement when you use the right stick to zoom your lens. This is where the magic of my "contraption" (as my wife calls it) is.
You can also program the 4 (x, y, a, b) buttons with dedicated Zoom/Focus positions. Just move the zoom and focus to the desired position, then press "Home", and then the one of the buttons to program it for that position. If you move only the focus servo while programming each of these buttons, you can make your controller work like a follow focus with 4 preset focus positions that don't move the zoom lens at all.
Here's a video demonstrating this process with the controller mounted on my GH2 camera: