Arduino Strobe Controller

So, we decided we wanted to use some strobes at the theatre this week. Unfortunately, we found them in a skip. They work fine, but there’s no remote control.

While the manufacturer (ANYtronics) does indeed provide their own controller, we wanted one in a hurry, so I put together a box which does the job quite nicely when all’s said and done.

At present it does:

  • Variable speed with preview
  • Keyswitch on/off
  • Momentary SPST trigger

It’s single-output for now. Considering the strobes have master/slave and can daisychain just fine, I didn’t see much point in doing this, at least for the initial version. The SPST momentary switch and keyswitch were both what I happened to have lying around in my box ‘o electronics stuff, and could easily be swapped for another solution. The SPST could be merged onto a switching rotary pot if you wanted to mimic the control on the back of the strobe precisely, but that wasn’t what I was aiming for- I wanted something that could be easily frobbed and adjusted in advance without having to guess at frequencies. That’s done via the three LEDs- green for power/system on (turns on with keyswitch), red for firing, and the third yellow LED pulsing exactly as the strobe would.

The whole job is fairly simple- it’s all active low TTL circuitry, using an Arduino Diecimila board as the brain. The Arduino manages the pulses, LED logic and switching logic.

The only complex bit of this came with the interfacing to the strobe.

The strobe’s interface is on a mono jack lead. After finding a socket, I needed to work out the pulse length and minimum interval. Given the specs list a 16FPS maximum, I settled on 64ms delay between pulses as a minimum. The pulse length I guessed at from the master-slave interface, again listed in the docs. Fortunately it seems the external trigger works on this too, so that ended up being the delay of choice therin. Code follows after the break.

To pulse the strobe we just need this little snippet of code.

// Function to send a pulse to the strobe which should trigger a flash
  1. // dly should not be below 64ms
  2. void pulseStrobe(int dly)
  3. {
  4.   digitalWrite(strobe_pin, HIGH); // Set the pin high
  5.   delay(10); // 10ms seems to be liked by the strobe
  6.   digitalWrite(strobe_pin, LOW); // Drop it back down
  7.   delay(dly); // Hold it till next execution
  8. }

In this I assume you’re constraining the value on read with map() or constrain() externally (I use a readInputs() function which is called once on the loop and once again on the key interrupt). You also need to have strobe_pin set to the Arduino digital pin which the strobe jack lead’s tip (hot) is connected. The sleeve of the jack lead should be connected to ground. If you have a TRS socket, don’t forget to join the ring and sleeve connections on the outside with a small wire to ensure a good connection is made.

The strobe for which I did this was the ANYtronics Superstar Strobe MkII, though this should work for all their strobes, slave or master versions. That said the speed limit I recommended above (at least 64ms between pulses) is not consistent across their range, so read the specs on their site first.