Triggering Arduino with Camera sync cord or other approaches

Hello everyone,

My name is Alessandro and this is my first post on the forum.
I apology in advance in case there was a presentation thread opened but, browsing with my phone I couldn’t find it.

I am an Arduino novice so please excuse me in case I might say something silly or obvious but I have done my best to experiment and research online before writing here.

I am approaching a new project where I would need to trigger a stepper motor with Arduino when I click on my camera (more specifically a Canon 5Ds).
All I could find online has been various versions of “how to trigger a camera with Arduino” but never the other way aroud.

I was wondering if it would be possible to trigger Arduino with a Sync Cord (the old fashioned way of triggering flashes) or if any of you might have a more intelligent and easier solution.

Many thanks for your help,

My very best,


IF your sync cord, what ever that is, is a switch like a push button switch, then yes, that would work with an Arduino. All depends on your program in the arduino.


Yes, a flash sync connection is just like a simple switch that closes to trigger the flash. I am not sure if it is electrically isolated from the camera or not, but either way it is possible to connect to an input on the arduino.

Then best to measure it so you know for sure. Is the sync cord a shielded wire with a single central wire? Does the cord have a voltage on it that is grounded to operate? Or does it supply a voltage when in operation? Is it a steady voltage or is it a pulse?


Maybe an easier solution is to let the Arduino control the servo AND trigger the camera? You just need to add a button to the Arduino.


thank you for all your replies!

The sync cord I am taliking about is "a cable with a standardised coaxial PC (for Prontor/Compur) 3.5 mm (1/8") connector[1] (as defined in ISO 519[2])" (from: Flash synchronization - Wikipedia).
I am not an expert at all about electronics so I don't know wheter it is electronically isolated from the camera or not or what are the volt specifications.

After a longer research last night on this forum I found this topic (Control Arduino with Canon Camera - Project Guidance - Arduino Forum) where someone talked about PC cords and Arduino.
User Bjhund said:
"The trigger pin on the canon flash is 5 volt to ground.
I guess the camera hot shoe is optoisolated from the camera sinse there is never a voltage on the shoe. only resistance (4-5 ohm).
So, i connected my camera to the arduino, and found out that the shoe is "high" all the time the camera takes a picture." then continues: "A Not all time 5v. it is all time connected while taking pict. It works like a switch."

Somebody, instead of using directly the PC socket on the camera, used something like this to get the signal from the hotshoe mount: Pixel TF-334 Adattatore hot-shoe flash con porta di connessione PC per fotocamere Canon EOS.: Elettronica
Would it work the same?

So, apparently it is possible to do it, my questions are...

  • How do I connect the PC Sync cable to Arduino?
    I guess I would need to cut one end of the cable and I expect there are two cables inside that must be connected one to a PIN one to GND?
  • Is there a risk of damaging the camera doing so?
  • I read somewhere that people where using something called INTERRUPT to read the signal (I guess is something similar to what is normally used for rotary encoders), is it correct? How should it work? Sorry I tried to read online but it is still a bit unclear to me...

Thank you very much for your precious help!

My very best,


PS: I thought of triggering the camera with Arduino but for the convenience of how I should use this thing I really need to use the camera trigger. Thanks for the idea!

Traditionally, it was a mechanical contact and the flash was - in the early days - an incandescent (very incandescent) bulb and later a small capacitor charged to 100V positive which when shorted to ground, discharged through a pulse transformer and generated the high voltage to fire the main flash tube.

But I suspect those flash units have long since gone and most probably fire with a low voltage corresponding to the - likely rechargeable - battery voltage. It would generally still be a transistor switch in the camera to ground a positive voltage. The outer sleeve of the coaxial connector should be ground and the inner wire, positive.

I suggest you ground the ground wire to your Arduino ground, connect the active wire to the cathode of a diode whose anode goes to a 1k pull-up resistor on the Arduino input. A second diode is connected cathode to the trigger input and anode to ground.

Actually, I will draw that for you. :grinning:
So ...
D1 prevents a higher voltage being applied to the Arduino input but allows it to pull down to ground when the "contact" is closed.

D2 prevents a voltage less than (negative to) ground being applied to the Arduino input at any time.



way way way too kind, BIG THANK YOU, I would have never figured that out...!!!

So, just to be sure I got it right and I don't burn anything...
I will do the connections as you suggested directly using the camera Sync Cord port (not the Sync Cord adapter to be mounted on the hot shoe - where the flash should go).
Would you suggest to cut one end of the Sync Cord and use directly those cables to to the connections or there is an adapter | smarter way of proceeding.

I guess the input pin should be either number 2 or 3 so to use "interrupt" in the code?

Have you, by chance, any reference I might look at for coding this?
I tried to google a bit but I couldn't really find anything I was able to understand properly...sorry, I am probably to novice to face this project by myself...

Once again, big big thank you!

My best,


I would reasonably expect that if it is a coaxial connector for the Sync cord, it is the same connections as the "hot shoe" and like the earphone socket on a radio, plugging in the Sync cord simply disconnects the hot shoe mount so it does not interfere when a flash is mounted. So that sounds OK.

