LoginSignup
14
7

More than 5 years have passed since last update.

NefryBTで日本語表示させてみる

Last updated at Posted at 2017-12-07

前日の記事は @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形式のライブラリのインクルードでインストールできます。

misakiUTF16_1.04.zip

サンプルコードの作成

とりあえず雑に作ったサンプルが以下になります。

nefry_misaki_font.ino
#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() {
}

動かしてみた。

ざわざわ便利ですね。これを発明した福本伸行先生は天才ですね。

さいごに

ディスプレイに日本語が表示できると、可能性が広がりますね。
ゆくゆくはNefryのファームウェアに組み込めればいいのですが、その場合はライセンスがクリアなライブラリを採用すべきですね。

今後もNefryBTの使い道を広げていきましょう。

明日は @algopia さんで、画像認識とIoTの話らしいです。お金になりそうな話ですね…!

14
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
7