前回の続き。
Raspberry Pi PicoでDVI(HDMI)出力を試してみました。上の写真はAdafruitが公開しているサンプル「hello_dvi」を実行中の様子です。
使用した部品、「Adafruit DVIブレークアウトボード」です。スイッチサイエンスで330円(+送料)でした。
この他、「Raspberry Pi Pico用DVIアダプタ基板(990円)」という部品も使えます。商品説明が「HDMIっぽい」となってますが、HDMIです。
説明文を元に書いた回路図。
VGA出力にくらべてシンプルです。Raspberry Pi公式もVGAじゃなくて、こっちを採用したほうが良かったのでは。
完成。
サンプルの「sprite_bounce」を実行中。
うちのディスプレイの仕様なのかもしれませんが、解像度が低い場合はこんな感じで額縁状態で表示されます。
「moon」を実行中。
「terminal」を実行中。
「mandelbrot」を実行中。
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
(追記)
バッファローの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が作成されたら成功です。