レトロでハードな物語

レトロなゲーム機・マイコン・中古デバイスなどをArduinoやAVRで再活用する方法を模索しています。

Arduinoでビデオ出力

2020年10月13日 | 電子工作

これまでAVRやPICなどの表示デバイスにOLEDやLCDなどを利用してきました。基本的に小さな基板1枚に全ての部品を配置したいと思っているので主に小型の表示デバイスを使っているのですが、やっばりちょっと表示が見づらいときもあります。

実は以前よりArduinoでビデオ出力が出来るということは知っていましたが、きっと回路の制作は面倒なんだろうなと勝手な思い込みがあって詳しくは調べていませんでした。でも、Arduinoでビデオ出力ができれば別途表示デバイスを購入する必要もなくなるなぁと、ふと思い付いたので調べてみました。

ネットで調べてみると幾つか方法はあったのですが、Arduinoではこちらがよく使われるみたいです。ライブラリもしっかり作りこんであって使いやすそうです。表示に必要な回路もすごく簡単で、もっと早く試していればよかったと少し後悔。
回路図はこちらに。抵抗2つとRCAプラグ1つで作れます。

ライブラリの導入も簡単です。Arduino IDEから「ツール」→「ライブラリを管理」を選択し、「検索をフィルタ」のところにtvoutと入力すればライブラリが表示されますのでインストールします。



続いてインストールされたライブラリのフォルダ(Ubuntuの場合 "スケッチブックの保存場所/libraries/TVout")の下にあるTVoutfontsフォルダのフォントを全てその上のTVoutフォルダにコピーまたは移動しておきます。

導入は以上です。

ビデオケーブルは秋月電子のお楽しみ袋に入っていたDIP化キットの基板と組み合わせて、ブレッドボードで使えるように作ってみました。




ビデオ出力にはProMiniを使います。配線は以下のようにします。

ProMini − ビデオケーブル
7ピン − Sync(1KΩ)
9ピン − Video(470Ω)
GND − GND



ビデオケーブルをTVにつなぎ、「スケッチ例」→「TVout」→「DemoNTSC」を選んでスケッチを書き込むとデモが始まります。





Arduinoからビデオ出力される様はなかなか感動モノです。

図形や文字を簡単に表示できるようなので、自作のスケッチで利用してみましょう。
1.5V限定の電池チェッカーを作ります。ProMiniのA0端子に乾電池の+を、GNDに乾電池の-をつなぎアナログ値を読み取ります。特に必要というわけではないのですが、電池を入れていないときにA0端子の値がノイズで変動するのでA0とGND間に10kΩの抵抗も入れました。



スケッチは以下の通りです。

ProMiniTVout.ino

実行すると電池の電圧をビデオ表示します。



解像度は128x96です。TVだと見やすくていいですね。



最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
TVoutについて (八塚卓也)
2021-12-15 07:18:38
コメントにて失礼致します。
Arduino Unoで同じようにしてみたのですがアラートが出てコンパイルしません。
Tvfontsの中の書類はコピーしてTVoutにも置きました。
何かアドバイスいただけないでしょうかお願いいたします。
返信する
RE:TVoutについて (naoki_sgc)
2021-12-17 21:52:45
ご質問の件、使用OSやエラーの詳細が分からないので何とも言えませんが、ずいぶん前の記事なので最新の環境で確認してみました。

Ububtu 21.10 + ArduinoIDE 1.8.18 + TVout 1.0.1

ブログ記事の手順通りTVoutをインストールして(「ファイル」→「設定」メニューで表示される「スケッチブックの保存場所」の中のlibrariesの下にインストールされます)、TVoutfontsのフォルダにあるフォントをその上のTVoutフォルダに移動。

Windows11 + ArduinoIDE 1.8.18 + TVout 1.0.1

上記Ubuntuとまったく同じ作業を行いました。

この作業後、Ubuntu、Windowsとも問題なくコンパイルが出来ることを確認しました。

また、TVoutfontsのフォルダのドキュメントにはTVoutfontsフォルダ自体をlibrariesの下にコピーしてと書いてあったので、フォントの移動ではなくフォルダごとlibrariesの下に移動してもちゃんとコンパイルすることができました。

動作確認はPro Miniで行いましたが、ボードの選択をUnoにしてもコンパイルできるのは確認しました。これらの作業を行ってもコンパイルできないのならフォントの問題ではないですね。経験的には異なるライブラリ同士でファイル名が競合しているときに意味不明なエラーが出たことはありました。エラーの原因がどうしても分からないときは、最終手段として関連ファイルをバックアップしArduinoIDEやライブラリ等を全て削除してから、新規にArduino環境を構築し直すという強引な手もありますけど。
返信する

コメントを投稿