I want to share with you my Arduino based finish line for Pinewood Derby races. It interfaces with the Grand Prix race manager (which schedules races, and displays statistics). It was very inexpensive to build ($42, including the Arduino) because it has few parts. The detector circuits are very simple, as are the LED displays. It was designed to be used on either 2 or 4 lane tracks (specified on 1 line of code).
It can be used with either manual starting (shown below), or solenoid starting gates with minor modification.
The LED's are programmed to display system health and status, as well as finish order on both sides of the finish line (not necessary with GrandPrix, but cool to have). The finish order can even indicate a tie for extremely close races (some other people's timers randomly pick a 'winner').
The Arduino continuously monitors the hardware. If the track is not ready for a race, it indicates where the problem is. This feature saved us a LOT of time last year when problems cropped up. This is indicated with blink patterns. For example, a slow steady blink means the system is alive and ready. An urgent rapid blinking means that there is a problem and the system is not ready to race.
Times are reported to the GrandPrix race manager to the nearest millisecond. There are provisions in the Arduino software to measure latency, so you can verify that the timing is accurate (you do this from the Arduino text console).
I have more information on Google Sites including build notes:
I also made a list of parts for you on Mouser if you'd like to build one:
I hope you enjoy it as much as I did!
-Kip