■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")); } } }
■構文
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" |
〇特殊文字も描画出来ます(下記文字マップを参照)
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を使用してテキストの縮尺を変更することができます。