Model Train Switches


Please be patient…
Very much a novice don’t know much about electronics
however I do know what I want to do and it all points to the Maestro 18
I want to control individual servos for switcher tracks on my train layout.
that being said I am having trouble understanding the wiring diagram because I am so new
Here is what I have:
Single pole Double Throw Toggle Switches 3 Prong
Maestro 18 Assembled
1-100 ohm resisters
Mini servos 3 pin
6 volt in wall power cord
Looking for step by step instruction

I think I have what I need just don’t know how to assemble it

Hope someone can help many thanks in advance!
John “remember I am really a novice”

Hello, John.

I suggest starting slowly, such as just getting one switch connected and seeing the associated channel in the Maestro Control Center respond when you put it in the different positions. The first thing you will want to do is choose a channel for your switch and set the mode of that channel to “Input”, which you can do in the “Channel Settings” tab of the Maestro Control Center. Then, you can connect the switch to that channel.

It sounds like you have a 3-position switch; do you need the Maestro to uniquely register all three positions or just switch between two?

If you only need the Maestro to register 2 positions, you can connect the 3-position switch, you can connect it as we show under the “Button or switch” heading of the “Attaching Servos and Peripherals” section of the Maestro user’s guide. Note that we recommend using a resistor between 1kΩ and 100kΩ (10kΩ is common).


Thanks BrandonM
The toggle switches i have and would like to use are only 2 position with three leads under to connect to.
I just don’t know how it all connects together
since i know the 3 pins for the servo go to Channel O on the Maestro
where does the switch and resistor connect to?

Did you read through the “Button or switch” heading of the “Attaching Servos and Peripherals” section of the user’s guide that I linked to in my previous post? The diagram in that section shows how to connect a switch.

You can use a multimeter to check continuity of your switch to figure out how it behaves when it is toggled. With 3-position switches, the middle prong is typically connected and disconnected from the prongs on the either side of it as the switch is toggled. So, if that is the case, you could connect the middle prong of your switch to the signal pin of your Maestro channel, and one of the outer pins to the ground (GND) pin. Then, you would connect your pull-up resistor between the same signal pin and one of the available 5V pins on your 18-channel Maestro.

If you are still not confident about how you are connecting the switch, you can post a picture of your setup with it connected how you think they should be (before you apply power) and I would be glad to take a look.


Good Morning BrandonM

the Switch is a single pole double throw switch

it has two (2) “ON” positions (right and left)
nothing in the middle / there is no middle position

I will experiment more this weekend with everything you suggested
any other thoughts u have i will listen

Thanks so much John

Good Day BrandonM
So this weekend I will have all the parts assembled to hopefully attached to switch and the resistor to Channel 0

And according to your direction I will then watch what it does when I flip the switch back and forth

So my next question will be to control the servo that let’s say is on Channel 9 I’m assuming that’s in the programming if this is the case that songs a lot of my questions on how to wire the servo in which I assume is a three plug plug-in?

Yes, you should be able to see the associated slider in the “Status” tab of the Maestro Control Center reacting to the switch if it is connected correctly. Note that you will also have to configure that channel as an “Input” in the “Channel Settings” tab.

The “Attaching Servos and Peripherals” section of the Maestro user’s guide that I linked to in my previous posts has instructions for connecting a servo. You can attach the 3-wire servo connection to the desired channel, making sure it is in the correct orientation.

Please note that you will need to connect your servo power supply as well. You can find multiple methods for powering the Maestro and your servos in the “Powering the Maestro” section of the Maestro user’s guide.


So I’m following so far and getting better acquainted with everything just one last question before I try it

You saw my switch it has 3 leads and 2 positions (on and on) do I use the two ends or one end and one middle?

And the resistor goes on the power side NOT the ground?

I wait you response

And have a great weekend


John DiGiacomo

As I mentioned in my previous post, most switches with 3 leads will toggle connecting the middle lead to either outer lead, but you should do a continuity check with a multimeter if you are unsure. Essentially, you just want to find two leads that are connected in one position, and not in the other.

The resistor should go from the input channel’s signal pin to a 5V pin on the Maestro; then the switch goes from that same signal pin to ground. When the switch is off, the voltage at the signal pin will be high (5V) and when the switch is on, it will be low (0V).


