Most athletes have trained and wanted a training partner that you could consistently pace off of.
What it does
An LED light runs across a strip. The speed at which the light moves is specified by the user. This Virtual Pacer other options as well that allow you to repeat certain training intervals, and even change the color of the light you train with.
How I built it
Users can input the speed they want to train at, the color of the Iight, and many other options with a GUI. The GUI is a windows application that is written in C#. From there data is sent from the application to the microcontroller via serial port. The microcontroller parses the incoming data and adjusts settings like light color and pace speed. The microcontroller then drives the LED strip. The microcontroller is an Arduino Mega and the drivers written on the Arduino are written in C.
Challenges I ran into
Arduinos provide a relatively simple way to control hardware. This makes writing drivers easy, but the downside is the amount of RAM and the clock speed of the CPU the microcontroller has relative to the average computer. The clock speed was not fast enough so the Arduino could not write serial data to the LED strip fast enough. Rather than trying to write more complicated code on a raspberry pi or other industrial grade microcontroller, the LED strip updates every 2 LEDS rather than just one at a time, this makes the light move at a faster rate despite the hardware limiting the amount of refreshes per second.
Another issue was powering 25 meters worth of LEDS. That consumes a lot of power, to fix this we only use primary colors (RGB) as they draw the least current. Turning down the brightness also reduces the current draw. Aside from addressing this issue in software, the hardware used converts 120V AC to 12V DC, and then a buck converter steps the voltage down to 5V. By allowing the LED to be driven to a 12V source yet stepped down to 5v ensures that there is enough voltage as voltage drops occur through out strip.