NOBのArduino日記!

NOBのArduino日記!

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

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

■gb.display.print関数
 Gamebuimo.hライブラリのgb.display.print関数は、人間が読めるASCIIテキストとして画面にデータを描画します。

■使用例
 gb.display.print関数を使ったArduinoIDEのプログラム例は図1の通りです。
このプログラムを実行するとsetup関数中のgb.begin関数でGamebuinoオブジェクトを初期化し、gb.titleScreen関数で画面に「Color example」と表示します。
 スタート画面でキーボードの「K」(GamebuinoのA)ボタンを押すと画面上に矩形、ビットマップ、またgb.display.print関数によってテキストが表示されます。
 「←」ボタンを押すと「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.print(val)

■パラメータ
 val:描画する値(任意のデータ型)

■戻り値
 ありません。

■補足
 〇この関数で使用出来る形式
  数字    :各桁にASCII文字を使用して描画されます。
  浮動小数点数:ASCII数字として出力され、デフォルトは小数点以下2桁です。
  バイト   :1文字として送信されます。
  文字と文字列:そのまま送信されます。

Serial.print(78) "78"
Serial.print(1.23456) "1.23"
Serial.print('N') "N"
Serial.print("Hello world.") "Hello world"
 

 〇2番目のパラメータ(オプション)
   使用する形式を指定します。
   ※BIN(2進数)、OCT(8進数)、DEC(10進数)、HEX(16進数)等。
   浮動小数点数の場合、このパラメータは使用する小数点以下の桁数を指定します。

Serial.print(78, BIN) "1001110"を与える
Serial.print(78, OCT) "116"
Serial.print(78, DEC) "78"
Serial.print(78, HEX) "4E"を与える
Serial.println(1.23456, 0) "1"
Serial.println(1.23456, 2) "1.23"
Serial.println(1.23456, 4) "1.2346"
 

 特殊文字も描画出来ます(下記文字マップを参照)

   イメージ 1

Serial.print("\25Accept") Aボタンのシンボルに続いて "Accept"
Serial.print("\23\24") 音波でスピーカー記号を与える
Serial.print("\7") 空のバッテリー記号を与える
 

 〇RAMをスペアするには
  フラッシュメモリベースの文字列をF()でラップしてSerial.print()に渡します。

Serial.print(F("Hello World"))

 〇印刷する場所の設定
  印刷する場所をgb.display.cursorXとgb.display.cursorYを使用するように設定します
  テキスト/数字の印刷後、カーソルは印刷されたものの最後になります。
 

 〇使用するフォントの変更
  gb.display.setFontで使用するフォントを変更することができます。

 

 〇テキストの縮尺の変更
  gb.display.fontSizeを使用してテキストの縮尺を変更することができます。

 

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

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