Four line display alt - Cannot get anything on display

Problem:
Display displays nothing.
Encoder adjusts brightness. When encoder switch is pressed, encoder still adjusts brightness (my understanding is that the encoder switch/button should result in navigating some menu structure).
Settings in WLED indicate that both the encoder and the four line display are installed on the controller.

Display: Monochrome 1.3" 128x64 OLED SSD1306 from Adafruit. (I’ve tried 3 of them now, and have verified they work using a different controller). I use the STEMMA QT connection to female Dupont connectors.

QuinLED-digi-quad setup (I have also tried on the A1-SLWF-03 controller with no luck, the Digi-quad is more flexible though so I mostly use that) :

I have varied from using just a few LEDS for testing purposes as well as testing with a 30x17 LED matrix.

LEDS are WS2815 12V.
MeanWell 29A 12V power supply going into the dig-quad.

I have used the WLED online compiler to compile with both rotary_encoder_ui_ALT and four_line_display_ALT, in December, January, and now May.

I have compiled it myself using vscode and the platformio_override.ini. This was over the course of a few months, I’ve noticed that the platform_override.sample.ini has changed for those user mods. I’ve used the instructions on https://kno.wled.ge/ on how to make the override file as well and have tried to do that, including all the libraries I could find mentioned that would be necessary.

I downloaded one of the already compiled .bin files (WLED_0.16.0-alpha_esp32_display_dallas_rotary_encoder_battery_stat.bin) and that does not work for me either.

I’ve toggled on and off many of the settings (SleepMode, ClockMode, ShowSeconds, I2c Freq KHZ from 10 to 400 and in between, Contrast 10-100) all to no avail.

I bought the excamera labs I2Cdriver and hooked it up to try and identify if any I2C commands were being sent. It does not indicate there is any communication on the I2C channel.

I really don’t know what else to do. This seems like a simple thing to troubleshoot but I’ve been failing at it for a long time :frowning: I’ve searched through the discord as well as on reddit and google and nobody else seems to have as much trouble as I’m having. My old computer would only run OS10.X. Installing VScode and applications was causing problems and error since it wasn’t supported so I even upgraded to a new computer! All of the ancillary software installed fine on the M4 Mac mini. But still no display.

I’m not the best programmer but I’ve spent a lot of time and patience and am still struggling. My old LED setup I’m trying to replace was a Raspberry pi running processing and outputting to fadecandy for a 17x60 LED matrix. There were 5 encoders inputting to the pi that controlled HSV and some matrix parameters for the display. I like not having to look at my phone to make adjustments, which is why I am excited to figure out how to get the 4 line display and encoder working in WLED.

Have you considered the possibility that display may be broken?
If you have issues compiling correct binary use the ones provided by @srg74 at WLED-wemos-shield/resources/Firmware/@Aircoookie at master · srg74/WLED-wemos-shield · GitHub

Hi Blazoncek. Yes, I was worried my display was broken, so I bought 2 more displays. I also then used a different controller (QT PY) and was able to demonstrate that all 3 displays I have do display information when using the QT PY.

check for correct I2C address, oled displays come with several versions.

I think mine is 0x3D, I don’t see where to put that information into the user settings.

I downloaded one of the binaries from srg74 on March 31st (still no luck). It looks like there are newer ones so I will try one of those newer ones tonight.

check the source code of the usermod

Try fresh and tested binary WLED-wemos-shield/resources/Firmware/@Aircoookie/Dev/WLED_0.16.0-alpha_esp32_display_rotary_encoder_battery_stat.bin at master · srg74/WLED-wemos-shield · GitHub

I have several OLED displays SSD1306 (I2C and SPI variant) on my desk, all working, so the code is ok.
It must be your set-up, configuration or hardware.

Thank you all for taking the time to read and reply to this thread. Today I downloaded the freshest .bin files that srg74 made. Using the esptool I erased the board, flashed the boot loader and then flashed WLED_0.16.0-alpha_esp32_display_rotary_encoder_battery_stat.bin. I used the most basic ESP32 board from QuinLED (unplugged from the dig-quad). I plugged in only the 4 wires for the display. Nothing still. I tried all 3 displays that I have. I did plug in the wires for the encoder and that seems to be working. It adjusts the brightness, when I push a button it does nothing apparent via the web interface until I come back around to the brightness eventually and then it adjusts the brightness. This seems to indicate that, as best as I can tell without a screen, the encoder portion is working.

I tried a variety of pin options for the I2C and none of them worked. I reboot the ESP every time I make changes.

I will try another ESP board again, from some other supplier, and see what luck I have there. It seems like it really should just be working, and for some reason it is not.

Here is it hooked up to just the display and rotary encoder troubleshooting.

Check I2C pins settings. And make sure your display is a proper type e.g. SSD1306 or something else. Otherwise it is looks like that display is not compatible. So far we tested a lot of no name displays and everything was ok.

TLDR: Still no success :frowning:

Are there any I2C settings in a place other than Config>Usermods?

The displays do not state the specific driver directly on them. They are all Monochrome 1.3 128x64 OLED graphic display - STEMMA QT / Qwiic : ID 938 : Adafruit Industries, Unique & fun DIY electronics and kits which claims the SSD1306 driver chip.

The displays work when using the QT-PY and a demo program for the displays

When I plug it into the QuinLED-ESP32 I use these settings with the .bin file from srg74


Blue=SDA IO17, Yellow=SCL IO15. The screen has level shifters and can handle 5V or 3.3V power.

I have tried more than 5 combinations of different IO pins for I2C, rebooting after every change to the I2C pins. Still nothing works.

The configuration was downloaded for srg74. I flashed it multiple times, erasing the esp between uploads.

The hardware pins worked for the encoder rotation as inputs. It’s stripped down with no other ancillary circuitry. There are just 4 wires going to the display.

The display works when used with the QT-PY. I checked before I plugged it into the WLED board and after, with both plug options, and it still works now.

I have tried to be diligent but this is where I get to, where it still doesn’t work, and no clear culprit.

Do I need to go in and adjust the I2C address in the code like dedehai suggests? I will try this over the weekend when I have some more time.

Again, thank you for the time you are spending to read this and help me, and thank you for all the time that you put into this project and answering everyone’s questions!

You need pullup resistors on I2C.

The display board includes pull-up resistors. The board also has level shifters.

I tried adding some additional 1.8K pull-up resistors, and they did not make a difference. Still no display.

I bought 4 new screens, all different off of eBay. I also bought 2 different development boards and 2 new boards from QuinLED.

Using the development boards and the QuinLED board I can get all 4 of the new screens to work!

The Adafruit screen is not compatible, I could not get it to work. I tried the stemma QT connector as well as the pin header connectors. The screens work with other controllers so they are not broken, but they are not compatible with WLED right now. If anyone is curious I would be happy to send one to them in the mail.

Solution: Do not buy the Adafruit screen!

Thank you again everyone who chimed in to help! And thank you for spending all of the time to make these mods!