ID:AGB65-uDISPのID。
LEN:送信バイト長
CMD:命令番号
col:msb:色情報上位バイト
col:lsb:色情報下位バイト
addHi:SDカードアドレスの上位バイト
addMd:SDカードアドレスの中位バイト
addLo:SDカードアドレスの下位バイト
X:画面位置X
Y:画面位置Y
width:イメージ画像幅
height:イメージ画像縦
colorMode:カラーモード選択
flaMs:動画表示枚数上位バイト
flaLs:動画表示枚数下位位バイト
delay:動画の画像間の時間(表示間隔)
※とくに表示が無い場合は、数値は10進数で表しています。
※方向はマスタ側から見たデータの通信方向を表します。「送信」はマスタ−>コントローラへ送る命令、「受信」はコントローラ−>マスタへ返される結果を表します。
命令値 |
動作 |
方向 |
フォーマット |
10 |
イメージデータ保存 |
送信 |
[255][ID][len(4)][10][addHi][addMd][addLo][d1][d2]...[d512] *データ長は512バイトフィックス |
11 |
イメージデータ表示 |
送信 |
[255][ID][len(9)][11][x][y][width][height][colorMode][addHi][addMd][addLo] |
12 |
動画再生 |
送信 |
[255][ID][len(12)][12][x][y][width][height][colorMode][delay][flaMs][flaLs]
[addHi][addMd][addLo] |
13 |
画面記憶 |
送信 |
[255][ID][len(8)][13][x][y][width][height][addHi][addMd][addLo] |
65 |
ユーザー文字定義 |
送信 |
[255][ID][len(10)][65][char#][d1][d2][d3][d4][d5][d6][d7][d8] |
66 |
背景色設定 |
送信 |
[255][ID][len(3)][66][col:msb][col:lsb] |
68 |
ユーザー定義文字表示 |
送信 |
[255][ID][len(6)][68][char#][x][y][col:msb][col:lsb] |
69 |
画面クリア |
送信 |
[255][ID][len(1)][69] |
76 |
ライン描画 |
送信 |
[255][ID][len(7)][76][x1][y1][x2][y2][col:msb][col:lsb] |
79 |
文字背景設定 |
送信 |
[255][ID][len(2)][79][mode] |
80 |
点描画 |
送信 |
[255][ID][len(5)][80][x][y][col:msb][col:lsb] |
89 |
輝度調整 |
送信 |
[255][ID][len(3)][89][mode][value] |
112 |
四角描画設定 |
送信 |
[255][ID][len(2)][112][set(0/1)] |
114 |
四角描画 |
送信 |
[255][ID][len(7)][114][x1][y1][x2][y2][col:msb][col:lsb] |
115 |
文字表示 |
送信 |
[255][ID][len(n+6)][115][col][row][font][col:msb][col:lsb][s1][s2]...[sn] |
上以外 |
無視されます。 |
|
|
・シンクロバイトは255で固定です。(データを送信する先頭は必ず255)
・IDはハンダジャンパで設定したIDを指定します。デフォルトは204です。
<色についての説明>
本ディスプレイはRGB565方式で色を表現しています。
色をR(赤)、G(緑)、B(青)で表現するのは、PCのディスプレイやテレビなどでおなじみです。PCなどではRGBそれぞれ8ビットを使って24ビットカラーで表すのが一般的ですが、人間の目はそれほど色に対する解像度が高くないので、色情報を多少割り引いても違いはわかりません。この製品ではRGB(8ビットx3)を間引いて2バイト(8ビットx2)で表しています。
<画面操作系命令>
【命令69:画面クリア】
<説明>
画面を背景色で塗りつぶします。
<送信フォーマット>
[255] [ID(204-211)] [バイト長(1)] [命令(69)]
<送信データ例>
ID=204のボードの画面をクリアするには次の値を送ります。
[255] [204] [1] [69]
【命令66:背景色設定】
<説明>
画面の背景色を設定します。
<送信フォーマット>
[255] [ID(204-211)] [バイト長(1)] [命令(66)] [色上位] [色下位]
<送信データ例>
ID=204のボードの背景を赤にするには次の値を送ります。
[255] [204] [1] [66] [248] [0]
*赤は 11111000 00000000 になるので、色上位バイトが248、色下位バイトが0になります。各ビットが全部0だと黒、全部1(上位が255、下位が255)だと白になります。
【命令89:輝度調整】
<説明>
画面の輝度を設定します。
<送信フォーマット>
[255] [ID(204-211)] [バイト長(3)] [命令(89)] [mode] [value]
■mode:1〜3のモード設定があります。valueはそのモードの設定値です。
【モード1】
ディスプレイ表示のON/OFFをコントロールします。 value=0でオフ、value=1でオンします。画面が表示しないだけで、描画命令などは受け付けられます。
【モード2】
ディスプレイの輝度を調整します。valueは0〜15で設定し、値が大きいほど明るくなります。起動後の初期値は15です。
【モード3】
ディスプレイの電源を切ります。value=0でオフ、value=1でオンします。モード1で画面を非表示にするよりも消費電流が下がります。ただし、電源オフの間に送られた描画命令は受け付けられません。RAM領域も消去されます。
<送信データ例>
ID=204のボードの輝度を8にするには次の値を送ります。
[255] [204] [3] [89] [2] [8]
<文字表示系命令>
【命令115:文字表示】
<説明>
画面に文字(ASCII文字)を表示します。文字サイズ、表示開始位置、色が指定できます。
<送信フォーマット>
[255] [ID] [バイト長(文字数+6)] [命令(115)] [col] [row] [font]
[col:msb] [col:lsb] [s1] [s2] ... [sn]
■col:文字開始列
■row:文字開始行
■font:文字サイズ 0:5x7 1:8x8 2:8x12ピクセル
■col:msb:色上位バイト
■col:lsb:色下位バイト
■s1〜sn:ASCII文字データ
<送信データ例>
ID=204のボードの2列目3行目に8x8サイズで”ABC”と緑で描画したい場合。
[255] [204] [9] [115] [2] [3] [1] [7] [224] [65] [66]
[67]
色の緑は2進数で 00000111 11100000 となるので、色上位バイトが7、色下位バイトが224になります。ASCII文字で”A”は値65になります。同じく”B”=66、”C”=67になります。
文字サイズによって表示可能な行数と列数が変わりますので注意してください。
【命令79:文字背景設定】
<説明>
命令115で表示させる文字の背景を、現在のイメージの透過にするか、背景カラーにするかを設定します。
*現在のイメージの透過:このページはじめの製品イメージの「AGB65−uDISP」のように背景イメージが文字のすき間に写りこみます。
*背景カラーにする:
このページはじめの製品イメージの「Hello! Hello!」のように、文字領域の背景は、背景色で塗りつぶされます。
<送信フォーマット>
[255] [ID] [バイト長(2)] [命令(79)] [mode]
■mode: 0:現在のイメージの透過 1: 背景カラー
<送信データ例>
ID=204のボードのキャラクタ表示を透過にする。
[255] [204] [2] [79] [0]
【命令65:ユーザー文字定義】
<説明>
ユーザー文字を定義します。定義した情報はuDISPのRAM領域に格納され、次の表示命令により表示することができます。RAM領域なので電源を切るとデータは消えます。定義文字は#0〜31の32種類が定義できます。
定義する方法は、8x8ピクセルを8バイト(8ビットx8)で表します。たとえば下のような文字を定義する場合は、このようになります(数値右は16進数)。
となります。10進数になおすと、 60 66 129 165 129 190 66 60 になります。
<送信フォーマット>
[255] [ID(204-211)] [バイト長(10)] [命令(65)] [char#(0-31)]
[d1] [d2] [d3] [d4] [d5] [d6] [d7] [d8]
■char#:キャラタ番号。0〜31の32種類が選択可能。
■d1〜d8:ビットデータ。d1が上、d8が下になります。
<送信データ例>
ID=204のボードのキャラクタ#3に上のキャラクタを定義する場合は次のようになります。
[255] [204] [10] [65] [3] [60] [66] [129] [165] [129]
[190] [66] [60]
【命令68:ユーザー定義文字表示】
<説明>
命令65で定義したキャラクタを表示させます。
<送信フォーマット>
[255] [ID(204-211)] [バイト長(6)] [命令(68)] [char#] [x] [y]
[col:msb] [col:lsb]
■char#:キャラタ番号。0〜31の32種類が選択可能。
■x,y:画面上に表示させる座標を指定します。ピクセル単位で指定するので値は0〜127の範囲になります。
<送信データ例>
ID=204のボードの#3のキャラクタを赤で(50,60)の位置に表示する場合は次のようになります。
[255] [204] [6] [68] [3] [50] [60] [248] [0]
*赤は 11111000 00000000 になるので、色上位バイトが248、色下位バイトが0になります。各ビットが全部0だと黒、全部1(上位が255、下位が255)だと白になります。
<イメージデータ関連>
【命令10:イメージデータ保存】
<説明>
イメージデータをuDISPに転送します。転送されたデータはuDISPのマイクロSDカードに保存されます。データは1セクタ512バイト単位で送信します。セクタアドレスは3バイトで指定しますので、0〜16,777,215の番地があります。イメージデータは1ピクセル2バイトでRGB565で送ります。
イメージデータは、128x128ピクセル以内の任意のサイズを保存することができます。保存したデータはマイクロSDカードに保存され、電源を切っても消えません。
このページ下で、PCからイメージデータを送信するサンプルプログラムを紹介しています。
128x128のイメージを保存するには64セクタ必要となります。たとえば、128x128のイメージをセクタ0から保存した場合、次の128x128のイメージはセクタ64以降に保存することになります。
画像データは大量ですが、シリアル通信は遅いので、画像データを転送するには時間がたくさんかかります。たとえば、128x128の1画面分のデータ(64セクタ分)を送るには、通信速度115200bpsで約10秒かかります。
画像の表示は次の「命令11」で行います。画像の転送とは違い、表示するのは一瞬でできます。
<送信フォーマット>
[255] [ID(204-211)] [バイト長(4)] [命令(10)] [addHi] [addMd]
[addLo] [d1] [d2] ... [d512]
*データ長は512バイトで固定
【命令11:イメージデータ表示】
<説明>
命令10で保存したイメージデータを画面に表示します。
<送信フォーマット>
[255] [ID(204-211)] [バイト長(9)] [命令(11)] [x] [y] [width]
[height] [colorMode(16)] [addHi] [addMd] [addLo]
■x,y:イメージを表示する場所の座標を指定します。
■width:画像の幅を指定します。
■height:画像の高さを指定します。
■colorMode: ここは常に”16”にしてください。
■addHi,addMd,addLo:イメージが保存されている先頭のセクタアドレスを指定します。2セクタ以上にイメージが保存されている場合は先頭セクタだけ指定すればセクタ間をまたいでデータが表示されます。Hiが最上位バイト、Mdが中間バイト、Loが下位バイトになります。
<送信データ例>
ID=204のボードのセクタ64番から格納されている128x128のデータを表示する場合は次のようになります。
[255] [204] [9] [11] [0] [0] [128] [128] [16] [0] [0]
[64]
【命令12:動画再生】
<説明>
マイクロSDに保存されているイメージを連続で表示します。その結果、動画再生のような表示になります。
<送信フォーマット>
[255] [ID(204-211)] [バイト長(12)] [命令(12)] [x] [y] [width]
[height] [colorMode(16)] [delay] [flaMs] [flaLs] [addHi][addMd][addLo]
■x,y:イメージを表示する場所の座標を指定します。
■width:画像の幅を指定します。
■height:画像の高さを指定します。
■colorMode: ここは常に”16”にしてください。
■delay:表示間隔をmSで設定します。
■flaMs,fraLs:再生イメージ数を2バイトで設定します。 flaMsが上位バイト、fraLsが下位バイトになります。
■addHi,addMd,addLo:イメージが保存されている先頭のセクタアドレスを指定します。Hiが最上位バイト、Mdが中間バイト、Loが下位バイトになります。
<送信データ例>
ID=204のボードのそれぞれセクタ0、64、128、192、256、320を先頭に6枚の128x128の画像が入っています。これをセクタ0から順番に再生するには次にのようになります。再生間隔は30mSとします。
[255] [204] [12] [12] [0] [0] [128] [128] [16] [30] [0]
[6] [0] [0] [0]
【命令13:画面記録】
<説明>
現在表示されている画像をマイクロSDカードに記録します。
<送信フォーマット>
[255] [ID(204-211)] [バイト長(8)] [命令(13)] [x] [y] [width]
[height] [addHi] [addMd] [addLo]
■x,y:イメージを表示する場所の座標を指定します。
■width:画像の幅を指定します。
■height:画像の高さを指定します。
■addHi,addMd,addLo:イメージが保存されている先頭のセクタアドレスを指定します。Hiが最上位バイト、Mdが中間バイト、Loが下位バイトになります。
<送信データ例>
ID=204のボードの現在の画面表示全部(128x128)をセクタ64を先頭に記録するには次のようになります。
[255] [204] [8] [13] [0] [0] [128] [128] [0] [0] [64]
<グラフィック関連>
【命令80:点描画】
<説明>
画面の任意の位置に点を描画します。
<送信フォーマット>
[255] [ID(204-211)] [バイト長(5)] [命令(80)] [x] [y] [col:msb]
[col:lsb]
■x,y:点を描画する場所の座標を指定します。
■col:msb:色上位バイト
■col:lsb:色下位バイト
<送信データ例>
ID=204のボードの(32,45)の位置に赤の点を書く場合は次のようになります。
[255] [204] [5] [80] [32] [45] [248] [0]
*赤は 11111000 00000000 になるので、色上位バイトが248、色下位バイトが0になります。各ビットが全部0だと黒、全部1(上位が255、下位が255)だと白になります。
【命令76:ライン描画】
<説明>
画面の任意の位置に線を描画します。
<送信フォーマット>
[255] [ID(204-211)] [バイト長(7)] [命令(76)] [x1] [y1] [x2]
[y2] [col:msb] [col:lsb]
■x1,y1:線のはじめの位置を指定します。
■x2,y2:線の終わりの位置を指定します。
■col:msb:色上位バイト
■col:lsb:色下位バイト
<送信データ例>
ID=204のボードの(12,24)から(20,30)の位置に赤い線を引く場合は次のようになります。
[255] [204] [7] [76] [12] [24] [20] [30] [248] [0]
*赤は 11111000 00000000 になるので、色上位バイトが248、色下位バイトが0になります。各ビットが全部0だと黒、全部1(上位が255、下位が255)だと白になります。
【命令112:四角描画設定】
<説明>
命令114で四角を描画するときに、中を塗りつぶすかどうか設定します。この命令実行後に四角を書くと設定したように描画されます。
<送信フォーマット>
[255] [ID(204-211)] [バイト長(2)] [命令(112)] [set(0/1)]
■set: 0:塗りつぶす 1:線で描画
<送信データ例>
ID=204のボードの四角描画設定を「塗りつぶす」にする場合は次のようになります。
[255] [204] [2] [112] [0]
【命令114:四角描画】
<説明>
画面の任意の位置に四角形を描画します。
<送信フォーマット>
[255] [ID(204-211)] [バイト長(7)] [命令(114)] [x1] [y1] [x2]
[y2] [col:msb] [col:lsb]
■x1,y1:四角の左上の位置を指定します。
■x2,y2:四角の右下の位置を指定します。
■col:msb:色上位バイト
■col:lsb:色下位バイト
<送信データ例>
ID=204のボードの(12,24)から(20,30)の位置に赤い四角を書くには次のようになります。
[255] [204] [7] [114] [12] [24] [20] [30] [248] [0]
*赤は 11111000 00000000 になるので、色上位バイトが248、色下位バイトが0になります。各ビットが全部0だと黒、全部1(上位が255、下位が255)だと白になります。
|