You will presumably need to "sacrifice" a Sync cable because you will not be able to buy just the connector to the camera. You can get solderable connectors for common power jacks and audio cables, but not for camera connections. I imagine you can get the cables cheap on eBay.

There is a lot of rubbish talked about interrupts. Just forget about reading such rubbish. :astonished:

Your code will be continuously cycling through the loop(), While it waits for the flash signal it will be doing nothing else, the first action in the loop will be to test the input corresponding to the flash. If that has not occurred, it will simply skip the remainder of the loop and the loop will cycle back and the test will occur again.

This will happen - cycle around - within a few microseconds so it will be checking the input extremely frequently. And actually, the test for that input will not be the first action in the loop but the second because the loop will first test for an "arming" switch - a variable that tells whether it is actually ready to perform the action when the flash is tripped or whether it is instead doing other things in preparation such as waiting for a command or moving the stepper to the start position. In any case it will be an extremely fast response, much faster than causing the stepper motor to start to move.

Dear Paul_B,

thanks again for your kind support!

I am not sure wether connecting the Sync Cord directly to the Sync Cord socket in the camera would disable the Hot Shoe (if I place a flash on it and use a sync cord in the socket they both work at the same time) but, unless this would be dangerous for the camera, it wouldn't be certainly a problem for me.

Sacrificing a Sync cable is surely not a problem, also because I would, most likely, need to make it shorter in any case...

My code for the moment works as follow:

  • I have a continuous loop where I set three variables with the relative rotary encoders which show on an I2C display to control the behave of a stepper motor.
  • When I push a button (now a button on the breadboard, eventually it will be the camera trigger) the stepper motor will move accordingly to the previously set variables.

So, following the scheme you already posted, assuming I am using as Arduino Input PIN 13, shall I just write something like:

const byte TRIGGER = 13;
byte triggerstate;

void setup() {


void loop() {
triggerstate = digitalRead(TRIGGER);

if(triggerstate == HIGH) {
//Here the code for the stepper motor to move


Is this sufficient?

Thank you very much and probably sorry for such easy questions..!!

My Best,


I found a PC Sync Cord that terminates with a 3.5mm jack connector: JACK

Do you think it would work if I use this splitter: SPLITTER
To split the two internat signal (5V and Ground).

And then these to plug them in and redirect the two cables to arduino: SOCKETS

What do you think?

No, the 3.5 mm jack connector already has the two connections (and there are only two) split out - you just need a socket to put it in. The sleeve of the connector is your ground and the tip is your control or "trigger" wire.

Sorry, can't work on your code ATM. :roll_eyes:

No worries at all, even just a suggestion would be great whenever you could!

Thank you very much!

My best,



today I should finally receive the picese I was missing to complete the project as you kindly suggested and I will keep you updated.

In the meantime I've tried to take a reading of the PC Sync on the camera while the camera was shooting and I've got a reading of ".555 V" (more or less) during the whole time the shutter was open.
I'm not an expert of multimeter as well, so please feel free to correct me in case I might have done something wrong.

I attach some pictures to show you:
Multimeter screen
Cable Contacts

Can I connect everything as you suggested in the previous scheme and read it as a normal digital PIN Input, just as if it was a button?

Many many thanks,


OK, so I was mildly puzzled about the logos on your third photo which do not match the advertising material I found regarding the Canon 5Ds as the order of the three connections for microphone, shutter remote and flash are different!

Nevertheless you clearly are monitoring the flash connector. 0.55 V sounds like the voltage across a bipolar transistor turned on by a base current. What is the voltage is with the shutter closed? If it is 5 V then it is clearly not isolated from the camera electronics but the circuit I gave would also be correct for an interface.

If it is other than 5 V, then what is it? It would be logical to measure it as resistance with shutter closed and open.

Hello Paul,

yes, you are right, this is a 5DMKII, my older camera, I got this one for testing just in case...
But I guess a PC Sync works always the same...

I've tried to take the reading you asked me, I hope I got it right:

Volt - Shutter Closed
Resistance - Shutter Closed
Resistance - Shutter Open

Shall I proceed with the circuit you gave me?

THANK YOU VERY MUCH!!! :slight_smile: :slight_smile: :slight_smile:

Hmm. Interesting. I presume "0.L" is the same indication on the Ohms range when nothing is connected.

The 1.9 / 2.0 V reading is again, a trifle curious, but clearly it makes a connection when the shutter is open and no evident connection when closed, so the interface circuit should be fine and as I originally stated, should provide adequate protection to both Arduino and camera.

Thank you again,

Yes, that 0.L is the same reading I get when the two probes are not touching each other.
Sorry for not specify that but I thought it was some sort of standard in multimeters, I am not an expert at all..

I've taken the reading also on the 5Ds and they are slightly different but, I guess, it would make no difference.

Here they are:

Volt Shutter Open

Resistance Shutter Open

Resistance Shutter Closed

Thank you very much!


I just wanted to let you know that I made the circuit, a rapid sketch, and it works absolutely great!


Could I use the same circuit on an arduino nano?