NOBのArduino日記!

NOBのArduino日記!

趣味は車・バイク・自転車・ラジコン・電子工作です。

Arduino IDE(gb.display.setColor関数の使い方)

■gb.display.setColor関数
  Gamebuimo.hライブラリのgb.display.setColor関数は、すべての表示機能で画面上の描画に使用する色を変更します。
 色は、WHITE、BLACK、GRAYまたはINVERTのいずれかになります。
 ほとんどの表示関数は一つの前景色しか持ちませんが、一部の機能には背景色もあります。※例:gb.display.drawBitmap、gb.display.drawChar、gb.display.print
 INVERTカラーはdrawCircle関数とfillCircle関数では動作しません。
 これら関数は、使用するアルゴリズムが同じピクセルに何度も渡されるため、色その都度反転して矛盾するからです。

■使用例
 gb.display.setColor関数を使ったArduinoIDEのプログラム例は図1の通りです。
このプログラムを実行するとsetup関数中のgb.begin関数でGamebuinoオブジェクトを初期化し、gb.titleScreen関数で画面に「Color example」と表示します。
 スタート画面でキーボードの「K」(GamebuinoのA)ボタンを押すと画面上に矩形、ビットマップ、テキストが表示されます。
 「←」ボタンを押すと「INVERT」、「→」ボタンを押すと「WHITE」、「↓」ボタンを押すと「GRAY」色に設定された各種キャラクタが画面に表示されます。
 参考に図1プログラムをHEXファイルに変換し、それをSimbuino4Webエミュレートした結果を図2に示します。

#include <SPI.h>
#include <Gamebuino.h>
Gamebuino gb;

//ビットマップエンコーダを使用してエンコードされたビットマップ : http://gamebuino.com/wiki/index.php?title=Download
const byte pointerBitmap[] PROGMEM = {16, 22, 0xC, 0x0, 0x12, 0x0, 0x12, 0x0, 0x12, 0x0, 0x12, 0x0, 0x13, 0x80, 0x12, 0x70, 0x12, 0x4C, 0x12, 0x4A, 0xD2, 0x49, 0xB0, 0x9, 0x90, 0x1, 0x90, 0x1, 0x40, 0x1, 0x40, 0x1, 0x20, 0x1, 0x20, 0x2, 0x10, 0x2, 0x10, 0x2, 0x8, 0x4, 0x8, 0x4, 0xF, 0xFC,};

void setup() {
   gb.begin();
   gb.titleScreen(F("Color example"));
   gb.setFrameRate(42); //より良い結果を得るには、周波数を毎秒42フレームに設定します。
}

void loop() {
   if (gb.update()) {
       //使用する色を黒に設定します。 2番目の色が指定されていない場合、背景は透明です
       gb.display.setColor(BLACK);
       gb.display.fillRect(34, 0, 16, 48);


       //使用可能な色は次のとおりです。
       //   白
       //   黒
       // INVERT:負の効果
       // GRAY:ピクセルをすばやく点滅させて画面の永続性を使用してグレーを作成する
       //実験では、毎秒42フレームで画面を実行すると、グレー
       //カラー値を変数に格納することができます:バイト色= BLACK;
       //背景と前景色が同じ場合、背景は透明のままです。バイト背景=白;
       //条件によって色を変えることができます
       //ここではボタンを使用します:

       if (gb.buttons.repeat(BTN_RIGHT, 1)) {
           color = WHITE;
           gb.display.println(F("WHITE"));
       }
       if (gb.buttons.repeat(BTN_LEFT, 1)) {
           color = INVERT;
           gb.display.println(F("INVERT"));
       }
       if (gb.buttons.repeat(BTN_DOWN, 1)) {
           color = GRAY;
           gb.display.println(F("GRAY"));
       }

       //ボタンが押された場合の背景色を変更する :
       if (gb.buttons.repeat(BTN_A, 1)) {
           background = BLACK;
           gb.display.println(F("BLACK"));
       }
       if (gb.buttons.repeat(BTN_B, 1)) {
           background = INVERT;
           gb.display.println(F("INVERT"));
       }

       //上で定義した色を設定する
       gb.display.setColor(color, background);

       //次にいくつかを描画します。
       //矩形
       gb.display.fillRect(20, 16, 16, 16);
       //ビットマップ
       gb.display.drawBitmap(20, 16, pointerBitmap);
       //いくつかのテキスト
       gb.display.cursorX = 40;
       gb.display.cursorY = 0;
       gb.display.fontSize = 2;
       gb.display.print(F("Text"));
       gb.display.fontSize = 1;


       //Cを使用した時にユーザーがタイトル画面に戻ることを許可する。
       if (gb.buttons.pressed(BTN_C)) {
           gb.titleScreen(F("Bitmap example"));
       }
   }
}
イメージ 1
図1:プログラム例
 

 イメージ 1
図2:プログラム実行結果

 

■構文
 gb.display.setColor(foregroundColor,backgroundColor)

■パラメータ
 foregroundColor :WHITE、BLACK、GRAYまたはINVERT
 backgroundColor:WHITE、BLACK、GRAYまたはINVERT(optional)
          背景色が指定されていない場合、背景は透明です。

■戻り値
 ありません
 

イメージ 1 イメージ 3
励みになりますのでよければクリック下さい(^o^)/

↩【Gamebuinoリファレンス】目次に戻る