I'm building a module to control my off-camera flashes based on a combination of input sensors (sound, vibration, motion, or a pushbutton) and a time-delay. Basically I want precise control for high-speed applications, such as waterdrops, bullets, and such. I've got a handle on configuring various inputs, and for now I'm just prototyping this with a simple pushbutton. The problem I'm having is getting the right output voltage. I've scoped my hotshoe and I know my camera puts out 3mA, so that's no problem since the Arduino does 40mA (or so I've read). However, no matter how I scope things, I can't get a reading for hotshoe voltage. I've got a pretty beefy multimeter, but it's not giving any results. I've heard that the sync voltage is 250V, so in my hardware implementation, would I just use V=IR with those values and choose an 83k resistor?
Here's my code in case any other photographers want to play with it. It works fine, I just need to get the hardware correct:
int flashPin = 9; // sends signal to off-camera flash
int buttonPin = 5; // wired to a pushbutton, in future will be modified to multiple types of inputs (sound, vibration, etc)
int confirmPin = 2; // illuminates over flashDelay duration
int recyclePin = 11; // allows time for flash to recycle
int readyPin = 12; // blinks when system is ready to go
int flashDelay = 500; // time between trigger and flash
void setup()
{
pinMode(flashPin, OUTPUT);
pinMode(recyclePin, OUTPUT);
pinMode(readyPin, OUTPUT);
pinMode(confirmPin, OUTPUT);
pinMode(buttonPin, INPUT);
}
void loop()
{
if(digitalRead(buttonPin))
{
digitalWrite(confirmPin, HIGH);
delay(flashDelay);
digitalWrite(confirmPin, LOW);
digitalWrite(flashPin, HIGH);
digitalWrite(flashPin, LOW);
recycleFlash();
}
else
{
readyFlash();
}
}
void recycleFlash() // blink 3 times
{
int outputdelay = 500 // use higher values for longer recycling times (i.e., higher flash outputs)
for(int i = 0; i < 3; i++)
{
digitalWrite(recyclePin, HIGH);
delay(ouputdelay);
digitalWrite(recyclePin, LOW);
delay(outputdelay);
}
return;
}
void readyFlash() // blink while ready
{
digitalWrite(readyPin, HIGH);
delay(200);
digitalWrite(readyPin, LOW);
delay(200);
}
Another question is the lines:
digitalWrite(flashPin, HIGH);
digitalWrite(flashPin, LOW);
Would that brief on/off be enough to trigger the flash, or should I have some sort of delaymicroseconds(xxx); in between them?
Future modifications include being able to directly input the delay time via serial monitor (or even 10-key / basic LCD screen) and the ability to select between multiple types of inputs.