Jump to content

Switch panel programmable OLED labeling screens - DIY

Recommended Posts

All, this is a bit of a departure from my A10 related stuff and pertains to the fact that my rig, ultimately, is a multi purpose one.


One of the problems that I had was that I made a number of generic switch panels, which had fixed labels. This meant that if I assigned a control in one game, but used the same button for another control in another game, the labeling was wrong for one of them.


As a result I have designed and actually built a panel based on OLEDs that you can use when making custom button / encoder panels for universal use. Essentially, you can make (at the moment) a panel with 7 switches which would connect to either an Arduino or button box of your choice, and then mount a 128 x 64 OLED above the switch. They connect to an Arduino and this displays a unique bitmap icon or text on each OLED, which can be different for each OLED. Using a rotary switch you can then select which game you want (and another OLED shows the game you select), and each individual OLED will then change to reflect the icon or text that represents the switch use in game.


At the moment it is limited to 7 switch input displays plus the slected game display  (total 8 OLEDs due to the use of an i2C multiplexer, but apparently it would not be hard to expand that to more using additional multiplexers. 


I have mine running with a four position switch for my race sims, and so can switch through Assetto Corsa, Assetto Corsa Competizione, Automobilista and Automobilista 2. By exporting a 128 x 64 black and white bitmap made in MS Paint to a .c file (plenty of free online versions) then copying that into a custom .h file I have icons representing windscreen wipers, indicators, ABS, brake balance, anti-roll bars, traction control...... the list is limitless, although practically you do have to ensure the .h file doesn't get too big. However I think you could safely do 30 bmp's in the .h file, which should cover most things not dealt with elsewhere. 


The way I have it uses the switch rather than encoder that's just how I initially envisaged it; it probably could be modified to use push switches or encoders 


It is not high tech, the bill of material is the following

8 x 128 x 64 i2C OLED modules (ones compatible with the Adafruit1306 library, not Ug2)

1 x TCA9548A multiplexer  

1 x rotary switch with minimum 2 positions 

1 x 328 Nano ( the 168 ones have too little memory)

connectors and wires (I made a PCB with XH connectors)


The circuitry is pretty basic, I don't think it would be difficult for anyone with even a rudimentary knowledge of electrics and electronics to do. If you have used Arduinos before, you won't struggle,


The code is ready and working, albeit could probably do with tidying up, but I will try and edit it over the coming weeks to make it as easy as possible to modify with your own details, plus try and knock up some better instructions.


**edit** forgot to mention, this is completely freestanding, and once done just runs off a USB charger. No need for DCS Bios or any other program





Edited by lesthegrngo
Link to post
Share on other sites



This is very interesting. I've had rough similar ideas as this, but haven't gotten as far. I ended up going with a small USB touchscreen and HELIOS to basically do what you are proposing, but I still like this idea. 


It would be great if you put your code on Github.


This is my VRBox project: https://github.com/msdlogic/VR_Toggle_Box

One of the things I did that you might incorporate would be the DCSBIOS capability along with joystick emulation. It was pretty simple.

It's a lot of work to set up DCSBIOS, but it really gives you the best control over everything in the plane. It automatically switches the layout based on the aircraft you are flying. There are things you can do with DCSBIOS that you can't do with the standard input controls. For large sim pits.. DCSBIOS is the way as far as I know. Or Helios maybe.


I like VRBox because I fly a lot in VR and for me, I can locate the controls blind pretty well. I have some idea for refinement. It's about being able to find the controls blind.


Your project is interesting to me because I also fly in TrackIR and play other games that could use your sort of interface. DCSBIOS also has a capability to send indicator messages to hardware, so that you might be able to light up controls and things on your input device. It's a 2 way communication versus a joystick emulation. For example, if you could add standard bar indicators or warning lights, you could get information to display from the aircraft on the sort of multi-use display you are describing. 



AMD Ryzen 5 2600 / 1080Ti / 32 GB DDR4 / Rift S / TMWH

Link to post
Share on other sites

Thanks Matt


As this was primarily for use with other sims other than flight, the need to integrate it with DCS Bios wan't there, but of course there is nothing stopping us making a modified version with more bells and whistles to suit us. However for a fast and simple standalone solution for showing what a particular switch / encoder / button does in game for multiple games (or other programs that have inputs) it has the benefit of being simple and relatively cheap.  



Link to post
Share on other sites




This is just to show the OLED's working. The actual OLEDs themselves can be placed anywhere you want, although I will make a custom panel for my race sim rig. I just did a fast and dirty 3D printed fascia to show the OLEDs in place (size constraints of 3D printer meant 6  max), bear in mind they are only loosely held. Basically, as you either move the rotary switch, or press the appropriate application button, the individual OLED images change depending on the positon of the rotary switch, and you can allocate one OLED to display the app selected (like AMS2 or AMS above)

Each one of those labels is a little bitmap, really easy to make, and you can use any design or text that fits into a 128 x 64 pixel monochrome bitmap

Edited by lesthegrngo
Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Create New...