ラズパイ公式7インチタッチディスプレイを手に入れました。
ディスプレイの輝度調整が簡単にできないのでPythonにてスクリプトを作成しました。
本資料では、本スクリプトの紹介および使い方とスクリプトの仕組みを紹介します。
ラズベリーパイ公式7インチタッチディスプレイの輝度調整用スクリプトは以下の通りです。
他のディスプレイでも輝度調整のPATHを確認すれば(同じ?)同様に動作すると思います。
(HDMI接続除く)
スライダーを動かすとディスプレイの輝度が変化します。
デスクトップ全体のキャプチャです。
輝度調整のPythonスクリプトは以下の通りです。
スクリプト:brightness.zip
#!/usr/bin/python3 import subprocess from tkinter import * PASSWORD="" #PASSWORD="raspberrypi" BRIGHTNESS_PATH='/sys/class/backlight/rpi_backlight/brightness' FROM=15 TO=255 def get_brightness(): if '' == PASSWORD: cmd = 'sudo sh -c "cat ' + BRIGHTNESS_PATH + '"' else: cmd = 'echo "' + PASSWORD + '" | sudo -S sh -c "cat ' + BRIGHTNESS_PATH + '"' p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout_data, stderr_data = p.communicate() return stdout_data.decode('ascii').strip() def set_brightness(self): v = str(var.get()) if '' == PASSWORD: cmd = 'sudo sh -c "echo ' + v + ' > ' + BRIGHTNESS_PATH + '"' else: cmd = 'echo "' + PASSWORD + '" | ' + 'sudo -S sh -c "echo ' + v + ' > ' + BRIGHTNESS_PATH + '"' p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) #print("Debug:" + cmd) stdout_data, stderr_data = p.communicate() root = Tk() var = IntVar() var.set(get_brightness()) scale = Scale( root, variable=var, from_= FROM, to = TO, length = 250, orient = 'h', command = set_brightness) scale.pack() button = Button(root, text = "Quit", command = sys.exit) button.pack() root.title("brightness") root.update_idletasks() w = root.winfo_screenwidth() h = root.winfo_screenheight() size = tuple(int(_) for _ in root.geometry().split('+')[0].split('x')) x = w/2 - size[0]/2 y = h/2 - size[1]/2 root.geometry("%dx%d+%d+%d" % (size + (x, y))) root.mainloop()
chmod +x brightness.py
./brightness.py
ショートカットキーなどの設定で動作するように設定すれば便利になると思います。
以下にスクリプトについて注意事項等を記します。
液晶ディスプレイの輝度は、ノートパソコンなども以下の場所に輝度の値が格納されています。
xxxxxxxxxの部分は皆さんの環境によって読み替えてください。
/sys/class/backlight/xxxxxxxxx/brightness
このファイルをcatすれば現在の輝度値が表示されます。
echoで値を書込めば輝度の調整が可能となります。
cat /sys/class/backlight/xxxxxxxxx/brightness
sudo sh -c 'echo 100 > /sys/class/backlight/xxxxxxxxx/brightness'
輝度の値の範囲はハードウェアによって異なるようです。
なので、まずは輝度の値を取得し、適当な値を設定し上限を確認すれば良いと思います。
上限を超えた値を設定するとI/Oエラーとなるはずです。
次に、本スクリプトでは、sudoでパスワードを渡さないようになっています。
パスワードを設定すれば sudo -S によりパスワードを渡すようになります。
通常、Raspbianをインストールすると、sudoコマンドでパスワードを問い合わせない設定となっているため、
sudo -Sを使用しないようになっています。
なので、パスワード必須の設定をRapbianにしている場合は、スクリプト内のPASSWORDを設定してください。
Rapbianでは、デフォルトでpython3-tkがインストール済みでした。
もし、インストールが必要な場合は、以下のコマンドでパッケージをインストールしてください。
sudo apt install python3-tk
以上、ラズベリーパイ公式インチタッチディスプレイの輝度調整Pythonスクリプトでした。