I've put together some demo code for a simple user interface using the engine directly, with 5 buttons and a serial LCD. This will enable one to create an engine-only package that can be used in the field for simple usage without a computer or GUI or any sort. (Advanced options are not available, however =)
The following parts are the ones I'm using:
Sparkfun Serial-Enabled 16x2 LCD: http://www.sparkfun.com/commerce/product_info.php?products_id=9395
Sparkfun Mini Button Pad Set: http://www.sparkfun.com/commerce/product_info.php?products_id=8996
Sparkfun Mini Button Pad PCB: http://www.sparkfun.com/commerce/product_info.php?products_id=8963
When ready, it will work with a standard arduino duemilanove. There are enough pins to handle the 6 required for the above setup (using 5 buttons, and 1 pin for the serial lcd). They can be any six pins, so all normal engine functions are still supported.
The basic controls I've laid out so far:
Scroll through options in menus, set values. Can hold to scroll multiple times, or press once to scroll once
(in main menu) up: play/pause
Center (bottom center):
Go into menu mode from main screen
Select menu item
Save menu item
Select value positions
(right) go to previous menu
(right) cancel input of value
The button assignments will be a bit more obvious when I can show y'all a video later.
Anyways, if you want to play with the code (not yet integrated to the engine) you can download it here: http://openmoco.svn.sourceforge.net/viewvc/openmoco/OpenMocoInterfaces/arduino/demo_lcd_button/trunk/OM_BaseUI/OM_BaseUI.pde
One of the primary reasons I'm posting this is to get feedback on the menus, and here's what I have so far:
- Movie Mode
Enter basic parameters, and have it shoot a complete timelapse film
Use the intervalometer, enter values for motor and camera through setup menus
- Camera Setup
For use with intervalometer mode, settings for the camera
- Motor Setup
For use with intervalometer mode, settings for the motors
- Do This!
Take a manual action right away
Set up engine parameters used in all modes
Selecting the movie mode presents the following menu, each item also shows the path through that item
- Real Time
- Elapse Time
- Movie FPS
This is the 'simple movie mode' it doesn't require much thinking: you say how much real time should pass, what the output length of the video is (elapse time), and the fps of the video. It sets the intervalometer directly from this input. For each motor, you can specify how far to go (10 inches, or 190 degrees), or you can go into manual control to set home and end points. You will also be able to set points in manual controls to start other motors, etc. Ramp specifies how many shots to ramp up to full speed. 'Full speed' is automatically determined based on movie length and distance traveled.
This is pretty straight forward. It's how to you make a film without using the simple movie mode. You can setup how the camera and motors operate before starting the intervalometer, or use the camera/motor settings menu to change parameters on the fly.
- Tap Focus
- Post Delay
- Focus w/ Shutter
These settings should be fairly obvious for those familiar with the engine =)
- Travel Distance per Shot
Again, this should be pretty obvious for those used to the engine - these are basically analogous to the slim set_motor parameters. One has to select a motor.
- Ramp Down
- Shoot Now
- Manual Motor
Ramp down triggers a downramp for a given motor if program is running. Shoot now shoots the camera a specified number of ms whenever you want. Manual motor allows manual positioning of motors (will do so in 'real-time'), setting keyframes, etc.
Settings menu will be specified later.
Any feedback, suggestions for the UI layout and flow would be greatly appreciated.
I'll post a video later of the UI in action (well, what's there so far), but the PDE downloaded above is ready to roll for just scrolling through the menus, etc. (It's just the UI, see the file for pin assignments.)