無料ブログはココログ

« ミント缶を電池で動かす | トップページ | Mint solution »

2018年2月16日 (金)

ミント缶の有機EL選択

SPI OLED

  ミント缶を有機EL化するテストを行っていますが、4桁アドレスを縦倍文字で表示すると、およそ10msec間DCCパケットが停止します。これでは電源リセットが起こるデコーダも有り得るので、これを回避する為SPI版を試しました。

OLEDライブラリ

  OLEDのライブラリとしてメジャーなU8glibとAdafruitですが、メモリ消費量が大きくてミント缶スケッチを組み込む空きが無くなります。因みにAdafruitのテスト結果、"hello world"のみでもプログラム使用率33%、RAMが64%でした。なのでDSmainのOLED化で使われている軽量なOzOLEDライブラリをSPI版に改造します。購入したOLEDは5ピン全てを使うモードにジャンパされていました。3線SPIに変更するのは面倒なのでこのままで行きます。

3wire

ライブラリ変更箇所

  Adafruitライブラリを参考にしながらSPIに対応しました。DC、CS信号を使うので制御線の上げ下げを実行します。DC_PINでコマンドとデータの切り換え、CS_PINでSPI.transferとSPI.endTransactionの役割を果たす様です。

void OzOLED::sendCommand(byte command){
   digitalWrite(CS_PIN, HIGH);
   digitalWrite(DC_PIN, LOW);
   digitalWrite(CS_PIN, LOW);
   SPI.transfer(command);
   digitalWrite(CS_PIN, HIGH);

void OzOLED::sendData(byte data){
   digitalWrite(CS_PIN, HIGH);
   digitalWrite(DC_PIN, HIGH);
   digitalWrite(CS_PIN, LOW);
   SPI.transfer(data);
   digitalWrite(CS_PIN, HIGH);

  メモリ使用量はROM15%、RAM3%とAdafruitに比べて大幅なダイエットに成功しました。

実行結果

  およそ1.5msecで縦2倍4文字を表示出来ました。SCKは4MHzです。

Lcd_spi_streem

  時々画面が暴走するので、CS_PIN切り換えのタイミング調整が必要なようです。
いずれにせよ、メモリを節約してSPI OLEDで表示が出来る事が確かめられて一安心です。

Mintcan_spi

« ミント缶を電池で動かす | トップページ | Mint solution »

コントローラ」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: ミント缶の有機EL選択:

« ミント缶を電池で動かす | トップページ | Mint solution »