LEDドットマトリックスを使ったメッセージ表示デバイスを作成中
(2016/09/18 更新・一部変更)
「Arduinoで8x8LEDマトリックスを直接(直結)で制御する」でやったことをベースに
ここ数日、ArduinoベースでのIchigodotS的なものを製作中です。
(最終的にはAtmega328を直接利用を予定)
※写真はArduino pro miniにLEDドットマトリックスを直付けて駆動
"@out 043E2F566AD6ACF0"のコマンド実行で表示しています。
方向性はちょっとIchigodotS異なり、ゲーム性は無くメッセージ表示機能を重視しています。
現状の機能のデモ
TeaTerm上(シリアル通信)にてコマンドを実行して表示メッセージを定義する例です。
(コマンドの実行はメッセージ表示を中断することなく、並行して行えます)
下記のコマンドを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%利用している状況です。
もしかしたら、足らなくなるかも..
問題点
現状、Arduinoの標準のシリアル通信の作りの悪さに悩んでいることろです。
受信バッファサイズが64バイトの制約はちょっと辛いです。
広げることは出来るのですが、互換性が無くなってしまいます。
バッファーオーバー時にタイミングを確実にキャッチしてフォロー出来るように
方向が無いかを模索中です。
関連記事
Arduinoで8x8LEDマトリックスを直接(直結)で制御する(2016.08.07)
LEDドットマトリックスを使ったメッセージ表示デバイスを作成中(2016/09/18) ・・・ この記事です
LEDドットマトリックスを使ったメッセージ表示デバイスを作成中(2)(2016/09/20)
LEDドットマトリックスを使ったメッセージ表示デバイスを作成中(3)(2016/10/01)
LEDドットマトリックスを使ったメッセージ表示デバイスを作成中(4)(2016/10/26)
« IchigoJamのI2Cインタフェースについて | トップページ | LEDドットマトリックスを使ったメッセージ表示デバイスを作成中(2) »
「日記・コラム・つぶやき」カテゴリの記事
- gitでサブモジュールを作成する(2025.02.01)
- 焼き芋ちゃんカレンダー、ポチリました(*´ω`*)(2025.01.31)
- Windows環境不要かも..(2025.01.20)
- 不明なアクセス集中ページを非公開にしました(2025.01.15)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
「arduino」カテゴリの記事
- Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう(2025.01.23)
- Zorin OSでArduino Uno互換機(CH340)が認識しない(2025.01.19)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
- Arduino用 SKK日本語変換ライブラリの開発 その1(2024.12.28)
- NeoPixel(WS2812B)の制御 その5(2024.09.15)
「表示器制御関連」カテゴリの記事
- NeoPixel(WS2812B)の制御 その5(2024.09.15)
- Arduino用 美咲フォントライブラリを更新しました(2024.03.21)
- Raspberry Pi Pico(MicroPython)でLEDドットマトリックスを使ってみる(2024.03.14)
- Raspberry Pi Pico MicroPython用のマルチフォントライブラリ(2023.02.09)
- MicroPython(Raspberry Pi pico)で8x8ドットNeoPixcel文字表示(2023.02.08)
コメント
« IchigoJamのI2Cインタフェースについて | トップページ | LEDドットマトリックスを使ったメッセージ表示デバイスを作成中(2) »
以前、IchigoJamフォントを登録してシリアル(9600BPS)での受信を表示するものを作りました
https://youtu.be/b5fL9xM075A
可能であればIchigoDotSの表示コマンド(MATLED)のエミュレートができれば楽しそうです
投稿: 後田 | 2016年9月18日 (日) 15時56分
後田さん
コメントありがとうございます。
IchigoDotSと同じようなアニメーション表示も出来るようにしたいと思います。
ただし用途(方向性)が異なるため、エミュレートはちょっと無理かも。
用途としはメッセージ表示に重点を置いています。
特に可変値を埋め込めるようなメッセージ表示を考えています。
IchigoJamや他機器との連携では、可変値(アナログ値、センサー値、時刻等)と
メッセージ番号だけを受け取って、"現在の時刻は○○○です”とか
"現在の室内温度は○○℃です"等を自立表示するような使い方をしたいです。
(日本語メッセージやアニメーション絵はパソコンにて設定)
投稿: たま吉さん(管理者) | 2016年9月18日 (日) 22時31分