2013年3月27日水曜日

arduinoをTV(コンポジット入力)に接続してみる


わずかな部品でarduinoからTVや液晶にNTSC/PAL信号を出力し、文字や簡単な図形を表示できるというので試してみました。
ただ、低解像度(デフォルト128x96)、白黒です。

ライブラリはここ
http://code.google.com/p/arduino-tvout/

TVoutBeta1.zip をダウンロードしました。
librariesフォルダに、解凍したTVoutフォルダとTVoutfontsフォルダをコピーしIDEを再起動。

今回試した接続は、
arduinoUno → コンポジット-RGB変換ボード → パチンコ液晶

arduinoUno → ブラウン管TV
11ピンからオーディオ出力もあるようですが、今回は未接続。
デモスケッチを書き込むと参考動画通りのものがあっさり表示できました。
両方の接続が成功しましたが、間違いはないのに映らないという場合、信号の精度のせいか古いテレビを試すといいかも?



参考動画


シリアルモニターとして使うライブラリ(pollserial)とスケッチ(NTSCserialTerm)もあり試してみましたがエラー。
同じエラーが出て報告もあるようですが、自分には解決できず。

試しにPCとシリアル通信をしTV出力してみると、受信データの取りこぼしが起きました。
タイマー割り込み?なんかの影響でシリアル通信に影響が出ているのでしょうか?
ソース見ても自分にはわかりません。
delay() も使えないので TV.delay() が用意されています。

シリアル通信の安定化として、
・Serial.available() で監視
・受信中は TV.end() でTV出力をいったん終了
・受信完了したら TV.begin() で再開
・TV.println() でTV出力する
という方法はできますが、その度に画面が乱れます。

次に試したのが、標準ライブラリのSoftwareSerial。
arduinoIDEのシリアルモニターを使い、9600baud で接続したところ、TV.end()で受信を妨げないようにする必要はなくなりました。
文字化けがあり 4800baud に落とすと、文字化けは無しに。
それでも、シリアル受信中は画面が少し乱れます。

TV出力するシールドにTellyMateがあります。
arduinoからTellyMateにシリアル通信でデータを送ると、TVに出力するというもの。
PCとのシリアル通信も必要ならそちらの方がいいのかなぁ。

できたら何をするのか? は決まっていませんが。

環境:arduinoUno、arduinoIDE1.0.4、win7







0 件のコメント:

コメントを投稿