[Arduino] OLEDで「在室」表示(1)

OLEDで表示するで、OLEDにAdafruitのデモ画面を表示しました。
今回は、タクトスイッチを使って、「在室」「不在」を表示する、プログラムを作ります。(研究室にほしいから)

在室、不在は、日本語ですので、日本語フォントが必要です。しかし、メモリ領域が小さいArduinoに日本語表示させるのは酷です。Adafruitのデモですでに、メモリが少ないと警告が出ているはずです。
そこで、在室、不在の4文字ならば、画像として表示させようというのが今回の意図です。

こちらも参考
https://learn.adafruit.com/monochrome-oled-breakouts/arduino-library-and-examples

http://lcd-assistant.software.informer.com/

からlcdassistant.zipをダウンロードします。

テキストエディタなどで「在室」と入力し、コピーしてirfanviewなどの画像編集ソフトに貼り付けます。
BITMAP形式で、128×64以下、2色になるように調整して、bmp形式で保存します。
lcdassistant.exeを起動し、保存したbmpファイルを開き、適当なファイル名でiruyo.cppで保存します。

OLEDで表示するで、接続がきちんとされていて、OLEDにAdafruitのデモ画面が表示されていることを確認しましょう。

デモファイルから余分なのを消して、ここに貼り付けるに、先ほどできたファイルをテキストエディタで開き、コードを貼り付けます。

省略
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
const unsigned char PROGMEM iruyo [] = {
ここに貼り付ける
};
#if (SSD1306_LCDHEIGHT != 64)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif
int x = 0;
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // initialize with the I2C addr 0x3D (for the 128x64)
display.clearDisplay();
}
void loop() {
if (x < -128) {x=128;}
display.drawBitmap(x,0, iruyo, 128,64, WHITE);
display.display();
display.clearDisplay();
x=x-2;
}

コンパイルして書き込めば表示されるはずです。ちなみに、OLEDはその特性上、ずっと表示していると焼き付くので、このようにスクロールさせるか、スクリーンセーバーを起動する。画面を消すなどの処置が必要です。

あと、2色の画面を購入するとこんなふうに残念なことになります。

上部の黄色の部分を電波の強度や時刻を表示して、下部の青い部分に文字を表示するとよいかもしれませんね。