今回はディスプレイ。
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() { }
こんな感じで、POKIO
・KEIKYU
と表示できました。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()
を実行すると、最初に書き込んだ文字列は消えてしまいます。
P
・O
・K
・I
・O
と入力しても、最後のK
・I
・O
しか表示されません。ただ、1行に長文を流し込んだ場合は、文字がスクロールするので、なんとか全文読むことができます。たとえば、
#include <Nefry.h> #include <NefryDisplay.h> void setup() { NefryDisplay.print("POKIOPOKIOPOKIOPOKIO"); NefryDisplay.print("KEIKYUKEIKYUKEIKYUKEIKYU"); } void loop() { }
こんな感じで、無理矢理長い文字列を入れると・・・
(写真ではわかりづらいですが)文字列がスライドして、すべての文字列を表示してくれます。
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()
では、文字を表示する位置と文字を指定できます。
これを実行すると、こんな感じで好きな位置に文字列を表示できます。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"); }
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); }
何かコーディングしくじったかな・・・。
NefryDisplay#drawString()は、長い文字列だと自動で改行されるため、文字が重なっていたようです。場合によっては、改行するかしないかを気にしながらコーディングする必要がありそうです。
何はともあれ
簡単な関数でディスプレイを制御できてしまうNefry BT。使い方しだいではかなり面白いガジェットができるのではないでしょうか。