Androidのメモとか

そふとうぇあえんじにゃーの備忘録

Nefry BTのディスプレイをサクっと触ってみる

今回はディスプレイ。

Nefry BTで強化されたディスプレイ機能を使う

Nefry BTのバージョンを1.0.8にアップデートしたら、ディスプレイ関係の関数が色々追加されてたようなので、ちょっと使ってみます。ディスプレイをコントロールするのに必要となってくるのが#include <NefryDisplay.h>。これさえ書いておけば、簡単な便利関数で好きな文字列を表示できます。

たとえば、こんな感じのコードを実行すると・・・

#include <Nefry.h>
#include <NefryDisplay.h>

void setup() {
  NefryDisplay.print("POKIO");
  NefryDisplay.print("KEIKYU");
}

void loop() {

}

Nefry BT

こんな感じで、POKIOKEIKYUと表示できました。NefryDisplay#print()という関数を使えば、簡単に好きな文字列を表示できます。ちなみに、日本語には対応していません。日本語を入力しても、何も表示されないので注意が必要。また、表示できるのは3行まで。

#include <Nefry.h>
#include <NefryDisplay.h>

void setup() {
  NefryDisplay.print("P");
  NefryDisplay.print("O");
  NefryDisplay.print("K");
  NefryDisplay.print("I");
  NefryDisplay.print("O");
}

void loop() {

}

こんな感じで4回以上NefryDisplay#print()を実行すると、最初に書き込んだ文字列は消えてしまいます。

Nefry BT

POKIOと入力しても、最後のKIOしか表示されません。ただ、1行に長文を流し込んだ場合は、文字がスクロールするので、なんとか全文読むことができます。たとえば、

#include <Nefry.h>
#include <NefryDisplay.h>

void setup() {
  NefryDisplay.print("POKIOPOKIOPOKIOPOKIO");
  NefryDisplay.print("KEIKYUKEIKYUKEIKYUKEIKYU");
}

void loop() {

}

こんな感じで、無理矢理長い文字列を入れると・・・

Nefry BT

(写真ではわかりづらいですが)文字列がスライドして、すべての文字列を表示してくれます。

Nefry BTで強化されたディスプレイ機能をもっと使う

上記の関数を使うと、簡単に文字列が表示できるものの、

  • ディスプレイ上部にNefry PrintDialogと表示される
  • 3行までしか表示できない
  • 左アライン固定、上詰め

という制限があります。そこで、NefryDisplay#drawString()NefryDisplay#drawStringWithHScroll()NefryDisplay#autoScrollFunc()を使うと、自由度高く文字列を表示できます。

#include <Nefry.h>
#include <NefryDisplay.h>

void setup() {
  NefryDisplay.setAutoScrollFlg(true);
  NefryDisplay.autoScrollFunc(pokioPrint);
}

void loop() {

}

void pokioPrint(){
  NefryDisplay.drawString(0, 0, "POKIO");
  NefryDisplay.drawString(20, 20, "POKIO");
  NefryDisplay.drawString(40, 40, "POKIO");
  NefryDisplay.drawString(60, 60, "POKIO");
}

たとえば、NefryDisplay#drawString()で関数を作って、それをNefryDisplay#autoScrollFunc()をコールするようなコードを書いてみました。NefryDisplay#drawString()では、文字を表示する位置と文字を指定できます。

Nefry BT

これを実行すると、こんな感じで好きな位置に文字列を表示できます。4行目の文字が見切れてしまっていますが、文字を縦方向に15ずつずらせば、ピッタリ4行文字列を表示できます。

#include <Nefry.h>
#include <NefryDisplay.h>

void setup() {
  NefryDisplay.setAutoScrollFlg(true);
  NefryDisplay.autoScrollFunc(pokioPrint);
}

void loop() {

}

void pokioPrint(){
  NefryDisplay.drawString(0, 0, "POKIO");
  NefryDisplay.drawString(20, 15, "POKIO");
  NefryDisplay.drawString(40, 30, "POKIO");
  NefryDisplay.drawString(60, 45, "POKIO");
}

Nefry BT

NefryDisplay#drawStringWithHScroll()を使えば、好きな位置で文字列をスクロール表示でき・・・るはずだったんですが、手元では文字が重なって表示されてしまい、上手く表示されませんでした・・・。

#include <Nefry.h>
#include <NefryDisplay.h>

void setup() {
  NefryDisplay.setAutoScrollFlg(true);
  NefryDisplay.autoScrollFunc(pokioPrint);
}

void loop() {

}

void pokioPrint(){
  NefryDisplay.drawString(0, 0, "POKIOPOKIOPOKIOPOKIOPOKIO");
  NefryDisplay.drawStringWithHScroll(0, 15, "POKIOPOKIOPOKIOPOKIOPOKIO", 10);
  NefryDisplay.drawString(40, 30, "POKIOPOKIOPOKIOPOKIOPOKIO");
  NefryDisplay.drawStringWithHScroll(40, 45, "POKIOPOKIOPOKIOPOKIOPOKIO", 10);
}

Nefry BT

何かコーディングしくじったかな・・・。

NefryDisplay#drawString()は、長い文字列だと自動で改行されるため、文字が重なっていたようです。場合によっては、改行するかしないかを気にしながらコーディングする必要がありそうです。

何はともあれ

簡単な関数でディスプレイを制御できてしまうNefry BT。使い方しだいではかなり面白いガジェットができるのではないでしょうか。

「Androidのメモとか」は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。

このブログは個人的なメモ書きであったり、考えを書く場所であります。執筆者の所属する団体や企業のコメントや意向とは無関係であります。また、このブログは必ずしも正しいことが書かれているとは限らず、誤字脱字や意図せず誤った情報を載せる場合がありえます。それが原因で読者が不利益を被ったとしても、執筆者はいかなる責任も負いません。ありがとうございます。