Project of the Day – Digital Competitive Shooting Range Timer

We have just finished working on a digital timer for competitive shooters to use at the range, but this type of timer could be turned to many different applications with minimal alteration.

In front of the shooter is a table with a pressure pad which detects the presence of a gun resting upon it. When the gun is lifted, the timer starts and the shooter attempts to hit each of five targets in turn. When the fifth and final target is hit, the target closes a micro-switch which stops the timer, and the time taken to hit the five targets is displayed.

Connecting diagram for arduino 7 segment 4 digit timerIn order to complete this project we needed an accurate timer and minimal wiring complexity, so we used the Arduino system but using its ATmega328 microcontroller chip as a standalone with external 16MHz clock crystal and capacitors, and an L7805 5V voltage regulator instead of using a full Arduino board.

The maximum time to be recorded by the timer is 90 seconds. (Typically shooters will have a limit of 50 seconds to hit all five targets, but may take up to 90 seconds initially.) We therefore needed a 4-digit display to show the seconds and hundredths of seconds of the elapsed time up to a maximum of 90:00.

Adafruit 7 segment 4 digit display with backpack

We chose the excellent Adafruit 7-segment 4-digit i2c display with Backpack. This device has its own chip which does all the hard work and means that only two output pins from the Arduino are needed to drive the display (clock and data) together with a 5V and 0V connection to power it.

The accuracy of the timer comes from using the Arduino millis() function which returns the number of milliseconds the sketch (program) has been running. The exact time when the gun is lifted from the pressure pad is noted, and each time the display is refreshed (every tenth of a second) the start time is subtracted from the current time to display the time elapsed since the shooter picked up the gun. When the final target is hit, the start time is subtracted from that time and left on the display until everything is reset for the next shooter.

If you need something like this please email

Leave a Reply