Write code to produce a pulsed output from an Arduino based on speed read from a GPS Module.
Ideally a Ublox NEO-7M-000 GPS module (10Hz refresh) interfaced to an Arduino Nano (ATMEGA328).
Design should produce an output compatible with vehicle speedometers (VSS pulse) and have a single push button to put in 'calibration' mode.
As default (first switch on) the output should be calibrated to 2000ppm (pulses per mile). When the calibration is held down it puts the module into program mode.
In program mode the output simulates 60mph. Holding the button down increases the ppm from 2000ppm in incremental steps of 100ppm. In that way a speedometer that expects 4000ppm can be calibrated. Once the needle reaches near to 60mph the button is used in single presses to increase by steps of 10ppm. Not operating the button, puts the unit back into normal operation. Once calibrated, the setting is saved (and should survive power cycles).
Calibration should be possible from 1000ppm to 16000ppm.