2010/10/20(水)NokiaLCDライブラリに日本語フォントを組み込んだぞ

2010/10/20 11:53 mbedimportnucho
以前NokiaLCDにNOKIA3300用の設定を追加したものを書きましたが、
今回はさらに美咲フォントを組み込んで日本語表示ができるようにしました。

これにあたって
AD-12864-SPIのコントローラ
mbedからOLEDに日本語表示しましたよ
のお二方のプログラムをパクり…、もとい参考にさせて頂きました。どうもありがとうございます!

ついでに"\n"で改行されるようにもしたので、元からの変更点は
  • NOKIA3300用の設定の追加
  • 日本語フォントの追加
  • "\n"による改行の追加
となります。

動いたところ

101021-130328.jpg

昇圧回路をどこかにやってしまったので、またバックライトが点いてません…。
恰好悪いし見づらいのでそのうち写真差し替えます。
差し替えました。ぴかーん。

プログラム

上の写真はライブラリをインポートしてmain文を以下のようにしたものです。
#include "mbed.h"
#include "NokiaLCD.h"

NokiaLCD lcd(p5, p7, p8,p9,NokiaLCD::LCD3300); // mosi, sclk, cs, rst


int main() {
    lcd.background(0x0000FF);
    lcd.cls();
    lcd.fill(2, 51, 128, 10, 0x00FF00);
    lcd.fill(50, 1, 10, 128, 0xFF0000);
    lcd.locate(0,4);

    lcd.printf("   胎児よ\n\n");
    lcd.printf("   胎児よ\n\n");
    lcd.printf("   何故躍る\n\n");
    lcd.printf("   母親の心がわかって\n\n");
    lcd.printf("   おそろしいのか\n\n");

    for (int i=0; i<130; i++) {
        lcd.pixel(i, 80 + sin((float)i / 5.0)*10, 0x000000);
    }
}

NokiaLCDは元々Streamクラスという抽象クラスを継承しているので、純粋仮想関数となっている_putc()を書き換えるだけで簡単にprintfに対応させることが出来ました。

また、mbed Compilerは日本語の入力に対応していませんが、コピペで貼り付ければ一応表示できます
ただ"Invalid multibyte character sequence"というwarningが出てくるのと、一度閉じると文字化けしてしまうことに注意してください。

余談になりますが、フォントを移植しようとした際にコメント文に文字化けが入っていたのが原因でテーブルデータがずれて読み込まれるということがありました。
コピペで入力できるものの予期しない動作をする可能性があるので、本当はLynx-EyEDさんのようにフラッシュから読み込むという風にした方がいいかと思います。

それでは、作ったライブラリはここに置いておきます。
NokiaLCD_With_JapaneseFont

10/20追記

あら、「表示」と表示させようとしたら化けてしまいました。
液晶の表示向きの関係で90度回転させたやつが使えなかったので、適当に90度元に戻した奴を準備してたんですが、そのせいで一部のフォントが崩れたのかな…。
元気があるときに調べてみます。