This Blog describes the ongoing development of a 16mm scale 45mm gauge garden railway situated in the North West of England, UK from 2004 to the present day.
This blog describes ongoing progress in the development of a G gauge / 15mm scale / 1:20.32 / Fn3 scale Garden Railway from its inception to the present day.
NEW (October 2025)
The Fruit Special Train (featuring containerisation)
When I became interested in building my own garden railway I spent a considerable amount of time (and money) on books, videos, DVDs and scouring the internet for information, ideas and inspiration. When I eventually started construction, I used some of the ideas I had discovered, but also experimented with my own approaches. This blog outlines how I have gone about constructing my own garden railway. My aim is to provide the sort of information I was looking for when I was getting started, and also to share what I've learned (or 'borrowed' from others). I've tried to include a few 'How I ........' postings interspersed with occasional 'Progress Reports'. I do not profess to be any kind of expert - what I offer here is an opportunity for you to metaphorically look over my shoulder to see how I have gone (and am going) about this fascinating hobby.
As this is a blog, the various posts are presented in reverse chronological order (ie the most recent first). To see a categorised list of contents, go to the Blog Contents Page.
If you are thinking about building your own garden railway, then why not join the 16mm Association or the G Scale Society - you'll get plenty more advice and opportunities to visit other peoples' garden railways. Alternatively, browse through theG Scale Central website - there's plenty more guidance here and an opportunity to sound out the views of others through the G Scale Central discussion forum or the GardenRails.org forum
The Blog
The advantages of blogging are that it is immediate and uncomplicated when creating and uploading information. The other, of course, is that with Blogger it is free. The major disadvantage is that I have minimal control over how the postings are presented. The blogging system adds the most recent information to the start of the blog, hence the postings appear in reverse chronological order (most recent first, oldest last). Whilst there is a list of postings on the right-hand side, it's not particularly easy to see what is there. This introduction is an attempt to provide you with a contents list of the postings organised into categories so, hopefully, you see if what you are looking for is presented in this blog. To ensure that it always appears at the start of the blog, I update its content and set its presentation date into the future each time I add a new posting.
Originally, the sounds in my Ford(ish) railbus were provided by a cheap MP3
player with each track being triggered by flicking a switch on the transmitter
to move forwards and back through the various sound effects (See
How I used an MP3 Player as a soundcard). This was a bit cumbersome and there was a one second gap as each new track
was played.
More recently, I replaced with antiquated MP3 player with a
DF Player Mini module (See
How I used a DF Mini Player as a sound card). This has many similarities to the old MP3 Player in that it includes an
amplifier and also plays tracks from a Micro SD Card. Its advantage is
that it plays .WAV tracks with no noticeable gap when it loops a track or
switches to another. Its disadvantage was that the tracks still needed to be
triggered by flicking a switch on the transmitter and, as with the MP3 Player,
the horn could bot be sounded separately.
So, I speculated about using an Arduino microprocessor to automate some
of the switching of tracks and also providing the much-needed horn sounds. I
had previously used Arduino to provide radio control and sound effects for a
diesel loco (see
Arduino-based radio control). However, the radio control seemed a bit twitchy compared with my
Deltang/Micron based system and was not as precise. However, I gained
some useful experience in using an Arduino to switch MP3 tracks on a
DF Player Mini.
Armed with this knowledge (my blog is useful in reminding me how I did
something previously), I explored writing some similar code which would
respond to the input from the ESC on the DeltangRx61b
receiver/controller used in the railbus.
Voltage Divider
The first step was to transform the motor output from the ESC on the
Deltang receiver into something suitable for an Arduino analogue
input. Whereas, the ESC provides 0 - 12v PWM output, the Arduino can only
measure 0 - 5v input. Furthermore, the motor supply from the ESC is reversible
and so this needed to be rectified for the Arduino analogue input.
Fortunately, my mate in Australia is a dab hand with electronics and so guided
me through the voltage divider circuitry needed to convert the 0 - 12v
reversible PWM input into a more acceptable 0 - 5v output.
Note: R2 = 80/(Vb-8) kΩ. IF Vb is less than 8V you don't need R2.
So, with my supply voltage being around 12v, R2 = 80/(12-8)k = 20kΩ
Alternatively, you could purchase a ready made DFR0051 analogue voltage
divider module from Farnell at around £3.50 GBP (at current prices).
Connecting up the Arduino
I used an Arduino Nano as I had a couple in stock and also there is
plenty of space beneath the roof of the railbus to accommodate it.
VIN - connects to the 5v output from a voltage regulator
GND - connects to the negative (0v) output from the battery or voltage
regulator
A0 - connects to the output from the voltage divider above
D8 - connects to Pad 5 on the Deltang Rx61b (via a 1k resistor)
D10 - connects to Tx on the DF Player Mini
D11 - connects to Rx on the DF Player Mini (via a 1k resistor)
NOTE: If you decide to use two sets of batteries - one for the motor and one for
the electronics, make sure the negative leads for both batteries are
connected.
Connecting up the DF Player Mini
VCC - connects to the 5v positive
output from either the voltage regulator or the Arduino Nano
GND - connects to the negative (0v) output from the battery or voltage
regulator
Tx - connects to D10 on the Arduino Nano
Rx - connects to D11 on the Arduino Nano (via a 1k resistor)
SPK_1 - connects to an 8Ω speaker
SPK_2 - connects to an 8Ω speaker
I connected a Li-ion 3S battery pack, a Micron MR603, a motor, the
voltage regulator, the voltage divider circuitry, the Arduino Nano, the DF
Player Mini and a speaker together on a breadboard so that I could use it to
test my Arduino code.
NOTE: The Rx61b is a very early incarnation of Deltang's RC equipment for trains and did not have the facility to re-program 0v outputs on its pads. Consequently, the output from Pad 5 needed to be passed through a transistor inverter circuit to switch the 3.3v output to a 0v output to trigger the Arduino. I maybe could have adjusted the code to sense this input, but the inverter circuitry already existed in the original version of the sound system. Micron and later Deltang receivers can be programmed to give 0v outputs but, if you need to know the circuitry for the inverter see - How I trigger sounds with a Deltang Rx65 receiver.
The sound effects
The next job was to edit the sound files needed. Fortunately, I had
already purchased a series of suitable sound files of a Ford Model A car from the
StockMusic.com website and so was
able to incorporate these with other sounds captured from YouTube with
Audacity - a free open source audio editing package. See -
How I used Audacity to create sounds for my railbus
- for more information.
I ended up with ten sound files:
Track 001 = Engine start (6 sec)
Track 002 = Idle (24 sec)
Track 003 = Idle plus horn (1 sec)
Track 004 = Accelerate to cruise (31 sec)
Track 005 = Cruise (1 min 19 sec)
Track 006 = Cruise plus horn (2 sec)
Track 007 = Decelerate to idle (12 sec)
Track 008 = Engine off (3 sec)
Track 009 = Horn (1 sec)
Track 010 = Silence (15 sec)
These were copied on to a 512Mb Micro SD Card. I have found that, not
only do the files have to be numbered correctly - ie 001, 002, 003, 004 etc
- they have to be copied to the card in the correct order, otherwise the DF
Player gets confused. Also, it is advisable to reformat the card before
saving the files to it.
I'm sorry, but I can't share my sound files as this would infringe the
copyright agreement for the files I downloaded from
StockMusic.com
The code
I am no coding expert. I make copious use of the online reference
facility on the Arduino website and search online for pieces of code to do
specific jobs (eg to differentiate between a short press and long press of a
digital (push button) input). The beauty of coding is that you can keep trying
things out and, if it doesn't work as you expect, you can edit it and try
again - you get instant feedback.
OK, it is a bit more complicated than that as sometimes, you have no idea why
what you've written doesn't work and so you have to research the internet for
a better way of doing it, but the more you try, the better at it you become.
Here's the entire code for the sound
/* Arduino connections A0 - Motor input from voltage divider circuit DO NOT connect directly to motor leads!! D8 - 0v trigger for horn (short press) and engine start/stop (long press) D10 - Tx on DF Player Mini D11 - via 1k resistor to Rx on DF Player Mini VIN - 5v +ve GND - Ground (same as for Arduino)
int analogPin = A0; // ESC through voltage divider int Ch5Pin = 8; // 0v trigger for Horn (short press) and engine on/off (long press ) - Ch5 on Deltang or Micron Rx and Tx int Lights = 1; // Flag - 0 = lights off - 1 = lights on int Horn = 1; int Engine = 1; const int SHORT_PRESS_TIME = 1000; // Duration for long press on horn / engine trigger - 1000 milliseconds = 1 second
bool ch5Triggered = false; // the previous state from the input pin to test for short or long press int currentState; // the current reading from the input pin unsigned long pressedTime = 0; // When the horn/engine trigger was pushed unsigned long releasedTime = 0; // When it was released
int val = 0; //Current value of ESC output (subtracted from 1023 as Micron / Deltang ESC starts high and goes lower as speed increases) int maxval = 0; //Max value of output from ESC (as this will vary dependent on charge in battery pack) int minval = 1023; //Min value of output from ESC (How high the throttle reaches) int currentTrack = 10; //Track currently playing (starts off with silence)
void setup() { Serial.begin(9600); mySerial.begin(9600); myMP3.begin(mySerial); pinMode (Ch5Pin, INPUT_PULLUP); // Sets the horn / engine trigger to high initially delay(1000); // Helps prevent any falso triggers myMP3.loop(10); // Loop play silence }
void loop() {
currentState = digitalRead(Ch5Pin);// read the state of the horn / engine trigger input
if(currentState == LOW && !ch5Triggered) { // trigger button has been pressed ch5Triggered = true; pressedTime = millis(); // When the button was pressed } if(currentState == HIGH && ch5Triggered) { // button is released ch5Triggered = false; releasedTime = millis(); // When the button was released
long pressDuration = releasedTime - pressedTime;
if(pressDuration < SHORT_PRESS_TIME ) Horn = 0; // Sets the horn flag to 0 else Engine = 0; // Sets the engine flag to 0 }
val = analogRead(analogPin); // Read the input level from the ESC voltage divider circuit (NB 0 - 1023) if(val>maxval) maxval=val; // Records the max input level if(val<minval) minval=val; // Records min input
if (Engine == 0 && currentTrack == 10) { // If long press and current track is silence myMP3.play(1); // then play engine start delay(6000); // length of the engine start track (ie six seconds) myMP3.loop(2); //Now loop the idle sound track currentTrack = 2; Engine = 1; // Resets the long press trigger flag }
if (Engine == 0 && currentTrack == 2){ // If long press and current track is idle sound .... myMP3.play(8); // .... then play the engine cut off track currentTrack = 10; delay(3000); // Length of the engine cut off track (ie 3 seconds) Engine = 1; // Reset the long press trigger flag }
if (Horn == 0 && currentTrack == 2){ //If short press and current track is idle sound ..... myMP3.play(3); //.... then play the idle + horn track delay(1800); // Length of the horn + idle track (ie 1.8 seconds) myMP3.loop(2); // Carry on looping the idle sound track Horn = 1; // Reset the short press trigger flag }
if (Horn == 0 && currentTrack == 5){ // If short press and current track is cruise sound .... myMP3.play(6); // .... then play the cruise plus horn sound .... delay(2000); // ... for two seconds .... myMP3.loop(5); // .... and then carry on looping the cruise sound track Horn = 1; // Reset the short press trigger flag }
if (Horn == 0 && currentTrack == 10){ // If short press and current track is silence ..... myMP3.play(9); // .... then play the horn sound delay(1500); // ... for 1.5 seconds .... myMP3.loop(10); // ... then carry on looping silence Horn = 1; //Reset the short press triggee flag }
if(val < maxval - 10 && currentTrack == 2) { //If the input from the ESC voltage divider drops 10 units below the max value while idling .... myMP3.play(4); // ... then play the acceleration sound track .... delay(29000); // ... for 29 seconds .... myMP3.loop(5); // ... and then play the cruise sound track currentTrack = 5; val = 0; //Reset the input value to 0 to prevent triggering the next if loop }
if (val > minval+ 120 && currentTrack == 5){ //If crusing and the input value from the ESC rises 120 units above the minimum value ... myMP3.play(7); // ... then play the deceleration track .... delay(12000); // ... for 12 seconds .... myMP3.loop(2);// ....and then play the engine idle sound... currentTrack = 2; minval = 1023; // Reset the minimum input value .... maxval = 0; // ... and the maximim input value (just in case!) } Engine = 1; //Reset long press flag if it is pressed and triggers nothing Horn = 1; // Ditto for short press flag delay(100); //To help reduce false readings
}
Hopefully, the comments alongside each of the statements help explain how the
code works.
If you decide to follow in my footsteps, you will have to tweak the timings
and the variables to suit your sound files and the ESC output values to match
the characteristics of your motor and model.
Once the railbus has been turned on, a long press on the bind button (Channel
5 input) will trigger the engine start sound and then loop the engine idle
sound. At any point, a short press on the bind button will sound the relevant
horn sound file. A small turn of the throttle knob on the transmitter will
make the gear grinding and acceleration sound file start. once this has
finished the cruising sound file starts. Reducing the speed of the railbus to
around half will trigger the deceleration sound file which then loops the idle
sound. A long press of the bind button while the idle sound in playing will
trigger the engine cut-off file to start which then leads to the silent sound
file looping.
It actually took me nearly two weeks to perfect the code. Even so, it's not
perfect and I might experiment with a revised version of it sometime in the
future, but for now it seems to work.
Costs
Arduino Nano = c£4.50 GBP (eBay) or c£1.99GBP (AliExpress)
DF Player Mini = c£4.00 GBP (eBay) or c£1.00GBP (AliExpress)
The DF Player Mini sound module has been around for quite a few years. It is modestly priced (c£3.50GBP on eBay or less than £2.00GBP on AliExpress), and is very versatile.
Basically, it is a compact MP3 player which can access tracks stored on a Micro SD card. What makes it particularly useful for use as a soundcard is that it has a built-in audio amplifier which will power a 3W speaker. Its operational voltage range is 3.2v - 5v and so will need to be connected to a voltage regulator if used with locos with a higher voltage battery pack (or track power).
VCC is the positive (+ve) input and either of the GND pins are the negative (-ve) input. The speaker is connected to SPK_1 and SPK_2.
Tracks stored on the SD card are played in the order in which they were uploaded to the card and need to be numbered 001, 002, 003, etc. They can be in .MP3 or .WAV format. .WAV files are better for our purposes as they can be accessed or looped with a hardly noticeable gap between them. The module can accept cards up to 32Gb and so can potentially access thousands of sound files. However, I only needed a couple of files and so used a 521Mb card.
It has been designed to interface with microprocessors such as Arduino but, for my purposes, sound files on the SD card can be triggered by connecting various pins to Ground (ie 0v or the negative side of the battery used to power it).
For simple soundcard purposes, the most useful pins are:
IO1 - Short press = Play previous track - Long press = Decrease volume
IO2 - Short press = Play next track - Long press = Increase volume
ADKEY_1 = Play first track (and loop if held down)
ADKEY_2 = Play fifth track (and loop it)
However, by connecting resistors to the ADKEYs particular tracks can be played or functions selected.
Armed with this knowledge, I was now in a position to create a simple soundcard for my IP Engineering Simplex loco.
Creating the sound files
Firstly, I needed to track down some suitable sound files. I would need the sound of a Simplex loco running at a fairly constant speed, and also the sound of a Simplex loco's fairly distinctive horn.
Browsing through dozens of videos on YouTube, I eventually located a couple of clips with segments which would suit my purposes. I captured the relevant sounds using Audacity, a free, open-source sound editing package.
By changing Arduino's Audio Set-up, I could record the sound while the video played on my browser.
NOTE: I amplify the output from my laptop computer through the headphone jack. If you use only your computer's speakers, then select that option as the source for your recording.
I then highlighted a section of the recording which I felt was most appropriate for my needs, .......
.... and exported that Current Selection as a Mono WAV file.
I could now store this file on an SD Card (as 001) and then loop it using ADKEY_1 connected to ground to provide continuous sound for my loco.
Adding a horn sound
However, I also wanted to add a hooter or horn sound, triggered by pressing the Bind button on any of my Deltang or Micron transmitters.
After tracking down a section of video which featured a typical Simplex loco horn sound, I exported the short segment from Audacity (as above) and then re-opened the file of the steady Simplex engine sound which I had saved earlier.
I then imported .......
..... the short segment of horn sound which appeared on a new track below the steady engine sound track.
I moved the horn sound track slightly to the right and then trimmed the steady engine sound so it was slightly longer than the horn sound track. As you can see, the combined tracks last slightly under one second in total.
The new combined sounds were then exported as a WAV file.
The reason for overlaying the horn sound on to the steady engine note is so that when the horn sounds, the engine sound continues in the background.
To allow the two files to be played and triggered, I had to make use of the ADKEYs ability to trigger separate tracks using resistor inputs. This also required the tracks on the SD card to be arranged accordingly.
I found that, not only did I need to delete the original WAV file, I also had to reformat the SD card otherwise the sound files wouldn't play properly. The horn sound was loaded first on to the card and renamed 001.wav . The steady engine sound was uploaded second and renamed 002.wav .
The link from GND to ADKEY_1 was replaced with a 3k resistor (so Track 2 on the card would be played continuosly) and a link from ADKEY_1 to pad C on the Deltang Rx65b receiver was made. Pad C gives 0v output when the bind button is pressed on the transmitter (ie Channel 5)
So, when the loco is first turned on, the 3k resistor from ground to ADKEY_1 makes DF Player loop Track 2 (the steady engine sound) but when the bind button is pressed on the transmitter, the receiver connects ADKEY_1 to ground directly and so, while the bind button is being held down, track 1 (ie the horn sound) is looped.
Although it has been six months since my last progress report, there have been only a few developments. The early part of the year is a slack period for garden railways in general as the weather isn't always conducive to getting outside. Once spring comes, there is the annual battle with cutting back the undergrowth and keeping the tracks clear. This year, plant growth has been even more vigorous than usual, with what seems like just the right combination of rain and sunshine.
However, there have been a few developments. In terms of motive power, another loco has joined the fleet - a 3D printed Manning Wardle 0-4-0T loco. I have converted a few locos from track power to battery powered radio control. Beeston Market station has undergone a makeover and various other cosmetic enhancements have appeared on the railway.
Rolling Stock
Manning Wardle 0-4-0T
After seeing an illustration of a charming little three-foot gauge Manning Wardle loco in "Stone and
Steam in the Black Mountains" by David Tipper .....
..... I tracked down (with help) a couple of photos of the original loco and set to work designing and 3D printing out the parts needed to construct it.
The gearing on the Bachmann chassis block I hoped to use for it proved unreliable and so I had to resort to my now favoured approach to motorising my locos, using a GA25-370 geared motor and bevel gears.
It has now entered service as loco #29, ENZO.....
..... and seems to be working reliably.
More information on the design process and construction can be found here:
There seems to be some scepticism among fellow modellers as to the efficacy of using such a simple tool as Tinkercad for 3D model construction but, to be honest, I find it does what I need to do reliably and easily. If it ain't broke .....
Battery / RC conversions
I have also carried out a few battery/RC conversions for other people.
Most recently, I have converted an 0 gauge Bachmann / EFE Hudswell Clarke 0-6-0T loco using three lipo cells and a Micron MR601 receiver controller.
In addition, I converted three G Scale Bachmann Big Hauler 4-6-0 "ten wheelers" to battery/RC, using Micron MR603c receiver/controllers with Micron MSND01 soundcards and 18650 li-ion 3S battery packs.
There haven't been any further developments in terms of rolling stock, though over the summer, I might continue to slowly replace some of my older early bashed freelance goods rolling stock with more recent 3D printed models based on actual prototypes from, for example, the Southwold Railway.
Lineside and infrastructure
Detailing the approach to Beeston Market station
When I rebuilt Beeston Market station and the Copper Mine last year, (see How I replaced the baseboards at Beeston Market Station), I reorganised the track layout to gain a bit more space in the sidings. Unfortunately, this sacrificed the forecourt of the station where the café stood.
After some quick measurements, I realised I could just squeeze in an extra foot or so of baseboard at the end of the station without interfering with wheelbarrow access to the rear of the garage. And so work commenced.
I found sufficient offcuts of fence rails and heavy-duty roofing felt to complete the job (I have whole heaps of stuff which might one day come in handy). The café has now been re-instated and faces forward, so its facade is much more evident.
In addition, 3D printed fencing and gates have been added, together with the goods office.
I feel the changes have now much improved the look of this end of the station.
Relocating the signal cabin at Beeston Market
At the same time, I rehoused the signal cabin at the other end of the station which too had lost its original location owing to the changes in track formation.
Repainting the station buildings
I had noticed in various videos of the line I made last year that most of the station buildings around the line were looking decidedly tired and unloved.
As they were cast in resin, I leave most of my station buildings out all year. The only one I do take in is Beeston Market Station building. It took a good two or three days of painstaking cleaning, rubbing down and repainting before the buildings took on a much fresher and cared-for appearance.
I have now decided to only deploy almost all my station buildings only during running sessions. The exception being Beeston Castle where the station building is bedded in concrete and so is not removable (without the risk of cracking the resin).
Operation
I have been experimenting with making my own sound cards - but with mixed success. I did manage to create a very basic steam sound card using a ESP32 microprocessor and code created by ChatGPT, however it was extremely rudimentary with an intermittent white noise generated hiss.
Experiments to program a more sophisticated sound system using digitised chuffs from real locomotives has proven to be very elusive. The ChatGPT code simply did not work, despite several tweaks and iterations.
However, I have gone back to very simple sound systems designed for use in greetings cards for some of my smaller diesel locos and have found they are quite satisfactory.
Operating sessions
The majority of videos I've made and posted on YouTube since my last Progress Report have been to test locos and conversions. However, in March, I did manage to find sufficient dry weather to have a running session which included a special sawmill train.
In addition, I took the opportunity to give my most recent loco a role in a full operating session (as seen above) and create a retrospective of how freight traffic has been handled over the years on the PLR
Recently, I needed to reprogram a Micron MR603 receiver so it could be used to trigger all the sound effects on a Micron Mini Sound module (MSND01). As this module uses the same firmware as MyLocoSoundmodules, this reprogramming would also be appropriate for these.
The sound module has seven functions triggered by inputs on seven pads (or screw terminals):
.... which has two two-way switches and two push-buttons for triggering outputs from the receiver, ....
S1 A - sends Channel 3 high
S1 B - sends Channel 3 low
S2 - sends Channel 4 low
S3 C - sends Channel 7 high
S4 D - sends Channel 7 low
Bind button - sends Channel 5 low
.... thus allowing all six of the additional sounds on the Micron or MyLocoSound modules to be triggered.
The Micron MR603 has ten output pads which, as delivered, provide the following outputs:
P1 - Front light / LED2
P2 - Rear light
P3 - 0v - 3.3v when Channel 3 is low
P4 - 0v - 3.3v when Channel 3 is high
P5 - 0v - 3.3v when Channel 5 is low
P6 - 3.3v - 0v when Channel 5 is low
A - Front light
B - Rear light
C - 0v - 3.3v when Channel 5 is low
D - 0v - Toggle 3.3v/0v when Channel 5 is low
The Micron Mini sound card inputs (and the MyLocoSound inputs) are trigged when they are connected to 0v and so, to make use of all the features, I needed to change some of the outputs from the pads to give 0v when the channels used by the buttons and switches on the Tx22X went high or low.
So, I decided to reprogram the receiver's output pads as follows:
P1 - Unchanged (i.e. Front light)
P2 - Unchanged (i.e. Rear light - not used)
P3 - 0v when Channel 3 is low (i.e. when S1 A is clicked on the Tx)
P4 - 0v when Channel 3 is high (i.e. when S1 B is clicked on the Tx)
P5 - 0v when Channel 4 is low (i.e. when S2 on the Tx is pressed)
P6 - Unchanged (i.e. 0v when Channel 5 is low (i.e. the bind button is pressed on the Tx))
A - Unchanged (i.e. Front light - not used)
B - Unchanged (i.e. Rear light - not used)
C - 0v when Channel 7 is low (i.e. when S3 C is clicked on the Tx)
D - 0v when Channel 7 is high (i.e. when S3 D is clicked on the Tx)
This is probably the part of the process which most people find confusing, so I will try to describe how it works as clearly as I can.
Let's take the changes needed for P3 as an example. The pad needs to be reprogrammed so that it provides a 0v output when the receiver detects that Channel 3 has gone low.
So, working our way across the section of the table shown above:
The first value we need to note down is 3 which tells the receiver we want to reprogram an on/off feature
Moving to the next column, we need to tell the receiver we want to reprogram pad 3. So 3 is our next value to be noted.
Moving to the third column, we want the output from the pad to be momentary - i.e. we only want the output to happen while the button or switch on the transmitters is being pressed or clicked. As soon as the button is released the output from the pad will revert to whatever it was doing when the receiver was switched on. So, our next value is 1.
The fourth column, specifies the Channel we will be using. In this case it is Channel 3 and so 3 is the next value to be noted.
The final column specifies what sort of output we want dependent on the state of the selected Channel. We want the output to start high (on) but switch to low (off) when the Channel goes low. So, we want this value to be 4 (i.e. When Channel 3 goes low, turn off the pad (i.e. it has 0v output))
So, the reprogramming code we need for this change is - 3, 3, 1, 3, 4
Let's skip to the last output in our list, Pad D. This needs to provide a 0v output when Channel 7 goes high.
Again, our first value is 3, indicating we want to reprogram an on/off setting
This time we want to reprogram Pad D - so we note down our next value as 10
Again, we want the output to be momentary, and so our third value is 1
We are using Channel 7, so our next value will be 7
And finally, as we want a 0v output when Channel 7 goes high, the value we need is 6
The coding for this change is therefore: 3, 10, 1, 7, 6
So, on this basis, the codes needed for each of the pads which need to be reprogrammed are:
P3 - 3, 3, 1, 3, 4 (for 0v when Channel 3 is low)
P4 - 3, 4, 1, 3, 6 (for 0v when Channel 3 is high)
P5 - 3, 5, 1, 4, 4 (for 0v when Channel 4 is low)
C - 3, 9, 1, 7, 4 (for 0v when Channel 7 is low)
D - 3, 10, 1, 7, 6 (for 0v when Channel 7 is high)
Putting the receiver into programming mode
To actually make these changes, we firstly need to make sure the MR603 receiver has been bound to a transmitter which has a reversing switch (i.e. which can give a high and low output on Channel 3). In the Micron range, this would include:
To put the receiver into reprogramming mode, the transmitter and receiver must be switched on. After a few seconds, the morse code for SOS (dot, dot, dot, dash, dash, dash, dot, dot, dot) has to be tapped out on the bind button. The dots must be less than a second in duration and the dashes more than a second but less than five seconds. The pauses between dots and dashes must be less than 5 seconds.
When the receiver has entered programming mode, its LED will flash once every second (referred to as 1-flash)
Reprogramming
We can now start the reprogramming process.
Taking our first set of values needed to reprogram Pad 3 (i.e. 3, 3, 1, 3, 4), we need to change that initial 1-flash to a 3-flash (i.e. three one second flashes, followed by a pause). To increment the number of flashes, the reversing switch on the transmitter need to be moved to the "reverse" or "down" position and then returned to the mid-position. Clicking it once will increase the flash-count by one. Clicking it again will increase the flash-count by another one. Thus, the LED should now be flashing three times before a pause. This is the value we need for the first code in our list (i.e. telling the receiver that we want to reprogram an on/off setting). To tell the receiver to "accept" that value, we move the reversing switch to "forward" or "up".
The LED will now start flashing once per second. We need to it flash three times, so we increment the number of flashes twice (by clicking the reverse switch twice in the "reverse" or "down" direction). Once it has reached 3-flash (three flashes then pausing), we "accept" this by clicking the reverse switch "forward" or "up". This tells the receiver we want to reprogram Pad 3.
LED should now flash 1-flash again (because Pad 3 is already set for momentary on/off). So we just click the reverse switch forward or up to accept this value.
The LED should now start flashing 3-flash, as P3 is already set to respond to Channel 3. So click the reverse switch to forward or up to accept this.
Finally, the LED should now start flashing 1-flash as the default for P3 is to give a 3.3v output (i.e. go high) when Channel 3 goes low. We need to change this to start high and go low when Ch3 goes low, so we need to change this value to 4-flash by incrementing the flashes by three reverse or down clicks and then accepting the 4-flash by clicking forward or up.
If you accidentally increment the number of flashes by too many, then keep incrementing until the LED reverts to 1-flash, then increment to the desired value.
After entering the final value in our list, the LED should stop flashing and revert to solidly on.
To program another pad, we need to re-enter programming mode with the SOS morse code sequence on the bind button.
All that might sound a bit daunting but, once you've done it a couple of times, it is really easy - albeit slightly tedious.
Here's proof that all that effort is worthwhile.
Deltang or RC Trains transmitters
Deltang or RC Trains receivers with reversing switches can also be used to reprogram Micron receivers provided they will bind with the receiver. Some of the very early Deltang receivers are unable to bind with Micron receivers and will need their transmitter boards replacing to enable them to do so. This is a job which can be done by Andy at Micronor by Phil at RC Trains. Alternative, if you are handy with a soldering-iron, it is a relatively straightforward job you can do yourself, once you have purchased the Micron transmitter module.