EPISODE · Jun 25, 2026 · 37 MIN
366 日記 | 3ボタンの実験
from TanaRadio · host たな
フェーズ4の3ボタンの実験です。ボタンを押すことで,ブラウザのプレーヤーをコントロールできるところまでいきました。9. ステップ5:3ボタンへ増やす 1ボタンが成功したら、いったんシャットダウンします。 sudo shutdown -h now 電源を抜いてから、3ボタンに増やします。 配線はこれです。 GPIO17 ─ 1kΩ抵抗 ─ ボタン ─ GND GPIO27 ─ 1kΩ抵抗 ─ ボタン ─ GND GPIO22 ─ 1kΩ抵抗 ─ ボタン ─ GND GNDは共通でかまいません。 ブレッドボード上では、GNDレールを作って、各ボタンをそこへ戻すとわかりやすいです。 GPIO17 → 抵抗 → ボタン → GNDレール GPIO27 → 抵抗 → ボタン → GNDレール GPIO22 → 抵抗 → ボタン → GNDレール GPIO23は、今回は配線しません。 10. ステップ6:Pythonで3ボタンをテストする 電源を入れ、ターミナルを開きます。 3ボタンテスト用スクリプトを作ります。 nano ~/tanaradio/buttons3_test.py 中身はこれです。 from gpiozero import Button from signal import pause play_pause = Button(17, pull_up=True, bounce_time=0.08) back_10 = Button(27, pull_up=True, bounce_time=0.08) forward_10 = Button(22, pull_up=True, bounce_time=0.08) def play_pause_pressed(): print("PLAY / PAUSE button pressed") def back_10_pressed(): print("BACK 10 seconds button pressed") def forward_10_pressed(): print("FORWARD 10 seconds button pressed") play_pause.when_pressed = play_pause_pressed back_10.when_pressed = back_10_pressed forward_10.when_pressed = forward_10_pressed print("3 button test is ready.") pause() 実行します。 python3 ~/tanaradio/buttons3_test.py それぞれのボタンを押して、次のように別々の表示が出れば成功です。 PLAY / PAUSE button pressed BACK 10 seconds button pressed FORWARD 10 seconds button pressed ここまでできれば、GPIO入力実験は成功です。 フェーズ4の核心はかなり越えています。 11. うまくいかないときの確認 何も表示されない場合 確認することはこれです。 GPIO番号を間違えていないか GNDにつながっているか ボタンの向きが合っているか 抵抗が同じ列に刺さっていてショートしていないか ブレッドボードの列を勘違いしていないか まずはGPIO17の1ボタンに戻って確認してください。 3つ同時に直そうとすると、原因が見えにくくなります。 1回押しただけなのに何回も表示される場合 bounce_time を少し大きくします。 bounce_time=0.15 たとえば、3か所すべてを 0.15 にして試します。 押していないのに反応する場合 タクトスイッチの向きが怪しいです。 ブレッドボードの中央の溝をまたいでいるかを確認してください。 12. ステップ7:playerctlでChromium再生を操作する 次に、Chromium上のTanaRadio再生をコマンドで操作できるか試します。 これは最終形ではありません。 Chromiumなしのmpv版へ行く前の足場です。 まずインストールします。 sudo apt install -y playerctl playerctl はMPRIS対応メディアプレイヤーをコマンドラインから制御するツールで、再生、一時停止、停止、前後トラックなどの操作ができます。 ChromiumでTanaRadioを開き、音声を再生します。 その状態でターミナルから試します。 playerctl status 再生中なら、 Playing のように表示されます。 次に、 playerctl play-pause これで再生/一時停止が切り替われば成功です。 10秒戻る/進むは、環境によって効き方が違う場合があります。まず試します。 playerctl position 10- playerctl position 10+ 効けば、そのまま使えます。 効かなければ、フェーズ4前半では「再生/一時停止だけ成功」と考えてよいです。 13. ステップ8:3ボタンでChromium再生を操作する 3ボタン操作用スクリプトを作ります。 nano ~/tanaradio/buttons3_playerctl.py 中身はこれです。 #!/usr/bin/env python3 from gpiozero import Button from signal import pause import subprocess def run(command): print(">", " ".join(command)) subprocess.run(command, check=False) play_pause = Button(17, pull_up=True, bounce_time=0.08) back_10 = Button(27, pull_up=True, bounce_time=0.08) forward_10 = Button(22, pull_up=True, bounce_time=0.08) def play_pause_pressed(): run(["playerctl", "play-pause"]) def back_10_pressed(): run(["playerctl", "position", "10-"]) def forward_10_pressed(): run(["playerctl", "position", "10+"]) play_pause.when_pressed = play_pause_pressed back_10.when_pressed = back_10_pressed forward_10.when_pressed = forward_10_pressed print("TanaRadio 3 physical buttons are ready.") pause() 実行します。 python3 ~/tanaradio/buttons3_playerctl.py この状態で、3つのボタンを押します。 期待する動作はこれです。 GPIO17:再生/一時停止 GPIO27:10秒戻る GPIO22:10秒進む ここまでできれば、フェーズ4前半は成功です。#声日記 #TanaRadioPi LISTENで開く
What this episode covers
フェーズ4の3ボタンの実験です。ボタンを押すことで,ブラウザのプレーヤーをコントロールできるところまでいきました。9. ステップ5:3ボタンへ増やす 1ボタンが成功したら、いったんシャットダウンします。 sudo shutdown -h now 電源を抜いてから、3ボタンに増やします。 配線はこれです。 GPIO17 ─ 1kΩ抵抗 ─ ボタン ─ GND GPIO27 ─ 1kΩ抵抗 ─ ボタン ─ GND GPIO22 ─ 1kΩ抵抗 ─ ボタン ─ GND GNDは共通でかまいません。 ブレッドボード上では、GNDレールを作って、各ボタンをそこへ戻すとわかりやすいです。 GPIO17 → 抵抗 → ボタン → GNDレール GPIO27 → 抵抗 → ボタン → GNDレール GPIO22 → 抵抗 → ボタン → GNDレール GPIO23は、今回は配線しません。 10. ステップ6:Pythonで3ボタンをテストする 電源を入れ、ターミナルを開きます。 3ボタンテスト用スクリプトを作ります。 nano ~/tanaradio/buttons3_test.py 中身はこれです。 from gpiozero import Button from signal import pause play_pause = Button(17, pull_up=True, bounce_time=0.08) back_10 = Button(27, pull_up=True, bounce_time=0.08) forward_10 = Button(22, pull_up=True, bounce_time=0.08) def play_pause_pressed(): print("PLAY / PAUSE button pressed") def back_10_pressed(): print("BACK 10 seconds button pressed") def forward_10_pressed(): print("FORWARD 10 seconds button pressed") play_pause.when_pressed = play_pause_pressed back_10.when_pressed = back_10_pressed forward_10.when_pressed = forward_10_pressed print("3 button test is ready.") pause() 実行します。 python3 ~/tanaradio/buttons3_test.py それぞれのボタンを押して、次のように別々の表示が出れば成功です。 PLAY / PAUSE button pressed BACK 10 seconds button pressed FORWARD 10 seconds button pressed ここまでできれば、GPIO入力実験は成功です。 フェーズ4の核心はかなり越えています。 11. うまくいかないときの確認 何も表示されない場合 確認することはこれです。 GPIO番号を間違えていないか GNDにつながっているか ボタンの向きが合っているか 抵抗が同じ列に刺さっていてショートしていないか ブレッドボードの列を勘違いしていないか まずはGPIO17の1ボタンに戻って確認してください。 3つ同時に直そうとすると、原因が見えにくくなります。 1回押しただけなのに何回も表示される場合 bounce_time を少し大きくします。 bounce_time=0.15 たとえば、3か所すべてを 0.15 にして試します。 押していないのに反応する場合 タクトスイッチの向きが怪しいです。 ブレッドボードの中央の溝をまたいでいるかを確認してください。 12. ステップ7:playerctlでChromium再生を操作する 次に、Chromium上のTanaRadio再生をコマンドで操作できるか試します。 これは最終形ではありません。 Chromiumなしのmpv版へ行く前の足場です。 まずインストールします。 sudo apt install -y playerctl playerctl はMPRIS対応メディアプレイヤーをコマンドラインから制御するツールで、再生、一時停止、停止、前後トラックなどの操作ができます。 ChromiumでTanaRadioを開き、音声を再生します。 その状態でターミナルから試します。 playerctl status 再生中なら、 Playing のように表示されます。 次に、 playerctl play-pause これで再生/一時停止が切り替われば成功です。 10秒戻る/進むは、環境によって効き方が違う場合があります。まず試します。 playerctl position 10- playerctl position 10+ 効けば、そのまま使えます。 効かなければ、フェーズ4前半では「再生/一時停止だけ成功」と考えてよいです。 13. ステップ8:3ボタンでChromium再生を操作する 3ボタン操作用スクリプトを作ります。 nano ~/tanaradio/buttons3_playerctl.py 中身はこれです。 #!/usr/bin/env python3 from gpiozero import Button from signal import pause import subprocess def run(command): print(">", " ".join(command)) subprocess.run(command, check=False) play_pause = Button(17, pull_up=True, bounce_time=0.08) back_10 = Button(27, pull_up=True, bounce_time=0.08) forward_10 = Button(22, pull_up=True, bounce_time=0.08) def play_pause_pressed(): run(["playerctl", "play-pause"]) def back_10_pressed(): run(["playerctl", "position", "10-"]) def forward_10_pressed(): run(["playerctl", "position", "10+"]) play_pause.when_pressed = play_pause_pressed back_10.when_pressed = back_10_pressed forward_10.when_pressed = forward_10_pressed print("TanaRadio 3 physical buttons are ready.") pause() 実行します。 python3 ~/tanaradio/buttons3_playerctl.py この状態で、3つのボタンを押します。 期待する動作はこれです。 GPIO17:再生/一時停止 GPIO27:10秒戻る GPIO22:10秒進む ここまでできれば、フェーズ4前半は成功です。#声日記 #TanaRadioPi LISTENで開く
NOW PLAYING
366 日記 | 3ボタンの実験
No transcript for this episode yet
Similar Episodes
No similar episodes found.