DIY Universal switch plate labeling using OLEDs - reprogrammable

All, this is a bit of a departure from my flight sim 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 selected 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 rotary 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 Arduino 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.

Cheers

Les
 
I've been playing around to see the functionality of this, and have verified that you can use press button switches to select the game. If you have one switch allocated to each game you want, it will register that press and latch over to the appropriate OLED map. This means that you do not have to use a rotary switch.

Les
 
Upvote 0
All, this is a bit of a departure from my flight sim 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 selected 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 rotary 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 Arduino 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.

Cheers

Les
interesting...and pics?
 
Upvote 0
I have to finish the tailor made fascia for the particular switches and the OLED fitment, but I'll take some pics of the OLEDs and circuitry in action and put them up here

The OLEDs are small enough that they can be fitted into small panels individually so your stitches don't have to all be in one place

Les
 
Upvote 0
20210223_113551.jpg
20210223_113609.jpg
Here are some pics of six OLEDs in a 3D printed fascia, I quickly knocked up the fascia and six was the max I could do due to the print size. Not one of my better designs or prints, but it's enough to show you the general idea, the OLEDs are only loosely held. The individual OLED images change depending on the positon of the rotary switch

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

Les
 
Last edited:
Upvote 0
The OLEDs are about 3 euros each, an Arduino Nano is about 6 euros, a multiplexer about 2 Euros, and a multi position switch another couple of euros. A six OLED setup like above would be less than 30 Euros. All the prices are quick searches for fleabay prices, and you can probably get cheaper by looking a bit closer. The wiring is simple, and if you wanted to do a good neat job you probably would spend 10 euros on connector wires and stuff, again all cheaply available on fleabay. That comes as a little kit, which would do way more than this one project

The only item that is not available is a PCB which I made myself as I'm a bit fussy, but honestly the wiring is so simple you don't need it.

Tomorrow I will list everything completely for you, and do a search of suitable stuff, including smaller and therefore cheaper OLEDs

Les
 
Upvote 0

What are you racing on?

  • Racing rig

    Votes: 528 35.2%
  • Motion rig

    Votes: 43 2.9%
  • Pull-out-rig

    Votes: 54 3.6%
  • Wheel stand

    Votes: 191 12.7%
  • My desktop

    Votes: 618 41.2%
  • Something else

    Votes: 66 4.4%
Back
Top