Nゲージのレイアウトで使用する制御盤、ポイントマシンの制御、信号LEDの制御などをラズベリーパイとPICマイコンを使用して製作中。だが、「I2C通信・・複数バイトの受信終了がわからない・・」という問題があった。ちょっと試行錯誤の上、なんとか動くんじゃないか?というテストプログラムができた。
ラズベリーパイをデュアルディスプレイで
ラズベリーパイ3に公式・7インチLCDタッチスクリーンをつけたらHDMIの出力端子が空きになる。
デュアルディスプレイ(デュアルモニタ)の環境も作れるらしいということだったが。
しかし、LCDタッチスクリーンの上からHDMIのケーブルがのぞく格好になり・・ブサイク。
ということで、デュアルディスプレイにはしていなかったが、やはり気になるので調べてみた。
するとyoutubeに「Dual Screen on Raspberry Pi」としてその設定方法が紹介されているのを発見。
こんな方法でできるようだ。
ただ、私の希望としては簡単な設定で、動画がHDMIモニタで見られればよいだけなのだが・・
で調べたらomxplayerを使えば良さそう。
omxplayer
Raspbianに標準でインストールされているもので、コマンドラインから起動し、GUIは持っていない。
ラズベリーパイでterminalを起動し、「omxplayer」または「omxplayer -h」と入力するとオプションパラメータが表示される。
その中に、
「–display n Set display to output to」 (ハイフン2個)
という記述がある。
ラズベリーパイのDisplay numbersは次の通り。
LCD: 4
TV/HDMI: 5
Auto select non-default display: 6
ということで、terminalの中で次のコマンドを実行すると再生される動画はHDMIで接続されたモニタに出力される。
omxplayer –display 5 ファイル名 (ハイフン2個)
ただ、動画のビットレートが高いものについてはGPUメモリを増やしておく必要がある。
メニューから[設定][Raspberry Piの設定]を選び、表示された画面の「パフォーマンス」のタブの中にあるGPUメモリの値を増やす。
80MB~128MBに増やせば良いようだ。
・・私はちょっと他の要件があるので256MBにしているが。
ファイルマネージャーから開く設定
omxplayerはGUIも持っていないので再生リスト等も作れない。
フォルダ内のファイルをすべて再生するような場合はスクリプトを組む必要がある。
ただ、1ファイルずつ再生したいのならコマンドラインから入力となるのだが、現実にはコマンドラインから毎回再生したいファイル名を入力するのは面倒。
そんな場合は「アプリケーションで開く設定」でコマンドをあらかじめ登録しておくことも可能である。
ファイルマネージャーからmp4などomxplayerで再生させたいファイルを選択し、右クリックでコンテキストメニューを開く。
コンテキストメニューから「アプリケーションで開く」を選択。
開いたダイアログの中で「コマンドラインを指定」のタブを選択。
実行するコマンドラインのところに
「omxplayer –display 5」。(ハイフン2個)
アプリケーションの名前のところに
「HDMI」(任意の名前)。
ファイルマネージャーでファイルを選択して右クリックしてコンテキストメニューを開くとアプリケーションの名前のところで指定した名前が表示され、ここから起動できるようになる。
「選択したアプリケーションをこのファイルタイプのデフォルトのアクションとする」をチェックしておくとファイル名をダブルクリックしただけで再生できる。
ここで、問題が・・
コマンドラインから出力先にHDMIを指定せず標準のLCDタッチスクリーンに出力させた場合、omxplayerはキーボードで一時停止/解除や終了の操作ができる。また[CTRL]+[C]でも終了させられるし、最上部のタスクバーにそのコマンドのタブが表示されているのでそれを閉じるといった操作もできる。
ただし、出力先をHDMIとしている場合LCDタッチスクリーンには実行しているコマンドのterminalも表示されず、タスクバーにも表示されない。
従ってそのterminalにキー入力を渡すことができないようだ・・
「アプリケーションで開く設定」画面の「コマンドラインを指定」のタブには「端末エミュレータで実行する」というチェックボックスがあるが、どちらの状態にしてもHDMIで出力中のterminalにはキー入力が渡らなかった。
つまり、キーボードやマウスの操作で終了させられない。
ということで、途中で終了させたい場合、別のterminalを開き、実行中のomxplayerのpidを調べてkillコマンドで終了させるという原始的な方法で?。
今のところ、そんな感じしかないのかなぁ?
HDMI to VGA変換アダプタを使用している場合
omxplayer –display 5でHDMI側に動画を再生させた場合、音声もHDMI側に出力される。
HDMIモニタがスピーカーを持っていない場合、もしくはVGA入力のモニタにHDMI to VGA変換アダプタを使用して接続する場合は音声が出力されない。
このようなとき、ラバベリーパイ本体のミニプラグにスピーカーが接続されていればそちらから音声を出力することができる。
omxplayerの起動パラメータに次の記述を追加する。
「-o local」(ハイフン1個)
音声は本体のミニプラグ経由、映像はHDMIモニタとする場合、次のようになる。
「omxplayer -o local –display 5」(oの前はハイフン1個、displayの前はハイフン2個)
こちらも、アプリケーションを開く設定に登録しておくことができる。
この登録作業をしているとき、新たに設定を追加しても再生できないことがあった。
一旦ファイルマネージャーを終了させて再起動することによってちゃんと動いた。
この設定ファイルは/home/pi/.local/share/applications配下に作成される。
この中のファイルを削除すればコンテキストメニューからも消える。
ファイルはテキストで作成されているのでパラメータの修正は直接編集することもできるようだ。