Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

前日の記事は @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

https://github.com/Tamakichi/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の話らしいです。お金になりそうな話ですね…!

m2wasabi
iotlt
IoT縛りの勉強会です。 毎月イベントを実施しているので是非遊びに来てください! 登壇者を中心にQiitaでも情報発信していきます。 https://iotlt.connpass.com
https://iotlt.connpass.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした