Programming

It's Easy
Loading new software onto the Camera Axe is easy. See the bottom on this page for information on how to do this. One of the great things with the Camera Axe is all the software is open source so you can take the latest version and your own modifications to fit your preferences or needs. The development environment is Arduino, which was designed specifically for artists and other creative types. So even if you aren't computer programmer you can probably figure out this simple language. Also feel free to suggest your ideas to the forum and if it benefits enough people it will likely get added to a future version of the software.

The second half of [this video] shows new software being loaded onto the Camera Axe.

Versions for Camera Axe 5 and Camera Axe 5 Shield

 * Version 5.3
 * Added gravity menu back
 * Added stacker, panorama, jog, and irRemote features (Help from Don)
 * Updated LCD lib to work with Arduino 1.0
 * Changed file types from *.pde to *.ino as recommended for Arduino 1.0
 * Updated code with USE_* defines to make it easy for people to pick the menus they want
 * Changed bulb time in the Advanced Sensor Menu from 00->99 to 000.0->999.9 seconds
 * Moved all strings to language.ino to make translation easier
 * Started using PROGMEM for all strings to reduce sram usage
 * Added eeprom size so defaults are reloaded when new program uploaded
 * Added 3rd drop to Valve 1
 * Increased max value of "Flash Delay Auto Inc" from 9 ms to 99 ms
 * Added seconds between shots to valve menu
 * Added number of shots to valve menu
 * Added "Number of Repeats" to force multiple shots in valve menu
 * Change default drop size in valve menus to 4 since that works better with the new valve sensor
 * Fixed bug with intervalometer where minutes and seconds weren't correctly clamping to 59
 * Cleanup of how decimal is handled in numbers to greatly simply code
 * Increased amount of time for shutter to open in valve menu from 150 ms to 400 ms
 * Increased delay times for camera shutter from 20 ms to 400 ms on stacker and panorama
 * Fixed a bug in backlight option that turned backlight off after 10 seconds; it now turns off backlight in photomode


 * Version 5.2
 * Updated valve to allow triggering two valves independently (Help from Jeffouille and PTB)
 * Added Gravity Menu (Help from Snagrom and PTB) (not included in official release, but is in betas)
 * Moved test motor menu out of official release
 * Added auto increment option to flash delay on valve menu
 * Made the analog reads much faster (at expense of accuracy)
 * Fixed a bug in intervalometer where larger bulb times wouldn't work because they would overflow the precision of an int16.
 * Added more robust button debouncing
 * Switched to using Arduino 0023


 * Version 5.1
 * Added a test motor menu
 * Cleanup menu code so it's easier to add new menus
 * Changed scrolling algorithm in the advanced menu
 * Changed power off strings from Off_Sen1/Off_Sen2 to Off_Dev1/Off_Dev2. Code already did this and it is the correct way because it's more flexible (can and/or sensors in a device)
 * Added EEPROM_PRESET_GROUP - a way to save and restore different presents
 * Modified advanced menu to work better with bulb time of 0
 * Added analog or digital option for sensors in the advanced menu (replaces fast menu)
 * Removed fast trigger menu
 * Added startup mode control to pick between photo and menu modes (EEPROM_GENERAL_STARTUP_MODE)


 * Version 5.0
 * Modified code to handle hardware changes in Camera Axe 5.0
 * Added define to control flash duration (FLASH_DURATION_MS)
 * Changed the name of the "general" menu to the "advanced" to prevent people from thinking general settings apply to other menus
 * Add a delay before initializing the LCD to prevent race condition (fixes rare blank lcd bug)
 * Improved detectButtonPress for better button debounce
 * Added test code for test jig that runs when the activate button is pressed down when turned on
 * Removed g_eepromShadow and restructured the eeprom code around this to reduce memory usage
 * Various minor cleanups and bug fixes

Versions for Camera Axe 4

 * Version 4.0.2
 * Recoded intervalometer to work on timers rather than delicate polling loops (improved accuracy of timer in this mode)
 * Fixed bug in intervalometer where shot after delay didn't count towards total shots
 * Increased duration between photos in intervalometer to 0.5 seconds since some cameras (Canon Rebel) weren't working reliably with shorter times
 * Added a mirror lockup option to intervalometer
 * Updated source and display to use the "photo mode" instead of "trigger mode"
 * Fix bug where setting LCD backlight off wasn't correctly applied if you cycled the power


 * Version 4.0.1
 * Added threshold to general menu
 * Added "or" and "and" options to general menu
 * Added HDR stops to intervalometer menu
 * Added 10 second backlight mode to settings menu
 * (bug) Fixed timelapse mode to be more accurate
 * (bug) Disabled internal pullup resistors for sensor1/2 to improve senor measurements
 * (bug) General Menu will now retrigger if it gets a constant trigger signal
 * Updated to use 0021 Arduino software


 * Version 4.0.0
 * Original release

