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