Dual oled screens + more

Yes. And the address you specify for the controller must match the address you set for the display.

where is this done at? the oled address is resistor based. Mine says C9 or R5.

Some quick googling makes it seem as though the common 128x32 SSD1306 boards don’t breakout the pin(s) needed to change the address. The common recommendations are an I2C multiplexer… maybe @profezzorn has a better idea in that regard.

ok so I actually mispoke… lol That ( missing) resistor is an unmounted R5. I suspect that this is for 3.3V operation i.e. to bypass the AMS1117-3.3 regulator. So you @ryryog25 are correct that there appears to be no way to change the I2c address ion these particular screens… unless Im missing something… @profezzorn ?

just in case, here is the oled screen in question…
oledscreen

maybe a multiplexer would be the only way…

Some screens do have little solder bridges for changing the address, not sure how you find those though.

I’ve never used an i2c multiplexer, so I have no idea how difficult it is to get that to work.

In theory, it should be possible to use another i2c bus for the second display, but I’m not sure the right pads are available, especially on a V2 board. Also, it would require some code changes, possibly a lot of code changes.

Understandable. Not sure if coding/recoding is even worth the time or effort , unless EVERY saber /blaster builder is requesting this function. But its simply not the case.

Which screens did you have the “dual screen” setup in mind for? Maybe I should get two of those?

There has been users who have fiddled with dual screens before, don’t remember what kind of screens they used though.

Looking around, I can’t seem to find any 128x32 screens which lets you change the i2c address. However, there are some 128x64 screens that supports it.

gotcha yeah I was hoping to use the typical “saber” style screens since these are what most of use are accustomed to using anyway… I really appreciate you looking and taking the time… maybe Ill hold off until OS8 and then use the tft style that you have been developing. Meanwhile, I will try the code you supplied along with the updated master and try it with a multiplexer and post my results here :slight_smile:

Seems like i2c multiplexers would also require some coding. Although it looks like it might be fairly simple.

@profezzorn can you post a link to the latest Master? (that has the code change you provided? )
Thanks!!

I purchased a multiplexer and it seems the chip on the multiplexer itself does the address change based on which pin you wire the oleds to. I could be wrong but hopefully should work with your code change. I am eager to try it once it gets here on Wed.

GitHub - profezzorn/ProffieOS: Lightsaber Controller Software (green button, download code)

Thank you kindly!

ok rediculous question… but where do I add this code? or is it already added in the new master?

you’ll add it to the CONFIG_BOTTOM section, this page shows how, even if the actual example is different:

1 Like

perfect! thank you!

like this? (below the buttons config?)

#ifdef CONFIG_BUTTONS
Button PowerButton(BUTTON_POWER, powerButtonPin, "pow");

#endif

#ifdef CONFIG_BOTTOM
StandardDisplayController<128, uint32_t, STRTYPE("A/")> display_controller;
SSD1306Template<128, uint32_t, DISPLAY_POWER_PINS> display(&display_controller);

StandardDisplayController<128, uint32_t, STRTYPE("B/")> display_controller2;
SSD1306Template<128, uint32_t, DISPLAY_POWER_PINS> display2(&display_controller2, 0x3D);
#endif

Yes.
This code assumes that one display is 0x3c and the other is 0x3d though.