フォト
2017年10月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
無料ブログはココログ

« IchigoJamのI2Cインタフェースについて | トップページ | LEDドットマトリックスを使ったメッセージ表示デバイスを作成中(2) »

2016年9月18日 (日)

LEDドットマトリックスを使ったメッセージ表示デバイスを作成中

(2016/09/18 更新・一部変更)

「Arduinoで8x8LEDマトリックスを直接(直結)で制御する」でやったことをベースに
ここ数日、ArduinoベースでのIchigodotS的なものを製作中です。
(最終的にはAtmega328を直接利用を予定)

 Matrix
  ※写真はArduino pro miniにLEDドットマトリックスを直付けて駆動
     "@out 043E2F566AD6ACF0"のコマンド実行で表示しています。

方向性はちょっとIchigodotS異なり、ゲーム性は無くメッセージ表示機能を重視しています。

現状の機能のデモ

TeaTerm上(シリアル通信)にてコマンドを実行して表示メッセージを定義する例です。
(コマンドの実行はメッセージ表示を中断することなく、並行して行えます)

   Photo

下記のコマンドを5つ実行しています。
   @setfont  0,043E2F566AD6ACF0  : フォント0 に苺のフォントを定義
   @setmsg 0, Hello{f0}IchigoJam      : メッセージ0の定義. {f0}はフォント0を埋め込み指定
   @setplist 0                                : 表示するメッセージを指定(メッセージ0だけ指定)
   @scroll 5,50                               : スクロール方向、速度指定 横、50msecに1ドット移動
   @save                                       : 上記の設定を保存

この定義で次の動画の動作をします。

 

メッセージ、フォント、設定値を内部EEPROMに保存しているので、再起動しても以後
同じ動作をします。内部EEPROMは設定値の保存に重宝しますね。

メッセージ文に埋め込み制御文字を駆使して途中でスクロールを早めたり緩めたり、
逆スクロールにしたり、フォントを{f0}{f1}{f2}.. としてアニメーションなんかも出来そうです。

埋め込み制御文字もセンサーやRTC等の可変データを埋め込むようなこともやろうと思っています。

主な機能
  ・さまざまなLED8x8ドットマトリックスに対応(ピン配置、アノード、カソード設定)
  ・内部EEPROMに最大長128バイトのUTF-8日本語メッセージを6つ登録可能
  ・ユーザー定義フォント(8x8ドット)を24文字登録可能
  ・メッセージ表示プレイリストの登録機能
  ・文字の回転、反転、スクロール速度の設定
  ・メッセージ内に制御用文字を埋め込んで、表示の装飾が可能
  (メッセージのスクロール速度や方向を途中で変えたり、戻したり等が可能)
  ・ホスト機(IchigoJam、Windows機、ラズパイ等)から表示メッセージ送信

主なコマンド
・メッセージの登録/追記
   @setmsg  メッセージ番号, メッセージ[LFCR]
   @setmsga メッセージ番号, メッセージ[LFCR]

・メッセージの削除
   @delmsg メッセージ番号[LFCR]

・メッセージ再生リストの設定
@setplist 0123456[LFCR]
  数字はメッセージ番号のリスト

・登録メッセージの取得
  @getmsg メッセージ番号[LFCR]
    メッセージ番号省略で全部取得

・スクロールの設定
  @scroll dct , tm[LFCR]
    dct  方向 0:スクロールなし、1: 上 、2:右上、 3:右、 4:右下、 5:下、6:左下、7:左、8:左上
    tm   ウェイト 0~255(msec)

・文字の回転設定
@rotate dct[LFCR]
dct    0:0度、 1:90度、2:180度、 3:270度

・表示停止 
@stop[LFCR]

・表示指定
play n[LFCR]
n:  0:停止、 1:シーケンシャル、2:ランダム表示

・フォント登録
@setfont フォント番号, フォントデータ(16桁HEX)[LFCR]

・フォント直後出力
@out フォントデータ

・フォントデータの取得
  @getfont フォント番号[LFCR]
  フォント番号省略で全部取得

・メッセージ間隔時間設定
  @wait 間隔[LFCR]

・登録フォント表示
  @printfont フォント番号

・設定値の保存/ロード
  @save
  @load

・変数の設定
  @setvalue 変数番号, 値

表示メッセージ埋め込み制御文字
  {fn} フォント埋め込み
  {oR1R2R3R4R5R6R7R8} ビットマップ埋め込み
  {r[+/-]n} 回転 +/-で相対指定
  {s[+/-]n} スクロール方向指定
  {tn} スクロール速度指定
  {e} 停止
  {w} 即時ウィエイト
  {dn} 日付情報埋め込み (RTCモジュール利用時)
  {Tn} 温度情報埋め込み (温度センサーモジュール利用時)
  {vn} 変数値の埋め込み (n:0~9)

利用例
@setmsg 0,今日は{d1}です{o043E2F566AD6ACF0}。
@setmsg 1,現在の気温は{t1}です。
@setfont 0, 043E2F566AD6ACF0
@setmsg 2, いちごアイコン{f0}を表示するテスト
@playlist 012
@platy 1
@save

色々と機能を詰め込んでいって、フラッシュを87%利用している状況です。
もしかしたら、足らなくなるかも..

  Ide

問題点

現状、Arduinoの標準のシリアル通信の作りの悪さに悩んでいることろです。
受信バッファサイズが64バイトの制約はちょっと辛いです。
広げることは出来るのですが、互換性が無くなってしまいます。

広げても根本的な問題解決にはならなそうです。
バッファーオーバー時にタイミングを確実にキャッチしてフォロー出来るように
方向が無いかを模索中です。

関連記事
Arduinoで8x8LEDマトリックスを直接(直結)で制御する  (2016/08/07)

« IchigoJamのI2Cインタフェースについて | トップページ | LEDドットマトリックスを使ったメッセージ表示デバイスを作成中(2) »

arduino」カテゴリの記事

日記・コラム・つぶやき」カテゴリの記事

コメント

以前、IchigoJamフォントを登録してシリアル(9600BPS)での受信を表示するものを作りました
https://youtu.be/b5fL9xM075A

可能であればIchigoDotSの表示コマンド(MATLED)のエミュレートができれば楽しそうです

後田さん

コメントありがとうございます。
IchigoDotSと同じようなアニメーション表示も出来るようにしたいと思います。
ただし用途(方向性)が異なるため、エミュレートはちょっと無理かも。

用途としはメッセージ表示に重点を置いています。
特に可変値を埋め込めるようなメッセージ表示を考えています。

IchigoJamや他機器との連携では、可変値(アナログ値、センサー値、時刻等)と
メッセージ番号だけを受け取って、"現在の時刻は○○○です”とか
"現在の室内温度は○○℃です"等を自立表示するような使い方をしたいです。
(日本語メッセージやアニメーション絵はパソコンにて設定)

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/571408/64220711

この記事へのトラックバック一覧です: LEDドットマトリックスを使ったメッセージ表示デバイスを作成中:

« IchigoJamのI2Cインタフェースについて | トップページ | LEDドットマトリックスを使ったメッセージ表示デバイスを作成中(2) »