Shift Indicator using Arduino Nano

To make the shift point adjustable for the least amount of work, would be to add two buttons, one for increase, the other for decrease. The constant value used in my code would be changed to an EEPROM stored value. EEPROM retain values after unit is powered down. Adding a LCD would be slightly more work, but would aid in adjusting settings.

The same timer1 that is used to measure RPM, may also be used to control an output pin, based on a control register called output compare. That pin could be used for control of engine timing. Since the period is measured for 90 degrees, you know the counts for that, and easily retard timing. That is the basis for all the EFI/IGN control in my systems. Retarding timing burns the fuel, but cuts power. In EFI systems the fuel is cut, but ignition stays on. Rev limiting is smooth when done correctly.

Timers and compares let you control only in the future. Since timer is free running, a future control is done by adding timer ticks to the "now" time to set the compare point. This is like setting an alarm clock. The "now" time is the timer value that was captured at the edge by the input capture ISR. The program flow is like walking stepping stones....

To do a shift light and rev limit two different setpoints/compare points are required.