Camera Axe 5.3 and later Software

 * 1) Install the Arduino 1.0 from the Arduino Software page.  You can install this where ever you want on your hard drive, but I'll refer to it being installed at ./arduino-1.0.
 * 2) On this page Click on Windows/Mac/Linux to see how to install drivers for your OS.
 * 3) The Camera Axe must be turned on for your computer to detect it on the USB ports.  Turn it on and leave it on while following the rest of these steps or your computer won't be able to connect to the Camera Axe.  Note this doesn't apply to the Camera Axe Shield since it has no off switch.
 * 4) Download the Camera Axe software (probably the most recent) from the list above.  Unzip it to where you want on your computer.  In future instructions I'll refer to it being installed at ./CameraAxe5x.
 * 5) Copy the DogmCA folder and all its contents from ./CameraAxe5x/DogmCA to ./arduino-1.0/libraries/DogmCA.  This install an LCD library that the Camera Axe software needs.
 * 6) Start ./arduino-1.0/arduino.exe.
 * 7) Go to File->Open and select ./CameraAxe5x/CameraAxe/cameraAxe.ino.
 * 8) In Tools->Board if you are using the Camera Axe 5 or Camera Axe 4 "Arduino Duemilanove w/ATmega328".  If you are using the Camera Axe 5 shield select a board version that matches your version of Arduino (probably Arduino Uno).
 * 9) In Tools->Serial_Port make sure the correct COM port is selected.  If you aren't sure which to use, you can either look in your computer's hardware manager to figure out which COM port has the programming cable installed or just try the couple options until one works.  A trick I use is if you unplug the USB port from the Camera Axe the serial port the Camera Axe is using should be removed form the list.
 * 10) In the toolbar there are some icons.  When you find the Upload button click it and the new software will be uploaded to the Camera Axe in less than 30 seconds.
 * 11) Once the new software is correctly installed turn off the power and hold the "activate" button down will powering on the Camera Axe to rest defaults.  This is important since invalid values might exist in memory either by default or from previous versions of loaded software.
 * 12) In the 5.3 and newer software it is easy to change which menus get included on your camera axe.  At the top of the cameraAxe file there is a section that tells you how to enable or disable menus.  It's as easy as deleting deleting or adding "//" so anyone who can load a new version of the Camera Axe software can make this change.  Once you have made this change you must reload the software as described above.

If you get an error, read over the directions again and make sure you followed all the steps. If you are still getting an error try typing the error message into Google and you will see how others have solved this problem.

Camera Axe 5.2 and earlier Software

 * 1) Install the Arduino 0023 software from the Arduino Software page.  You can install this where ever you want on your hard drive, but I'll refer to it being installed at ./arduino-0023.
 * 2) On this page Click on Windows/Mac/Linux to see how to install drivers for your OS.
 * 3) The Camera Axe must be turned on for your computer to detect it on the USB ports.  Turn it on and leave it on while following the rest of these steps or your computer won't be able to connect to the Camera Axe.  Note this doesn't apply to the Camera Axe Shield since it has no off switch.
 * 4) Download the Camera Axe software (must be 5.2 or older) from the list above.  Unzip it to where you want on your computer.  In future instructions I'll refer to it being installed at yyy/CameraAxe5x.
 * 5) Copy the DogmCA folder and all its contents from yyy/CameraAxe5x/DogmCA to ./arduino-0023/libraries/DogmCA.  This install an LCD library that the Camera Axe software needs.
 * 6) Start ./arduino-0023/arduino.exe.
 * 7) Go to File->Open and select yyy/CameraAxe4xx/CameraAxe/cameraAxe.pde.
 * 8) In Tools->Board if you are using the Camera Axe 5 or Camera Axe 4 "Arduino Duemilanove w/ATmega328".  If you are using the Camera Axe 5 shield select a board version that matches your version of Arduino (probably Arduino Uno).
 * 9) In Tools->Serial_Port make sure the correct COM port is selected.  If you aren't sure which to use, you can either look in your computer's hardware manager to figure out which COM port has the programming cable installed or just try the couple options until one works.  A trick I use is if you unplug the USB port from the Camera Axe the serial port the Camera Axe is using should be removed form the list.
 * 10) In the toolbar there are some icons.  When you find the Upload button click it and the new software will be uploaded to the Camera Axe in less than 30 seconds.
 * 11) Once the new software is correctly installed turn off the power and hold the "activate" button down will powering on the Camera Axe to rest defaults.  This is important since invalid values might exist in memory either by default or from previous versions of loaded software.

If you get an error, read over the directions again and make sure you followed all the steps. If you are still getting an error try typing the error message into Google and you will see how others have solved this problem.