Seeed Studio XIAO ESP32C3を購入したので、色々単体検証を実施中。動くもの、うごかないものの癖をメモっていきます。
SSD1306の有機LEDディスプレイ
利用には、U8g2を利用。結論はXIAO ESP32C3で利用できる。サンプルコードにJAPANESEというのがあるけど、文字化けしちゃうので、調べたところたぶんフォントをコンバートしたりなかなか手順が多そうだったが、オンラインで必要な表示したいラベルをフォン化してくれるサービスを発見したのでご紹介。
U8g2
ライブラリマネージャーでダウンロードして、サンプリコードを実行
問題なく動作。Esp32-C3はArduinoに比べて起動が早いのですぐに表示されるのが嬉しい。
U8g2日本語
超簡単日本語表示の手順だけ書きます。
- U8g2のサンプルプログラムが動くこと
- コーディングにはページバッファーを利用する(利用しないと文字化けしました)
- 必要なフォントを生成機でダウンロード(以下のURLから)
- ダウンロードしたファイルをコンパイルするinoと同じディレクトリに入れる
- インクルードして、コンパイル
フォントのダウンロード
これまで、U8g2フォントを生成するなど結構手間がかかりましたが、とりあえず、日本語を出したい場合、このサイトで生成できます。
https://www.kidsgo.net/u8g2/index.php#converter
ここに必要なダブルバイトの日本語(ひらがな、かたかな漢字)を入れていきます。
最大4Kまで入れられるそうです。
入れたら、今すぐ生成ボタンでダウンロード
ダウンロードしたファイルは組み込みたいArduinoのプログラムと同じでディレクトリに保存します。
二行追加するだけ
Arduino IDE上の開発画面で、サイトに表示されている、フォントファイル名をインクロード
#include "u8g2_font_30f202xxxxxxxxxxxxx.h"
ファイル名はダウンロードごとに変わりますー
フォントを読み込みます。
u8g2.setFont(u8g2_font_unifont_myfonts);
テストコード
/*
#include <Arduino.h>
#include <U8g2lib.h>
#ifdef U8X8_HAVE_HW_SPI
#include <SPI.h>
#endif
#ifdef U8X8_HAVE_HW_I2C
#include <Wire.h>
#endif
#include "u8g2_font_30f202xxxxxxxxxxxxx.h"//ここにこのソースと同じディレクトリに配置した上記でダウンロードしたフォントファイルをインクルード
// お手持ちのディスプレイを指定
U8G2_SSD1306_128X32_UNIVISION_1_HW_I2C u8g2(U8G2_R0, /* reset=*/U8X8_PIN_NONE, /* clock=*/SCL, /* data=*/SDA); // pin remapping with ESP8266 HW I2C
void setup(void) {
u8g2.begin();
u8g2.enableUTF8Print(); //UTF8文字を有効化
Arduino print() function
}
void loop(void) {
u8g2.setFontDirection(0);
u8g2.firstPage();
do {
u8g2.setFont(u8g2_font_unifont_myfonts);//ダウンロードした日本語ファイルを有効化
u8g2.setCursor(0, 13);
u8g2.print("おはよ!");
u8g2.setCursor(0, 26);
u8g2.print("元気?(^^)");
} while (u8g2.nextPage());
delay(1000);
}
まとめ
これなら簡単に、必要な文字だけ組み込めるなのでシステムメモリーも軽軽量化。現在はフォントサイズが指定ですが、綺麗に表示できました。ちゃちゃっと日本語表示したい方は便利です。ちなみに、簡体字、繁体字(香港)、韓国語などのダブルバイトも行けるそうです。国際語対応するのが簡単です!
これで簡単に表示器を作れるので何作ろうかな。