ミント缶の有機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に変更するのは面倒なのでこのままで行きます。
ライブラリ変更箇所
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です。
時々画面が暴走するので、CS_PIN切り換えのタイミング調整が必要なようです。
いずれにせよ、メモリを節約してSPI OLEDで表示が出来る事が確かめられて一安心です。
« ミント缶を電池で動かす | トップページ | Mint solution »
「コントローラ」カテゴリの記事
- wio terminalその4(2022.05.02)
- wio terminalその3(2022.04.22)
- wio terminalその2(2022.04.14)
- ALTOISサイズ缶(2022.04.03)
- Wio Terminal(2022.01.29)
コメント