3-3. スクロール表示
3-3. スクロール表示
3-3. スクロール表示

このような表示の事です。
今回は「スクロール表示」のアクションに挑戦します。
※スクロール‥‥表示を、形状そのままで滑るように移動させる事。
動作・各用語について
アクション
動作名 | 機能 |
---|---|
スクロール表示 アクションの仕組み |
1つの移動(シフト)アクションを複数繰り返す事で、 スクロール(表示全体の位置移動)を実現させています。 |
表示の移動する方向 | 「上から下」かつ「右から左」です。(仕様) |
アクション使用例 | まず文字を「非表示エリア」に表示させておき、アクション指示をする事で 隠れていた文字が表示画面の右端からスクロール表示されながら登場する‥‥ といった事が出来ます。 非表示エリアは前回学びましたね。表示画面の右側にある、隠れた領域の事です。 |
表示メモリ構成/他
GU128X32D-D903Sの構成表です。
前回も学びましたが、新たな内容も加え、おさらいとして再度紹介します。
用語 | 説明 | 値 | 用語 | 説明 | 値 |
---|---|---|---|---|---|
Xdots | 表示メモリのドット数(X) | 512 | Ybytes | 表示メモリのバイト数(Y) | 4 |
Ydots | 表示メモリのドット数(Y) | 32 | Max_Ybytes | 表示メモリの最大バイト値(Y) | 3 |
Max_Xdot | 表示メモリの最大ドット値(X) | 511 | Disp MemSize |
Display Memory Size (表示メモリサイズ)※バイト数 |
2048 |
Max_Ydot | 表示メモリの最大ドット値(Y) | 31 | |||
DispXdots | 表示エリアのドット数 (X) | 128 | Max_Disp MemAddr |
Max Display Memory addresses (表示メモリの最大アドレス値) |
2047 |
DispYdots | 表示エリアのドット数 (Y) | 32 |
以下も製品別の仕様です。
用語 | 説明 |
---|---|
Inttime | 製品の内部タイミング時間。以前のステップ(3-1.点滅表示)でも学びましたね。 GU128X32D-D903Sは、14ms(0.014秒)です。 |
コマンドセット
動作名 | コマンド | 機能 |
---|---|---|
スクロール 表示アクション |
1Fh 28h 61h 10h wL wH cL cH s | 表示画面の位置移動を 指定回数分 行ないます。 |
以下、各記号(赤字部分)の説明です。※長いので詳細文はクリックで開くようにしています。
コード | 動作名 | 機能 |
---|---|---|
wL (下位バイト) wH (上位バイト) |
画面シフト バイト数 |
「1つの移動アクションで、画面を何ドット移動させるか」指定します。 【指定範囲】0000h ≦ (wL + wH × 100h) ≦ Max_DispMemAddr ※今回「Max~‥」の値は 07ffh (2047) です。(上記の構成表 参照) 下位/上位バイトは、前回ステップで説明済の為、省略します。 ●横スクロール表示を行う場合 仕様の都合上、値を Ybytes の倍数にする必要があります。 これをしないと、横スクロールしません。 |
cL (下位バイト) cH (上位バイト) |
繰り返し回数 | 移動アクションの回数です。 【指定範囲】0001h ≦ (cL + cH × 100h) ≦ FFFFh(65535) 値が小さいと、すぐスクロールが終わってしまうので注意しましょう。 下位/上位バイトの考え方は、他と同様です。 |
s | スクロール 表示動作速度 |
スクロール速度を指定します。1移動の表示時間ですね。 指定すると「s × IntTime」の式から速度が決定します。 【指定範囲】00h ≦ s ≦ FFh(255) |
また沢山の情報が出てきました。こまめに休憩しつつ、進めていきましょう。
課題
以下条件のアクションコマンドで、表示文字「Hello!」をスクロールさせる。
①. アクション開始地点 | X=非表示エリアの最小メモリ値、Y=上から2列目 |
②. アクション内容 | 8ドットずつの移動を 17回繰り返す (1移動の表示動作速度:0.252秒) |
スケッチ
スケッチに移る前に、課題の条件について理解していきます。1個ずつ見ていきましょう。
①. アクション開始地点 | X=非表示エリアの最小メモリ値、Y=上から2列目 |
開始地点を指定する為に「カーソルセット」コマンドを使います。前回のステップで学びましたね。 GU128X32D-D903Sの表示メモリ構成に基づいて指定していきましょう。 ●Xについて(xL xH) 全体(表示メモリ)のドット数は 512 です。[Xdots] その内、表示エリアは(値0~127)の128ドットです。[DispXdots] となると、残りの(値128~511)の384ドットが非表示エリアとなります。 その中で最小メモリ値は128なので、Xは 128=「80h」です。 ●Yについて(yL yH) 全体のドット数は 32です。[Ydots] 8ドット=1バイトなので、全体のバイト数は4バイトです。[Ybytes] 1バイト=1列なので、4列表示が可能です。割り当ては[00h/01h/02h/03h]=[1/2/3/4列目]です。 その為、上から2列目=「01h」となります。 ※XもYも各1バイトの為、上位バイトがありません。なので何れも上位バイトのメモリ値は「00h」です。 |
②. アクション内容 | 8ドットずつ |
●移動ドット数(wL wH) 仕様上、値を4[Ybytes]の倍数にする必要がありましたね。 値4=左に1ドットずれる為、8ドット移動したい場合は、4×(8回移動)=32‥‥即ち32=「20h」です。 また、上位バイトは上記と同じく「00h」です。 ●繰り返し回数(cL cH) 17=「11h」です。17×8ドット移動=136ドット分の移動なので、表示エリア(X=128ドット)の 端から端までは繰り返される事が分かりますね。(これも上位バイトは「00h」です) ●表示動作速度(s) s×(IntTime=0.014秒)=0.252秒である為、s=0.252秒÷0.014秒となります。 式より、s=18=「12h」」となります。 |
コードが分かったので、スケッチの作成に進みます。
void loop()
{
//ここから カーソル移動
Serial.write(0x1F);
Seri l.write(0x24);
Serial.write(0x80); //X位置 指定=128 ※非表示エリア
Serial.write(0x00); //同上
Serial.write(0x01); //Y位置 指定=2列目
Serial.write(0x00); //同上
//ここまで カーソル移動
Serial.print("Hello!"); //文字表示
//ここから スクロール表示
Serial.write(0x1F);
Serial.write(0x28);
Serial.write(0x61);
Serial.write(0x10);
Serial.write(0x20); //wL :X方向8ドットずつ移動
Serial.write(0x00); //wH :同上
Serial.write(0x11); //cL :移動を17回繰り返し
Serial.write(0x00); //cH :同上
Serial.write(0x12); //s :0.252秒の表示速度
//ここまで スクロール表示
while(1){} //以降の命令を受け付けなくする
}
表示画面
こんな感じになります。
繰り返し回数や速度を変えて、スクロールのコツを
掴んでくださいね!

以上です!
スクロール表示について理解できました。
次でアクション動作のステップは終わりです。
もうひと頑張りですね!どんどん進めていきましょう。
次回は「スクリーンセーバー表示」です。
画面シフトバイト数を「Xdots×Ybytes」にする事で、画面切り替え表示も可能です。
今回は「512×4」なので、2048(0800h)となります。(上位バイト=08h、下位バイト=00h)