Application
Like with many other software development projects, while writing the application, many new features pop up. I decided to implement basic features first and based on the results and experience of the first photo sessions build new releases. Currently the application has the following features:
Version 0.19 – updated 6 august 2011
Hardware:
- LCD Display Control
- 16 keys matrix keypad
- 1 x flash trigger output
- 1 x autofocus & 1 x shutter output
- 1 x water valve output
- 1 x analog input for sound & light detection sensor
Program (menu):
- Basic waterdrop program
- Auto increment time between drop creation and taking photo
- Auto increment time between two drops
- Auto increment size of waterdrops
- Sound detection
- Lightning detection
- Store values in EEPROM
- Load values from EEPROM
- Erase EEPROM values
- Configuration Menu – save basic values
- Possibility to enter some values on 0.1 millisecond accurate.
In the basic program you enter the waterdrop size (time to open valve), time between creating waterdrop and taking a photo (trigger flash), number of waterdrops, time between drops, number of photocycles. You can also enter the index number of the last photo taken by the camera. This can be very useful to find the specific settings with a specific photo.
Within the three auto increment programs you also enter the increment value. i.e. Auto increment time with 5 milliseconds. The program will run the number of photo cycles and take a picture. It will increment the photo index number.
Using the store values in EEPROM menu you can save the settings used to create a specific photo. Just enter the number of the photo (your camera usually stores this in the filename) and save the settings. Every time a photo is taken, the used settings are stored within the EEPROM. Settings up to 39 photos can be stored. Users can flag any of those settings to skip them in an EEPROM erase cycle. This way you can keep succesful settings while you can still erase useless settings. In the future it might be nice to add external EEPROM memory.
(Storing information in EEPROM has its limits. The EEPROM can be written 100.000 times, after that it might become defective. This means in theory that after taking 100.000 photo’s (depending on the new program maybe 400.000 photo’s) you have to buy a new Atmel processor. They cost 5 euro’s and 100.000 photo’s is also the estimated lifetime of a regular dSLR mirror mechanism, so I would worry more about buying a new camera
).
It’s now possible to enter values on 0,1 millisecond accurate. (Time between two drops and the time between releasing a drop and taking a shot). I expect that an effective accuracy of 0.5 millisecond is more realistic but it might be the difference between a nice picture and a great picture
.
Improvements:
After one evening using my initial program, I found some possible improvements which have to be implemented.
- Possibility to use different dropsizes within one cycle (enter value for 2nd dropsize implemented since v0.18)
- When easily possible, make the increment programs also accept negative numbers, making it effectivly a decrease
- when memory size allows it, add control by using PC over Serial port
- Think about making the valve movable (just like inkjet printer head) to create drops next to each other.
- optimize the questions asked in the menus. (i.e. when only creating 1 drop, don’t ask for time between drops = implemented in v0.19)
- Add possibility of Next/Prev within a program.
In case you are interested in the source code, leave a comment requesting the sourcecode.




pls send copy of source code as offered in your blog.
thanks
Mike
Thanks for sharing your setup. I’m currently using the Hiviz.com kits for controlling my shutter and off camera flash, but would like to add in the use a solenoid valve to better control my drops. Would you mind sharing more info on the programming you used with the microcontoller, especially in relation to the valve? I have some basic knowledge of circuits, but really have no idea where to start here.
Hi Nate,
What exactly do you want to know? Did you look at all my pages on the waterdrop device? Schematics are displayed there.
Programming is easy. Connect the valve to your mictrocontroller using my circuit. In your program it is: make outputport 1, wait x milliseconds, set outputport 0. I’ll send you my sourcecode.
Hi, I found your article most interesting and have taken to building and using the Arduino for my photography. Please would you be kind enough to send me a copy of the source code etc. Many Thanks and I look forward to building your project and taking better quality High Speed photos. Kind Regards Robert.
Hi Robert,
Nice to hear you enjoyed the article. I’m sure you will do fine taking highspeed photos.
I’ll send you the sources by email tonight.
Hi Alexander, Nice idea and great article. I have decided to have a go at building one. Would you please let me have a copy of you code.
Regards Dennis
Hi Dennis,
Source code is send to your email. let me know how you are doing building your device.
best regards,
Alex
Beste Alexander,
Ik ben een vergelijkbare setup aan het maken gebaseerd op een pic microcontroller. Kan ik een kopie van jouw sourcecode krijgen om wat inspiratie op te doen?
Bedankt! Groeten,
Peter
Hoi Peter,
Source code komt per mail jou kant op.
Gr Alex
Hi Again Alex,
Please would you be kind enough to send me a copy of the latest source code as I am about to complete the building of my unit.
I have v 0.18 but now see you have amended this with v 0.19
Many Thanks and Kind Regards Robert
Hi Robert,
I’ll send you new source code by email.
Thanks for your note on the wrong URL.
Regards,
Alex
Hi Alex, Many thanks for your responce.
Robert
Hoi Alexander, dit is precies de setup die ik zelf ook wil bouwen. Ik ben nu zover dat ik een frame heb met lasers en een in de basis werkende Arduino eraan, maar verder ben ik nog niet. Nu moet ik steeds alle wijzigingen in de code maken en die opnieuw uploaden. Als ik jou werk zie dan kan ik opmaken dat jij het stukken beter in de vingers hebt dan ik. Zou ik ook mee mogen liften op jou source code? Alvast bedankt, Huibrecht
Source code staat in je mail
Succes en laat me weten wat je resultaat is geworden
Hi Alexander,
Just came across your blog.
I currently use the “Camera Axe” for water drop shots, but am intrigued with your set-up…am getting the components to build per your specs.
Please send me the source code.
Thanks.
Cheers,
Ed
Hi Ed,
Source codes are in your email !
Good luck,
Alexander
Dear Sir,
i was looking for project like this. i have arduino duo and i have nikon d7000. can u send me code and schematic as it is not clear to which pin i have to connect control camera and flash and valve.
thnaks
paritosh narayan
Hi Paritosh,
I’ve send the source code to your email. The definition of the pins can be found in the source code. You are flexible in defining the pins as long as you use the same type of pins (like analog pins for analog and digital for digital output, and so on).
Currently it is defined as shown below:
//Definition of the pins.
const int ValvePin = 11; // the number of the Valve pin
const int FlashPin = 10; // the number of the Flash Trigger pin
const int ShutterPin = 9; // the number of the camera shutter pin
const int AutoFocusPin = 8; // the number of the Autofocus pin
const int KeyPadPin = A0; // the number of the analog Keyboard pin
const int AnalogPin1 = A1; // the number of the Analog sound detection pin
Enjoy building your device.
Alex.
hi,
Could you send me the source code, I am very interested in your project.
Thanks
Tigrou
Hi Tigrou,
Source code is in your mailbox.
Best Regards,
Alex.