鈍足ランナーのIT日記

走るのが好きな5流のITエンジニアのブログ。

趣味の範囲は広いけど、どれも中途半端なクソブロガー楽しめるWebアプリを作ってあっと言わせたい。サーバーサイドPerl(Mojolicious)、クライアントサイドVue.js。Arduinoにも触手を伸ばす予定。

SD1306でグラフを描写する機能を実装しました

こちらのライブラリを改造して
github.com

無理やり感がありますがなんとかできました。

github.com
これはさすがにpullreq通る代物ではありません。

本当は、ライブラリを利用するライブラリを作りたかったけれど
元のライブラリはそもそもプログラム領域(ROM)に定義したパターンを表示というコンセプト
で作られているので、無理でした。
変数領域(RAM)を表示するようにしてなんとか表示するようにしています。
Arduinoでは貴重なRAMを消費してしまう)

f:id:kechiya:20170503101552j:plain
f:id:kechiya:20170503101539j:plain

まぁ、そんな感じですが。とりあえず完成。

使い方

domainは値の範囲を設定。
BYTE_SIZEでグラフの高さを設定します。1,2,3,4バイト。
データの長さは8の倍数で64まで設定できます。

domainという考え方はD3.jsにありましたね。
パクっております、はい。

BYTE_SIZEが4でデータが100だとつまり
32個の液晶が縦に光る感じです。

    int data[] = {
    10, 10,  20, 30, 30, 50, 60, 70,
    90, 100, 80, 95, 70, 60, 50, 40,
    10, 10,  20, 30, 30, 10, 10, 10,
    10, 10,  20, 30, 30, 10, 10, 10,
    10, 10,  20, 30, 30, 10, 10, 10,
    10, 10,  20, 30, 30, 10, 10, 10,
    10, 10,  20, 30, 30, 10, 10, 10,
    10, 10,  20, 30, 30, 10, 10, 10,
    };

    lcd.clear();
    lcd.setByteSize(BYTE_SIZE_4);
    lcd.setDomain(0,100);
    lcd.setCursor(10, 1);
    lcd.drawGraph(data, DATA_LENGTH_64);
    delay(1000);