-
Hey there, I'm currently developing a mod for a pretty famous LED control software (WLED) which (in my specific case) runs on an ESP32 on an analog LED dimmer board. The hardware facts first:
So my issue is that after some time, the OLED "bugs out" / "flickers" / whatever u wanna call it. I made two videos showing what I mean:
This certainly looks like a buffer mismatch / overflow or paging issue. So I've tried all three different buffer modes already (1, 2 F), but same result. The time after this happens also is totally random. Sometimes on boot, sometimes after a few seconds, sometimes it takes minutes, sometimes it seems it's not happening at all. With the same routine updating the display. My code is a little bigger, but roughly explained it circles through three "pages", staying on one page for 10 seconds, each showing different information. One page is showing the current PWM on the LED outs (what you can see in the videos above), so constant redrawing. The other two are just "static" text, so drawn once and waiting 10 seconds / no redraw. Some snippets:
After this, I draw an XBM...
... then (within the loop()) I wait until three seconds have passed since then and then start drawing the "pages", but with 150ms of waiting in the loop() before I attempt to redraw:
Inside the oledShowNextPage() it looks roughly like this:
As mentioned, I've also tried the buffer modes 1 and 2, so in the above examples wherever there is a call to I'm currently clueless what else I can do ad hope somebody has seen this before or has a lead what could cause this. Greetings, Andy! |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 4 replies
-
If another call to oledDisplay->begin(); would recover your display, then it seems that the OLED looses some configuration values. I could imagine, that the PWM signal, which drives your LEDs, have a bad influence on the OLED display. |
Beta Was this translation helpful? Give feedback.
If another call to oledDisplay->begin(); would recover your display, then it seems that the OLED looses some configuration values.
Maybe you can call oledDisplay->begin(); every 10 seconds or so.
I could imagine, that the PWM signal, which drives your LEDs, have a bad influence on the OLED display.