Introduction: Arduino Flash Controller for Photography
Being a broke amateur photographer isn't easy.
Film, chemicals and paper aren't cheap and a budget for some studio lights is non existant.
So, I decided to, with the help of my trusty arduino, create my own sync controller to use with disposable camera flash circuits.
By using a photoresistor the arduino can sense when the flash from your camera (master) is triggered and then trips the relay activating the disposable flashes (slaves). Since every environment has a different ambient light level I incorporated a potentiometer to adjust the threshold of light that will trigger the relay. I also added a push button to trip the flash bypassing the photoresistor altogether (this is still a bit buggy and does not always work).
Step 1: Gather the Materials
- WHAT YOU WILL NEED -
1 - Arduino (I have the Uno)
2 - 5mm Red LED's
1 - 5mm Green LED
1 - 10k ohm resistor
1 - 2.2k ohm resistor
1 - Transistor (P2N222AG) (TO92)
1 - Diode (1N4001)
1 - Potentiometer (10k)
1 - Relay (5v DPDT)
1 - Push Button
1 - Photoresistor (CdS)
Various lengths of wire
Disposable camera flash circuits
Box to mount it in (OPTIONAL)
- Tools Needed -
Soldering Iron
Solder
Needles nose pliers
Rubber gloves (to avoid being shocked from the flash circuit)
I have the Arduino Experimentation kit which contains all of the components listed above (except the flash circuits) but you can find all of those components at your local electronics store or on the Adafruit website.
Step 2: Assemble Trigger Circuit
Start by connecting your 5v power to your positive rail and your ground to your negative rail and then carry it over to the other side of the board.
- Photoresistor - Senses when the master flash is triggered
Start by inserting your 10k resistor into the positive rail then into a terminal leaving 2 spaces to the left.
In the first space we will connect a data line going from analog input 3.
In the farthest left terminal on this strip we will insert one end of the photoresistor with the end returning to the negative rail.
- Potentiometer - To adjust threshold of light that will trigger relay
Place your pot into the board.
Connect pin 1 to your positive rail.
Pin 2 will be a data line that goes to analog input 4.
Connect pin 3 of the pot to your negative rail.
- Push button - To manually trip the slave flashes
Insert the push button into the board.
Insert the anode or positive end of one of the red LED's (the longer leg) into the positive rail and the cathode inline with your button.
On the other end of the button connect a data line going to analog input 1.
After the data line we need to connect a wire to the negative rail.
Step 3: Assemble Relay Circuit
Next we will assemble the relay and transistor part of the circuit.
- Transistor - Used to trip the relay
Insert your transistor into the board.
First we will connect the emitter to the negative rail.
Next we will connect our 2.2k resistor to the base and then to digital pin 2.
Finally we are going to connect the collector to the negative of our relays coil (for now just connect a wire to the collector and leave the other end unplugged.
- Relay - Used to fire the slave flashes.
Insert the relay into the board over the gap.
Just above the relay insert the diode with the silver band to the right.
Now take a wire and connect the diode to the coil on both sides (yellow wires in the picture)
Next take the wire we left unplugged from the collector of the transistor and plug it in in-front of the yellow wire going to the diode.
On the positive side of the relays coil (right side) in-front of the diode we are also going to connect to our positive rail.
Next connect a wire to the common on each side of your relay (blue wires pictured) and a wire on each of the normally open contacts of the relay (white wires pictured). This is where our flash will connect to later.
Step 4: Assemble Display Light Circuit
Finally, we will assemble the circuit that controls the display lights.
- Red LED - Busy light
Insert the red LED into the board.
Connect the cathode to digital pin 8.
Connect the anode to the positive rail.
- Green LED - Ready light
Insert the red LED into the board.
Connect the cathode to digital pin 7.
Connect the anode to the positive rail.
Step 5: CODE
Here is the code:
int relaypin = 2;
int lightPin = 3;
int chargeledPin = 8;
int readyledPin = 7;
int sensitivitypot = 4;
int sensitivity = 4;
int trip = 0;
int tripval = 0;
void setup()
{
pinMode(relaypin, OUTPUT);
pinMode(readyledPin, OUTPUT);
pinMode(chargeledPin, OUTPUT);
pinMode(trip, INPUT);
}
void loop()
{
sensitivity = analogRead(sensitivitypot);
sensitivity = map(sensitivity, 0, 1024, 0, 900);
sensitivity = constrain(sensitivity, 0, 900);
int lightLevel = analogRead(lightPin);
tripval = analogRead(trip);
if(lightLevel<sensitivity) {
digitalWrite(relaypin, HIGH);
digitalWrite(readyledPin, HIGH);
digitalWrite(chargeledPin, LOW);
delay(4000);
digitalWrite(relaypin, LOW);
digitalWrite(readyledPin, LOW);
digitalWrite(chargeledPin, HIGH);
}
if(tripval == HIGH) {
digitalWrite(relaypin, HIGH);
digitalWrite(readyledPin, HIGH);
digitalWrite(chargeledPin, LOW);
delay(4000);
digitalWrite(relaypin, LOW);
digitalWrite(readyledPin, LOW);
digitalWrite(chargeledPin, HIGH);
}
}
Step 6: Camera Flash
To use a disposable flash with the system we must alter it a little bit. A regular flash for photography constantly charges so that its ready whenever you are but a disposable camera flash has a charging switch so first thing I did was solder a wire across the charging switch. Secondly we will desolder the thin wires used to trigger the flash and solder some new wires there to connect to our relay. Lastly I desoldered the batter clip so I could put the battery in a better spot.
Step 7: Calibration and Final Thoughts
When you first turn the unit on both the ready and wait lights illuminate. I am not sure why this happens but what I do is turn the threshold pot all the way counter clockwise (very low threshold) which trips the relay then I dial it clockwise until the green ready light comes on. Once the ready light is on I very slowly turn the threshold back down until it trips again and then back it off just a hair. This seems to give me the best results. I can point the flash in the opposite direction of the unit and it still trips when I fire my flash.
I was originally planning on soldering the circuit all together and mounting it in a container of some type with 1/4" audio sockets. The disposable flashes would be mounted in some type of box that enabled me to direct the light as you would be able to with studio lights and they would have the 1/4" sockets on them as well enabling me to connect the slave flashes to the arduino control unit with a standard guitar cable but at the time of writing this ible haven't gotten around to it. So maybe someone will have a better idea?
Cheers

Participated in the
Hurricane Lasers Contest
13 Comments
8 years ago on Introduction
For a faster response:
1- Use a solid state relay or an opto coupler instead of that electromechanical one.
2- Use a schmitt trigger IC or comparator IC instead of the arduino, they are faster as they don't have to sample, convert to digital, compare, decide and output. May be keep the arduino for later use or use it to control a digital potentiometer to set the threshold level, display it with LEDs or 7- segment displays, controlled with an IR remote.
3- Have two 555s daisy chained together. The first senses the slave flash and waits a couple milliseconds till the capacitor is fully discharged, triggers the second 555 which triggers an opto coupler or solid state relay to activate the charging circuit to charge the capacitor for about 4 seconds.
4- A photo-transistor instead of the LDR, depending on the model of the transistor, it may be faster than the LDR to change value, you may want to experiment with that.
8 years ago on Introduction
For a faster response:
1- Use a solid state relay or an opto coupler instead of that electromechanical one.
2- Use a schmitt trigger IC or comparator IC instead of the arduino, they are faster as they don't have to sample, convert to digital, compare, decide and output. May be keep the arduino for later use or use it to control a digital potentiometer to set the threshold level, display it with LEDs or 7- segment displays, controlled with an IR remote.
3- Have two 555s daisy chained together. The first senses the slave flash and waits a couple milliseconds till the capacitor is fully discharged, triggers the second 555 which triggers an opto coupler or solid state relay to activate the charging circuit to charge the capacitor for about 4 seconds.
4- A photo-transistor instead of the LDR, depending on the model of the transistor, it may be faster than the LDR to change value, you may want to experiment with that.
9 years ago on Introduction
A very simple way to add a delay to a pre-flash camera is to use an rc time circuit on the output of D2 in this circuit to charge up a capacitor and bleed that voltage to turn on the relay. Just choose the R&C to add a proper delay to the transistor. When the flash is sensed from the phototransistor and triggers the d2 pin the voltage output from d2 doesn't charge up the cap instantly. Another simpler technique is to use a delay routine in the d2 output pin. use msdelay or similar to delay the output trigger for the specific desired response.
10 years ago on Introduction
You use film cameras. I had hoped you might discuss a slave flash triggering system for digital cameras with a built-in flash that emits pre-flashes.
Reply 10 years ago on Introduction
It would work with any type of flash, film or digital. Possibly even a strobe machine but I doubt it could keep up with the frequency of flashes.
Reply 10 years ago on Introduction
The problem with a digital camera using a flash with pre-flashes is that the slave trigger needs to ignore the pre-flashes and fire only on the flash that occurs when the shutter is open. The pre-flashes are intended to make the iris of the eye contract in order to reduce red eye, which is a reflection of the flash off of the blood vessels at the back of the eye.
Reply 10 years ago on Introduction
Hmm true, as I shoot with film I forgot that digital cameras do that. From what I can remember aren't the pre-flashes less intense? Maybe adjusting the threshold would make only the main flash trigger the slaves?
Reply 10 years ago on Introduction
I do not know as much about that as I would like. I expect the pre-flashes are weaker so that the most part of the flash's charge can be saved for illuminating the exposure. I once found a couple of circuits for building your own slave trigger to be used with a common digital camera emitting pre-flashes. One involved programming a logic chip and one did not. I tried building the second, although results may have been better with the programmable logic chip. The circuit I attempted had been tested with an oscilloscope by the author during its development, and he claimed it worked. He even had sample photos in his article to show that it worked. I was careful to follow the schematic closely, but mine did not work and I do not know why. Perhaps there was some difference in the number of pre-flashes between his camera and mine or some other thing. As I remember, there were two staged resistance/capacitance timer circuits, both of which filled to capacity in a series so that the third flash closed the switching device on the trigger circuit. Amazon has an inexpensive slave flash unit (about $15 US) with an adjustment dial to match the delay to the number of pre-flashes on the owner's camera. But, the customer reviews are overwhelmingly mixed and leaning to negative.
Reply 10 years ago on Introduction
Phil, I built a unit just with one logic IC a transistor and a thyristor, a photdiode and a few resistors and caps and it works perfectly. All on a very tiny piece of PCB. If you are interested, send me a message, I'll dig up the circuit.
Alternatively I bougt some cheap flashes that can skip several preflashes. Not sure if it is the same one as on Amazon, but I am very very happy with them. They work great. Got them at dealextreme: http://dx.com/p/digital-pro-slave-flash-black-2-aa-42436?item=1
Reply 10 years ago on Introduction
but let me add that indeed my circuit is just for 1 preflash. Should not be so hard to find out though how many preflashes yr cam has. The circuit I have worked on a number of nikon, konica, olympus, canon and konica camera's
Reply 10 years ago on Introduction
Thank you for your offer. I have given away my two Vivitar 283 units, so I probably will not be using any slave flashes on my Kodak z710 camera. Congratulations on working out a good solution.
Reply 10 years ago on Introduction
for those interested: https://www.instructables.com/id/Slaveflash-for-automatic-cameras-with-pre-flash/
Reply 10 years ago on Introduction
Ive only very briefly touched on logic chips in a class I took but not enough to work with. Based on my circuit I'm wondering if incorporating some type of delay between the light threshold being breached and the relay triggering would work? I have also seen those flash triggers on amazon and maybe if I had some lights to connect them to I would experiment with a couple but my lights are disposable camera flashes for now :P