Raspberry Pi PicoでDVI(HDMI)出力

前回の続き。

nicotakuya.hatenablog.com

 

f:id:nicotakuya:20220410134957j:plain

Raspberry Pi PicoでDVI(HDMI)出力を試してみました。上の写真はAdafruitが公開しているサンプル「hello_dvi」を実行中の様子です。

 

f:id:nicotakuya:20220410135348j:plain

使用した部品、「Adafruit DVIブレークアウトボード」です。スイッチサイエンスで330円(+送料)でした。

この他、「Raspberry Pi Pico用DVIアダプタ基板(990円)」という部品も使えます。商品説明が「HDMIっぽい」となってますが、HDMIです。

 

f:id:nicotakuya:20220410135510p:plain

説明文を元に書いた回路図。

VGA出力にくらべてシンプルです。Raspberry Pi公式もVGAじゃなくて、こっちを採用したほうが良かったのでは。

 

f:id:nicotakuya:20220410135556j:plain

完成。

 

f:id:nicotakuya:20220410135642j:plain

サンプルの「sprite_bounce」を実行中。

うちのディスプレイの仕様なのかもしれませんが、解像度が低い場合はこんな感じで額縁状態で表示されます。

 

f:id:nicotakuya:20220410135915j:plain

「moon」を実行中。

 

f:id:nicotakuya:20220410140030j:plain

「terminal」を実行中。

 

f:id:nicotakuya:20220410140119j:plain

「mandelbrot」を実行中。

f:id:nicotakuya:20220410135736j:plain

Shuichi TAKANOさんという方が開発したファミコンNESエミュレータ「pico-infones ver.0.1」を動かしてみました。試しに自作ファミコンゲームのROMを入れてみたら動きました。ドキュメントによると、対応するゲームパッドはBUFFALO BGC-FC801、SONY DUALSHOCK 4、SONY DualSenseの3種類とのこと。

以下のページでUF2ファイルとソースコードを公開されています。

GitHub - shuichitakano/pico-infones: infones for pico

 

f:id:nicotakuya:20220410233435j:plain

(追記)

バッファローのBSGP801を接続した場合、ボタンが複数反応してしまうという現象が発生していたのですが、次の方法で修正してみました。

まず「pico-infones-0.1」のソースをGitHubからダウンロードします。

「hid_app.cpp」の内の2箇所を変更。

・258行目「uint8_t axis[3];」→「uint8_t axis[2];」に変更。

・267行目「gp.axis[2] = rep->axis[2];」を削除。またはコメントアウト

これでZ軸が除外されて、十字ボタンのXY軸だけ読み取るようになります(たぶん)。

ターミナルを起動して「cd pico-infones-0.1」「mkdir build」「cd build」「cmake ..」「make」でビルドをやり直します。buildフォルダにpicones.uf2が作成されたら成功です。