Arduino Model Railroading – Scale Speedometer

Share on facebook
Share on google
Share on twitter
Share on linkedin
A VPN is an essential component of IT security, whether you’re just starting a business or are already up and running. Most business interactions and transactions happen online and VPN

The guys at the Model Railroad Club wanted a scale speedometer displaying the scale speed of the train as it passes a point on the layout. I’m using two IR transceivers connected to an arduino to detect the time it takes to pass between 2 points, and then displaying the scale speed.

Currently we are using the Serial Monitor, but Part 2 will be about the 3 seven segment display and I2C port expander used to drive them.

The circuit diagram is the same as the one we posted here, but just doubled.


int sensor1 = 4;
int sensor2 = 5;
bool s1Covered;
bool s2Covered;
float start, finish, elapsed, miles, hours, mph, scaleMPH;
float distance = 24; //inches between sensors
int started=0, finished=0;
int scale=87;

void setup() {
  // put your setup code here, to run once:
  pinMode(sensor1, INPUT);
  pinMode(sensor2, INPUT);

void loop() {
  // put your main code here, to run repeatedly:

    if (s1Covered==0 && started==0){

    if (s2Covered==0 && started==1){
  elapsed = finish-start; // millis

  elapsed = elapsed /1000; // seconds
  Serial.print(“Seconds: “);
  miles = distance / 63360; // miles
  hours = elapsed / 3600; // hours
  mph = miles / hours;
  scaleMPH = mph * scale;
  Serial.print(“Scale MPH: “);

Steve Spence

Steve Spence

Leave a Reply

6 thoughts on “Arduino Model Railroading – Scale Speedometer”

  1. i am very new to arduino and trains, im running n scale.i copied your code and got an error code saying…exit status 1;and redefination of 'void setup()'. could you help me with this ? thanks

    1. Richard van Raay

      That’s very nice of you Steve. I hope you both got it sorted.
      Looks like a great tool for my model railway. When I downloaded the sketch I got error comment Stray 342. I just retyped the lines and deleted the old ones. I tested it and am now waiting on some parts to build it.
      Thanks for the information. You are very kind.

Leave a Comment

Your email address will not be published. Required fields are marked *