Intro: NeedForSpeed Style Shiftlight for Your Car
I like the OEM shift light in Subaru Impreza STI where you have a small LED inside your tachometer. So I decided to make something similar for my Ford Mondeo MK1 (same instrument cluster as in Mondeo MK2 and Ford Contour MK2) but with RGB LED to make it Need For Speed Underground style. Remember those drag races? Trying to hit the perfect shift...
All I needed was:
- Arduino Uno
- RGB LED
- Buzzer (from old PC case)
Step 1: Tachometer Modification
I had to remove instrument cluster from the car and disassemble it. I was afraid that everything was printed directly on the tachometer but happily it wasn't (BTW you can remove green paint to change the look and feel of your instrument cluster).
Before removing needles it's good to remove the 0 RPM stopper, let the needle drop and mark the place that it lands. That way it's much easier to set it in correct position when assembling everything together.
Then I made a hole in the tachometer for the RGB LED.
Step 2: Hardware (RGB LED and Buzzer)
With sanding paper i modified the LED to have a flat top. I wanted it to fit perfectly to the tachometer surface.
Whats even more important I did not wanted the light to flash directly in my eyes so the LED lens was now matte from the sand paper. To be sure that the light will diffuse I found little round transparent sticker.
RGB was connected to PWM pins so i could fully adjust each color and brightness.
Buzzer had a long wire so I placed it near air vents just to be sure that I can hear it with high revs.
Step 3: Software
Since each car uses different signal type and frequency for tachometer you have to figure it out for yourself. In my case there were square signals, 12V and GND in 50/50 proportion.
I don't have much experience with programming, so at first I was going to count the 12V pulses and based on that calculate engine speed. But at high revs this was taking too much of the calculating power so i switched to measuring each pulse duration. Shorter pulse = higher RPM.
When my real-time RPM reading part of the code was completed I just had to make some conditions for the LED color and behavior.
- Green (good shift) - 4400 to 5335 RPM
- Blue (perfect shift) - 5335 to 5665 RPM
- Red (too late) - 5665 to 6050 RPM
- Flashing red with buzzer (dangerously high RPM) - 6050 RPM and higher
- Flashing yellow (no signal) - 0 to 300 RPM
Check the attached code to better understand what I did and how it works.