前日の記事は @ykarakita さんで、AWS DeepLensのトレーニング済みサンプルモデル全部試す! でした。
AWS DeepLensうらやましくなんか…!うぅ
さて、本日はNefryBTで何かやるということでしたが、日本語フォントを表示してみました。
概要
NefryBTに日本語を表示させよう!
既存プロジェクトの調査
Arduino上で日本語を表示させるプロジェクトは、いくつかあります。
Arduino-misakiUTF16
https://github.com/Tamakichi/Arduino-misakiUTF16
解説記事:http://nuneno.cocolog-nifty.com/blog/2016/03/arduino-e818.html
Arduinoに美咲フォントを組み込むプロジェクト。
簡単に使えるがライセンスが不明。
まあアドベントカレンダーで使うぐらいなら大丈夫でしょう。
ESP8266-KanjiFont-Library-SPIFFS
上の美咲フォントのライブラリの上位(?)プロジェクト。
こちらはライセンス表記ありで独自ライセンス。
ShinonomeFONTread
https://github.com/mgo-tec/ShinonomeFONTread
解説記事:https://www.mgo-tec.com/blog-entry-adafruit-oled-ssd1351-lib01.html
Arduinoに東雲フォントを組み込むプロジェクト。
MITライセンス。
作ってみよう
今回はライブラリの依存が少なく、導入方法がシンプルなArduino-misakiUTF16を使うことにしました。
ライブラリの改造
そのままだとESP系のデバイスで動かそうとするとコンパイルエラーになってしまうので、
少し書き換えました。
#include <avr/pgmspace.h>
↓
#if defined(ESP8266) || defined(ESP32) || defined(ESP31B)
#include <pgmspace.h>
#else
#include <avr/pgmspace.h>
#endif
プロジェクトをForkしてパッケージにしておきました。
使いたい場合は、ArduinoIDEの**.ZIP形式のライブラリのインクルード**でインストールできます。
サンプルコードの作成
とりあえず雑に作ったサンプルが以下になります。
#include <Nefry.h>
#include <NefryDisplay.h>
#include <NefrySetting.h>
#include <misakiUTF16.h>
void setting(){
Nefry.disableDisplayStatus();
}
NefrySetting nefrySetting(setting);
void misakiPrint(int x, int y, char * pUTF8) {
int n=0;
byte buf[20][8]; //160x8ドットのバナー表示パターン
while(*pUTF8)
pUTF8 = getFontData(&buf[n++][0], pUTF8); // フォントデータの取得
// 文字の描画
for (byte i=0; i < 8; i++) {
for (byte j=0; j < n; j++) {
for (byte k=0; k<8;k++) {
if(bitRead(buf[j][i],7-k)) {
NefryDisplay.setPixel(x + 8*j + k , y + i);
}
}
}
}
}
void setup() {
NefryDisplay.clear();
misakiPrint(0,0, "みさきフォントで書き出してみる☆");
misakiPrint(0,16, "5000兆フロップス欲しい!!");
misakiPrint(0,24, "5000兆フロップス欲しい!!");
misakiPrint(0,32, "5000兆フロップス欲しい!!");
misakiPrint(0,40, "5000兆フロップス欲しい!!");
NefryDisplay.display();
delay(5000);
NefryDisplay.clear();
misakiPrint(60,28, "ざわ…");
NefryDisplay.display();
delay(1500);
misakiPrint(15,50, "ざわ…");
NefryDisplay.display();
delay(1500);
misakiPrint(80,36, "ざわ…");
NefryDisplay.display();
delay(1500);
misakiPrint(20,3, "ざわ…");
NefryDisplay.display();
}
void loop() {
}
動かしてみた。
NefryBTで日本語表示テスト pic.twitter.com/hixqO3LlKX
— えむにわ (@m2wasabi) 2017年12月7日
ざわざわ便利ですね。これを発明した福本伸行先生は天才ですね。
さいごに
ディスプレイに日本語が表示できると、可能性が広がりますね。
ゆくゆくはNefryのファームウェアに組み込めればいいのですが、その場合はライセンスがクリアなライブラリを採用すべきですね。
今後もNefryBTの使い道を広げていきましょう。
明日は @algopia さんで、画像認識とIoTの話らしいです。お金になりそうな話ですね…!