antiprism / mpd_oled

MPD, Volumio, RuneAudio and Moode OLED status and spectrum display for Raspberry Pi (and similar)
Other
168 stars 46 forks source link

Feature Request turned Bug: Prevent OLED Burn-In - Turn off display or screensaver after idle period #72

Open shamasis opened 3 years ago

shamasis commented 3 years ago

First off, I am a huge fan of the work done for Volumio and now the mpd_oled project. I understand the effort and love that goes into building something like this.

I would love to see a setting that allows the display to be turned off after a period of mid/volumio inactivity.

If I can figure it put, I will myself try and send a PR (but it seems too far off from my ability to get there.)

Burn-In Example

IMG_7800

antiprism commented 3 years ago

Hi

Thank you for your suggestion to add a screensaver. This has been previously been requested and I do intend to add it in (in my own case continually displaying the stop screen has led to screen burn).

I will be adding this to the development code

https://github.com/antiprism/mpd_oled_dev

I'll leave the issue open until the feature is available (but I cannot give a time frame for this).

Adrian.

petermolnar commented 1 year ago

I needed a quick and dirty solution for this until I have some time to get familiar with your code (I only added the display today), so I wrote a loop in bash that starts/stops the service depending if mpd is playing:

/usr/local/bin/mpd_oled_cron


#!/bin/bash

cntr=0

while /bin/true; do
  if mpc | grep -q playing; then
    cntr=0
    if [[ $(pgrep -c mpd_oled) -eq 0 ]] ; then
      systemctl start mpd_oled
    fi
  else
    if [[ $(pgrep -c mpd_oled) -gt 0 ]] ; then
      cntr=$((cntr+1))
    fi

    if [[ $cntr -gt 30 ]]; then
      systemctl stop mpd_oled
    fi
  fi
  sleep 2
done

/lib/systemd/system/mpd_oled_cron.service

[Unit]
Description=Starts/stops mpd_oled

[Service]
Type=simple
ExecStart=/bin/bash /usr/local/bin/mpd_oled_cron
Restart=always

[Install]
WantedBy=multi-user.target

Kind of a nuclear and rather ineffective solution, but if someone else really needs it, it works.

zsoltmar commented 1 year ago

I would love to have a ping-pong animation going on after say 10 minutes of inactivity. This would use all pixels and make the time readout undisturbed (which is pretty much the main function if not playing anything). This could work in conjunction with the screen invert timer.

shamasis commented 2 months ago

Hi @antiprism

After about 2 years of continuous run, I have gone through 3 displays. Keeping them on burns the clock image and after a while due to the burn-in, even normal scrolling texts are hard to read.

Here is a picture of a display that has run continuous, but for about 6 months. To demonstrate the impact, I have momentarily inverted the display before taking this picture IMG_7800

antiprism commented 2 months ago

Hi shamasis

I appreciate that burn-in is an issue, but I am no longer making any changes to this repository except for bugs that stop mpd_oled running (and only then if they are easy to fix).

Adrian.