昨日作った、ネイキッドArduino用のシリアル
コネクタを使って、MEGA328、3.3V動作のArduino
として動かしてみる。
この間aitendoで買ってきた、SSD1306搭載の
OLEDを、SPIで繋いで動かしてみるというもくろみ。
この間から作っている、
液晶画面オシロを表示するモックアップのスケッチ
があるので、このSPI通信部分とかをチョイチョイ
弄って、128×64ドットのOLED表示に対応させてみる。
制御方法自体はそれほど変わらないので、初期化の
パラメタの渡し方あたりを弄るだけで、とりあえず
それなりに画面が表示できた。
こんな感じで、ちっちゃいブレッドボード1枚に
Arduinoの機能一通りと、OLEDが収まっちゃう。
なかなか便利な代物。自画自賛。
画面サイズが大きくなった分、表示処理の各定数
は弄ってないので、下部と右側に不自然な余白が
できちゃうんだけど、まぁ表示の確認だけなので、
これはこれで。細かいところはあとでまた。
ちなみに、スクリーン下側は表示してない余白が
たくさんあるように見えるけど、単に外枠が
こんな風になっているだけなので、実際は128×64
のほぼ全域を使って、先ほどの表示という具合。
ちなみに、文字的なものや模様的なものが表示できて
から、ここまで化けずに表示出来るようになるまで、
色々処理を弄りなおして、小一時間。
これまでは8ビット変数(char)で計算が足りてた
部分が、横128ドットになった途端、8ビットでは
足りなくなったのが大きな理由。その他、定数を
ベタ打ちしてたコードを、もう少し綺麗に書き直し
したりなど。
ちゃんと表示できるまでの間、電源入れて、中途半端
な表示を出したままにしてた時間があったので、
気付いたら、既に少し画面に焼きつきができてた。
全画面を白で塗りつぶすと、焼きつきしちゃった
部分の文字とか直線とかが、うっすらと。
うーーーーん。1時間くらいの間に焼きつきが
できちゃうのか。OLEDって。
まぁ、くっきりってほどじゃないし、さっきの
写真みたいな「文字やグラフ」を表示してる
分には、くっきり映って見えるから、それほど
気にする必要もないんだけど。
NOKIA5110液晶と比べると、SSD1306 OLEDの
128×64ドットは、VRAMサイズがおよそ倍に
なっちゃう。
モックアップ画面の表示を行うだけでも、
(FFT処理とか含めて)残りのSRAMはもはや
100バイトちょっとしか残ってない。
このOLEDの表示にも対応させるには、どうやら
スクリーン全体をグラフィックVRAMで持つのは
無理っぽい。
実際にグラフを各部分だけVRAMを用意して
おいて、文字表示するだけの部分については、
VRAMを持たずに常に上書き描画でいいかな。
まぁ、大量にメモリを食うFFTとVRAMはもう
組み込んであるから、もしかしたら残りは
100バイトもあれば足りるかもしれないけど。
|