All the software (the laptop, the USB master control module in the computer interface, the wireless throttles, etc.) is written in C/C++ using a custom drawing libraries. OpenGL library for the laptop and another custom graphics library for the OLED display in throttles for doing all the drawing.
Behind the scenes, I used Anyrail to design the track layout. Anyrail can export the layout to an XML file. I wrote another program to parse this XML file to allow me to draw the track over top of a background PNG also exported by Anyrail. Not shown on the screen capture, each track power driver has built-in occupancy detection which is by drawing the corresponding block on the display in white. Each track block is also drawn as red or green indicating direction (i.e. voltage polarity) if the throttle is turned up. There are also throttle positions on the left for all 15 blocks.
The only think I did not write were the routines to read/write BMP, JPG and PNG pictures. The terrain and structures on the screen captures is a PNG file exported from Anyrail.
I forgot about the analog PCB. In total there are four programs:
- The laptop master
- A pic18f4620 in the USB-to-I/O interface using a FTDI FT245RL
- A pic16f876 in the analog PCB to control each track block (PWM slow speed, DC medium/high speed, occupancy detect)
- A pic18f2620 in the wireless throttles using a nRF24L01+ radio
As for the signal tower, the interior lighting is pretty bright. I think the bigger problem is that the model came with the top half of the windows having shades painted on them.