Thanks Brandon so here’s my next question

Once I have everything hooked up and hooked up correctly hopefully question what tells the switch on Channel 1 to operate the servo on Channel 9?

As always thanks John

Once you can verify that the switch works correctly, you can start writing your script. This is what reads the switch and decides what the servo position should be. To get a better understanding of the Maestro scripting language, I recommend reading through the “Maestro Script Language Basics” section of the Maestro user’s guide, then looking over the “Command Reference” and “Example Scripts” sections.

If you get to the point where you are trying to write a script and have questions, please post the script you have so far or what particular part you have questions about.



Something is terribly wrong with the switch wiring

Resistor became really hot

Smelled it first then touched it

Very hot

Sent you pixs

Any suggestions

John DiGiacomo

ok Brandon,

First I hope the reply finds you all well??

Great news!

The switch is wired and the parameters go from Less than 3 to 255 as suggested
now I have the switch on channel 0 as an input and the servo on channel 6
I just can no get it to move at all.

I want it to go extreme left toggled one way and extreme right toggled the other way.
took a break for now awaiting your suggestion and I read threw the code and had to stop wasn’t getting it yet.
but I will eventually

Thanks again John!

Hello, John.

It sounds like you got the switch working now (hopefully nothing was broken when it was not working properly).

You will essentially want your script to check the switch, then use an “if” statement to send the servo to one of the positions based on the switch reading. The main commands you will use to do this are as follows:

GET_POSITION (to read the switch)
SERVO (to command the servo)

You can read more about these commands in the “Command Reference” section of the Maestro user’s guide. I suggest trying it out yourself by using the “Script” tab of the Maestro Control Center. The “Step Script” button at the bottom is very useful for stepping through the code one line at a time and getting a sense for what each command is doing.


hello Brandon,
Sorry for lag time I am an essential employee in food distribution been a little busy,
Glad to hear everyone safe though.
since we last talked the switch is working but have been hours and days trying to figure out this code to get one servo to work on command with the switch cant seem to find it
any help would be great.
All the on line articles and places on you’ve sent me are making no sense sorry.

I just know it can be done just can’t see it yet.


To make sure things were working properly and I didn’t do damage to the maestro for kicks I copied in the “Example Scripts” the moving servo to 5 different positions and got that to work
So if could just add a toggle switch to that and make it go one way and stop toggled left and the other way and stop toggled right would be great

Also wiring to switch and resistor was getting week so I redid it cause maybe resistor was week after heating it up a few times don’t have a bread board

Sorry if this is so primitive I’ve never done anything remotely close to this such a novice
Don’t want to give up though, I keep thinking I’m so very close.

Thanks John

Brandon,Staff, and Forum!

1 Like

Hello, John.

Happy Easter to you as well!

For a script that just moves 1 servo to one of two positions based on a switch, you can probably start with something that doesn’t use any subroutines (to keep it easy to follow).

The first part you will need to set up is the main BEGIN/REPEAT loop, which just looks like this:

   #your code goes here

Then, you can add the code for reading the channel you have your switch connected to. If you have it connected to channel 0, that would look something like this:

  0 get_position 500 less_than  #check if switch is on or off

    #do something with that reading


The final step would be using that reading to control the servo with an if statement. For a servo on channel 1, that would look like this:

  0 get_position 500 less_than

  if  4000 1 servo		#if switch is off, move servo 1 to position 4000 (1000us)	
      else 8000 1 servo	#otherwise, move servo 1 to position 8000 (2000us)
  endif			#close the if statement
  200 delay		#small delay

Note that you can change the 4000 and 8000 values in the code above to the actual positions you want the servo to go to based on your setup.


Good Day Brandon,
At this point I rewired a new switch and resistor to the Maestro.
Just to be on the safe side before I try the code you sent me.
I sometimes smell the resistor , and it seems to be getting a little hot,
Is this normal?
Maybe the resistor is not big enough?
Thanks for taking the time to write the code,

It is a little concerning that the resistor is getting hot enough to smell; what value resistor are you using? Could you post some pictures showing how you have it connected?