hd-zero / hdzero-goggle

MIT License
263 stars 76 forks source link

OLED burnin and static image protection #342

Closed SumolX closed 1 year ago

SumolX commented 1 year ago

Performs two levels of orbiting the OSD in order to minimize screen burn-in and static image retention.

image

SumolX commented 1 year ago

Noticed some graphical anomalies when switching between live and menu.... setting PR to draft.

stefan74xxx commented 11 months ago

@SumolX: Just a small question - does this orbit-function "only" work on HDZero-ui elements or although for the BetaFlight ones (like battery voltage)? Because the last ones will although "burn in" after some time. Sorry, tried to understand the code, but not fully sure...

SumolX commented 11 months ago

Anything written to the framebuffer will have orbiting applied with the exclusion of the live feed as that is written directly to the oled panels via the FPGA. I believe the betaflight fonts are loaded and processed via the goggle application and not directly via the FPGA. If that is the case, then the orbiting should also apply to in-flight fonts as well as it would utilize the framebuffer.... but I'm not 100% sure. If you are comfortable with making modifications.... you can speed up the orbit by lowering the value from 500 to 100 and then test it out.

https://github.com/hd-zero/hdzero-goggle/blob/main/src/ui/ui_porting.c#L44

stefan74xxx commented 11 months ago

Thanks for the response! Will see if i can successfully compile a firmware and give it a shot ...

stefan74xxx commented 11 months ago

Hi - just an update: HDZero and BetaFlight OSD elements are moved by the orbit function - as expected by your explanation.

Another idea to reduce the OLED burnin problem even more "OLED burnin: Change color of OSD-elements in Google Menu" as issue #383