SUPPORT

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){}            //以降の命令を受け付けなくする
}

 

表示画面

  画面外(右)からHello!がスクロール
クリックでアニメ開始

こんな感じになります。
繰り返し回数や速度を変えて、スクロールのコツを
掴んでくださいね!





  挿絵

 以上です!

 スクロール表示について理解できました。
 次でアクション動作のステップは終わりです。
 もうひと頑張りですね!どんどん進めていきましょう。

 次回は「スクリーンセーバー表示」です。

 

 


ちょっとしたメモ

 

 画面シフトバイト数を「Xdots×Ybytes」にする事で、画面切り替え表示も可能です。
 今回は「512×4」なので、2048(0800h)となります。(上位バイト=08h、下位バイト=00h)

 


当ウェブサイトでは、お客さまによりよいサービスをご提供するため、Cookieを使用しています。
Cookieを無効にする方法を含め、当社のCookieの使用については「個人情報保護方針」をお読みください。

OK