Build The Ultimate Darkroom Timer – Part I

The goal of the Darkroom timer build is to make it without much fuss, it’s inexpensive and accessible to anyone with basic knowledge.

Darkroom timer are simple but don’t work the way they should. At least time based ones they are linear. Photography isn’t linear. F-Stops are logarithmic, i.e twice the light or half the light through the lens aperture. The enlarger is essential a camera in reserve. This easy to build darkroom timer will not only show exposure in time but it also display in F-Stops.

F- stop printing was originally made popular by the award winning printer Gene Nocon in 1987.  If you want the full explanation, you can find it in his book Photographic Printing (now out of print, but available on the second hand market), or you could take a look at this interview with him.  (If you aren’t ready just yet, for the DIY electronic build check out Bruce Tanner’s app)

It you got the cash check out this F-Stop timer by Filmomat

Back to building this really easy timer. I choose components which are off the shelf and that are easy to connect together. I wish to make this project without much soldering or any at all. The first part covers the timer, the next part will cover the higher voltage part such as the relay and power supply. Part one covers pretty much the main guts of the project. It based on the TM1638 module. This module has eight LEDs, eight push button switches and eight 7 segment display perfect when combine with an Arduino Uno or ESP 32.

Note: The sound buzzer and relay will be add in Part II also Purchase on ETSY limited quantity.

The feature set:

  • Time is incremented in F-Stops intervals
  • F-Stop Intervals can be set to 1/2, 1/3, 1/6, 1/12
  • Strip test function for six steps of 1/2, 1/3, 1/6 or 1/12
  • Display shows both F-Stops and time side by side
  • Simple one click interface
  • Pause/Cancel
  • Enlarger on/off control for focusing etc
  • Brightness is dimmed automatically when exposing.
  • Brightness can be adjusted in focusing mode.
  • The last time/F-Stop setting is automatically restored on power up.
  • Settings are stored in the device.
  • Supports foot pedal
  • Sound buzzer for each second and strip step.
Bug list and feature while I programming the F-Stop Timer
Bug list and feature while I programming the F-Stop Timer

Strip Test Procedure

The strip test procedure is simple without much complexity. There are three modes, full, halves and thirds of stops. The test is divided into six strips.



The photographic paper is split into six equal divisions by use of a piece of cardboard to block the light.

It operates as follows, set the mode to either half, third or sixth. Set the base time and then run the strip test procedure.

  1. Expose the entire paper to the base exposure
  2. Cover 5/6 of paper from the right hand side when you hear the beep
  3. Then move to 2/3 of paper again from the right when you hear the beep.
  4. Then half of paper
  5. Then 4/6 of paper
  6. Then the last strip 5/6.

The Build

It couldn’t be easier, five wires which usually come with the TM1638 7 Segment Display Keypad & LED nodule  are connected to an Arduino Uno board. That’s it.

Connect the TM1638 module to Arduino Uno as the below schematic

Wiring the TM1638 module with the Arduino UNO
Wiring the TM1638 module with the Arduino UNO

TM1638 7 Segment Display Keypad & LED nodule: This 8 digit seven segment display module uses a TM6138 controller allowing full control of the display using just 3 digital pins on a micro-controller. In addition to the seven segment display there are 8 individually controllable 3mm LEDs and a keypad with 8 push buttons arranged in a single row. These can also be controlled through the TM6138 IC and so require no extra digital pins. A standard 5 pin header provides easy interface to the module from microcontroller.

If you wish to use ESP 32 such as WEMOS

TM1638 with ESP 32 WEMOS board connections
TM1638 with ESP 32 WEMOS board connections

The Code

Once you’ve connected you Arduino or WEMOS up, it’s time to upload the Darkroom Timer code. The code is available from my GITHub Repo

Github :

Part List



More  in part II


This look brilliant, seem like a very simple build but has all the features you’d need. looking forward to part 2.

Hi Jan,

Thanks for your comment, sorry I didn’t see it sooner. Part two is now available! Still working on part three hopefully I’ll find someone to 3D print the box.


Hi Gavin,
Again a very useful blogpost / youtube video. I have ordered the parts. As a part of the waiting time I have been looking ay your videos. It is probably the short exposure times you use to use to demonstrate the strip test mode that fools me, but I can´t see the exponential progression in the time intervals used after the base exposure. It seems like the time increments are equal. I tried to examine the code, but to no avail 🙂

Hi Torleif,

Part two is now available, I’m trying to finish up Part III and the code is already has a lot of fixes too.
I hope to see how you get with the build.

Hi Gavin,
Thank you for the reply. I have viewed part II and looking forward to part III . Assembly of my own Adruino Uno based timer done – up and running. However – the strip mode is performing equal steps – not in f-stop mode. May be I am wrong here, but based on G. Nocon (p 148) the progression should be non-linear. Working on debugging the code.

Leave a Reply