One idea I have been experimenting with recently was to freeze water balloons exploding.
If you try to catch a water balloon explosion with your camera by using the shutter you will face two issues.
First your shutter speed will probably not be fast enough to catch the droplets of the explosion. You easily need 1/8000 second to freeze motion
Second, the delay between piercing the balloon and the image you want is in the order to 5 to 10 milliseconds. This is way to quick for manually pressing the trigger, unless you have the patience to try several hundreds of shots.
The trick here is to use a sound based flash trigger, which trigger the flash after it detects the sound of the balloon. It is this sort of apparatus that I will describe in this article.
I have put together a simple microprocessor (Arduino) with a sound sensor and a flash trigger.
This image shows you the assembled board. I also connected a number of wires on the right side of the board. You can notice a phone connector in which I plug a wire to the sensor, a manual switch for arming the entire system, the flash sync plug and a 3,5mm connector which I will not describe here, but which assists me in opening my camera shutter.
In the front you will see the sound sensor
Water explosion - Eric Raeber 2013
Arduino and breadboard with sound sensor - Eric Raeber 2013
The circuit is as following:
Here is a simple program that trigger the flash after a programmable delay. The system is armed by either downloading the code or pressing the reset button.
After the flash has triggered, the LED on the Arduino board will blink each time sound is detected, which allows you to adjust the test the microphone without flashing. you will need to press the reset button to arm the flash again when you are ready.
/*
Flash Trigger
(c) Eric Raeber 2013
*/
//Delay
const int FLASH_DELAY = 7; //Time between sound and flash trigger in milliseconds
//connections
int led = 13; //Pin13 has LED connected on the Arduino board
int mic = 2;
int strobe = 9;
//Flash
void flash() {
digitalWrite(strobe, HIGH);
delay(50);
digitalWrite(strobe, LOW);
}
void waitForNoise() {
digitalWrite(led, HIGH);
while (digitalRead(mic))
{
//do nothing
}
digitalWrite(led, LOW);
}
//User has pressed reset. Arm the system.
void setup() {
// initialize the digital pin as an output.
pinMode(mic, INPUT);
pinMode(led, OUTPUT);
pinMode(strobe, OUTPUT);
//Wait 4 seconds to arm the system
delay(4000);
waitForNoise();
delay(FLASH_DELAY); //Wait before we trigger the flash
flash();
}
//At run time, just blink the LED for diagnostic purpose
void loop() {
waitForNoise();
delay(250); //half a quarter of a second for the led to blink
}