This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
comfilepi:controlling_the_lcd_backlight:index [2023/09/14 12:55] COMFILE Technology [Synchronizing the Backlight with the X11 Screensaver] |
comfilepi:controlling_the_lcd_backlight:index [2023/09/19 14:33] COMFILE Technology [Bash Script Implementation] |
||
---|---|---|---|
Line 246: | Line 246: | ||
} | } | ||
</code> | </code> | ||
+ | |||
==== Compile ==== | ==== Compile ==== | ||
Line 263: | Line 264: | ||
#!/bin/bash | #!/bin/bash | ||
- | export DISPLAY=":0.0" | + | PWM_PIN=31 |
- | + | PIN=34 | |
- | PIN=34 # CPi-A/B/F/S | + | |
- | #PIN=44 # CPi-C | + | |
+ | # Set pins as output | ||
+ | raspi-gpio set $PWM_PIN op | ||
raspi-gpio set $PIN op | raspi-gpio set $PIN op | ||
+ | |||
+ | # Start with both pins HIGH. If either of the | ||
+ | # pins go LOW, the backlight will turn off. | ||
+ | raspi-gpio set $PWM_PIN dh | ||
+ | raspi-gpio set $PIN dh | ||
+ | |||
+ | # Get the current state | ||
+ | CURRENT_STATUS=$(xset q | grep "Monitor is" | awk '{print $3}') | ||
+ | LAST_STATUS=$CURRENT_STATUS | ||
+ | |||
+ | logger -p info -t "backlight_service" -s "Monitor is $CURRENT_STATUS" | ||
# Loop indefinitely updating backlight in sync with monitor status | # Loop indefinitely updating backlight in sync with monitor status | ||
Line 274: | Line 286: | ||
# Check the current monitor status | # Check the current monitor status | ||
- | current_status=$(xset q | grep "Monitor is" | awk '{print $3}') | + | CURRENT_STATUS=$(xset q | grep "Monitor is" | awk '{print $3}') |
- | # Control backlight pin according to the monitor status | + | # Only turn the backlight on/off if the Monitor state has changed |
- | if [ "$current_status" = "On" ]; then | + | if [ "$CURRENT_STATUS" != "$LAST_STATUS" ]; then |
- | raspi-gpio set $PIN dh | + | logger -p info -t "backlight_service" -s "Monitor is $CURRENT_STATUS" |
- | else | + | |
- | raspi-gpio set $PIN dl | + | # Control backlight pin according to the monitor status |
+ | if [ "$CURRENT_STATUS" = "On" ]; then | ||
+ | logger -p info -t "backlight_service" -s "Turning Backlight On" | ||
+ | raspi-gpio set $PIN dh | ||
+ | else | ||
+ | logger -p info -t "backlight_service" -s "Turning Backlight Off" | ||
+ | raspi-gpio set $PIN dl | ||
+ | fi | ||
+ | LAST_STATUS=$CURRENT_STATUS | ||
fi | fi | ||
Line 294: | Line 314: | ||
Add the line ''@xset dpms 0 0 {timeout_in_seconds}'' to the //autostart// file to set the timeout each time the desktop loads. | Add the line ''@xset dpms 0 0 {timeout_in_seconds}'' to the //autostart// file to set the timeout each time the desktop loads. | ||
+ | |||
+ | Run ''journalctl -t backlight_service -r'' to view the log entries. | ||