しなぷすのハード製作記

ArudinoでグラフィックLCDを動かす(SG12864ASLB-GB編)(6)

ツイート
シェア
このエントリーをはてなブックマークに追加
フォロー
目次へ  前のページへ (1) (2) (3) (4) (5) (6) (7) (8) 次のページへ

12.MGLCDライブラリの主な関数(グラフィック表示編)

12-1.グラフィック座標系

SG12864ASLB-GBは、横128ピクセル、縦64ピクセルのグラフィックLCDモジュールです。MGLCDライブラリでは、画面左上が(0,0)、右下が(127,63)の座標系を使います。

図14、グラフィックの座標系
図14、グラフィックの座標系

12-2.SetPixel関数

画面に点を打つにはSetPixel関数を使います。SetPixel関数の構文は次の通りです。

SetPixel(x座標,y座標,色);

色は、黒い点を打つ場合は1を、白い点を打つ場合は0を指定してください。省略すれば、黒い点になります。

例えば、次の例では、座標(10,20)に黒い点を打ちます。(写真では見にくいですが、左の方に点を打っています)

MGLCD.SetPixel(10,20);
写真18、MGLCD.SetPixel(10,20);の実行結果
写真18、MGLCD.SetPixel(10,20);の実行結果
広告

12-3.Line関数

画面に線を引くには、Line関数を使います。Line関数の構文は次の通りです。

Line(x座標1,y座標1,x座標2,y座標2,色);

これで、(x座標1,y座標1)から(x座標2,y座標2)まで直線を引きます。色は黒の場合1、白の場合0です。色を省略すると黒い線を引きます。

例えば、次の例では、座標(10,5)から(80,55)まで、黒い直線を引きます。

MGLCD.Line(10,5,80,55);
写真19、MGLCD.Line(10,5,80,55);の実行結果
写真19、MGLCD.Line(10,5,80,55);の実行結果

12-4.Rect関数

画面に長方形を描くには、Rect関数を使います。Rect関数の構文は次の通りです。

Rect(x座標1,y座標1,x座標2,y座標2,色);

これで、(x座標1,y座標1)と(x座標2,y座標2)を対角とする長方形を、指定した色で描きます。色を省略すると黒(1)となります。

例えば、次の例では座標(10,5)と座標(80,55)を対角とする、黒い長方形を描きます。

MGLCD.Rect(10,5,80,55);
写真20、MGLCD.Rect(10,5,80,55);の実行結果
写真20、MGLCD.Rect(10,5,80,55);の実行結果

12-5.FillRect関数

もし、長方形を描く時に、枠を描くだけでなく中も塗りつぶしたいなら、Rect関数の代わりにFillRect関数を使います。

例えば、次の例では座標(10,5)と座標(80,55)を対角とする、黒い、中を塗りつぶした長方形を描きます。

MGLCD.FillRect(10,5,80,55);
写真21、MGLCD.FillRect(10,5,80,55);の実行結果
写真21、MGLCD.FillRect(10,5,80,55);の実行結果

12-6.Circle関数

円を描きたいなら、Circle関数を使います。Circle関数の構文は次の通りです。

Circle(x座標,y座標,半径,色);

これで、(x座標,y座標)を中心に、指定した半径で、指定した色の円を描きます。色を省略すると黒(1)となります。

例えば、次の例では座標(63,31)を中心に、半径30の黒い円を描きます。

MGLCD.Circle(63,31,30);
写真22、MGLCD.Circle(63,31,30);の実行結果
写真22、MGLCD.Circle(63,31,30);の実行結果

12-7.FillCircle関数

もし、外枠を描くだけでなく、円の中を塗りつぶしたいなら、Circle関数の代わりにFillCircle関数を使います。

例えば、次の例では座標(63,31)を中心に、半径30の黒い円を、中を塗りつぶして描きます。

MGLCD.FillCircle(63,31,30);
写真23、MGLCD.FillCircle(63,31,30);の実行結果
写真23、MGLCD.FillCircle(63,31,30);の実行結果

12-8.Line関数を用いたデモスケッチ

最後に、Line関数を用いた簡単なデモスケッチを紹介します。

#include <mglcd.h>

static const TLcdPinAssignTable PinAssignTable={
    A0_DI  : A3, // A0 for SG12232, D/I for SG12864
    CS1_E1 : A0, // CS1
    CS2_E2 : A1, // CS2
    E      : A4,
    RW     : A2,
    DB0    : 8 ,
    DB1    : 9 ,
    DB2    : 10,
    DB3    : 11,
    DB4    : 4 ,
    DB5    : 5 ,
    DB6    : 6 ,
    DB7    : 7
}; // PinAssignTable;

static mglcd_SG12864 MGLCD(PinAssignTable);

void setup()
{
  // LCDの初期化
  while(MGLCD.Reset());
} // setup

void loop()
{
  MGLCD.ClearScreen();
  for(int i=0; i<63; i+=7) {
    delay(200);
    MGLCD.Line(i,0,63,i);
    delay(200);
    MGLCD.Line(63,i,63-i,63);
    delay(200);
    MGLCD.Line(63-i,63,0,63-i);        
    delay(200);
    MGLCD.Line(0,63-i,i,0);     
  } // for

  delay(1000);   
} // loop
写真24、Line関数を用いたデモスケッチの実行結果(その1)
写真24、Line関数を用いたデモスケッチの実行結果(その1)
写真25、Line関数を用いたデモスケッチの実行結果(その2)
写真25、Line関数を用いたデモスケッチの実行結果(その2)
写真26、ine関数を用いたデモスケッチの実行結果(その3)
写真26、ine関数を用いたデモスケッチの実行結果(その3)

他にも色々と、グラフィック表示のための関数があるのですが、別のページにリファレンスマニュアルとしてまとめます。

次のページでは、Arduinoのスケッチからコントラストを調整する方法について考えてみます。

ツイート
シェア
このエントリーをはてなブックマークに追加
フォロー
目次へ  前のページへ (1) (2) (3) (4) (5) (6) (7) (8) 次のページへ

このページで使われている用語の解説

関連ページ

関連製品

Arduino Uno用ブートローダスケッチライタシールドキット 商品名 Arduino Uno用ブートローダスケッチライタシールドキット
税抜き小売価格 1200円
販売店 スイッチサイエンス
サポートページ
Arduino用ブートローダ/スケッチライタキット 商品名 Arduino用ブートローダ/スケッチライタキット
税抜き小売価格 2200円
販売店 スイッチサイエンス 妙楽堂
サポートページ
このサイトの記事が本になりました。
書名:Arduino 電子工作
ISBN:978-4-7775-1941-5
工学社の書籍の内容の紹介ページ
本のカバーの写真か書名をクリックすると、Amazonの書籍購入ページに移動します。
サイトマッププライバシーポリシーお問い合わせ用語集
しなぷすのハード製作記