ドットを描く処理をインプリメントしたので、これを
元にして、line文も作ってみた。
以前、MADさんのサイト経由で、
http://brown.ap.teacup.com/nekosan0/1940.html
DDAによるline描画処理について知ったんだけど、
昔PC-8801用に組んだline描画処理と同じ、傾きを
計算して積み上げるという処理にしてみた。
PC-8801では、640×200ドットを処理するのに、
小数桁は1バイト(8ビット)では足りなくて、
2バイト持った記憶があるんだけど、NOKIA5110液晶
は84×48と画面が小さいので、1バイトで足りる
と判断。
いざ、ロジックを組んで動かしてみても、どうやら
誤差で描画がズレるようなことはなかった。
ヨシヨシ。
問題は、ArduinoのdigitalWrite処理の遅さかな。
座標を乱数にして、300本の線を描画してみると、
およそ8秒。1本あたり、約27ミリ秒。
長さはマチマチだけど、縁取りの枠をlineで描くと、
描き終わるまでに一瞬の間があるのがわかるレベル。
うーーーーん、もうちっと速く描いてくれないかなぁ。
http://blog.galileo-7.com/?eid=86932
どうやら、digitalWriteの処理は44クロック掛かる
らしいので、これを直接ポート制御することで
高速化がはかれるだろうと思うんだけどな。
http://playground.arduino.cc/Code/PCD8544
LCDへのデータ送信処理は、参考にしたArduinoサイト
のplaygroundのスケッチで記述されているLcdWrite
関数をそのまま使っているんだけど、各信号の
上げ下げには当然digitalWriteを使ってる。
さらに、この関数で使ってるshiftOut関数も、SPI
モジュールじゃなく、ソフトウェアインプリメントで、
内部コードを見ると、データ線、クロック線ともに
digitalWriteで上げ下げしてる。
ってことは、このあたりをすべて改造したら、
結構な削減に繋がるのかな?概算はできそうだな。
まぁ、機能としてはそれなりにできてるから、速度
についてはまた後で考えようかな。先に、オシロっぽい
動きが出来ることを優先しよう。
急ぎ働き。
5110液晶がまだ在庫あるうちに補充しようと思って、
aitendoに。
http://www.aitendo.com/product/1164
在庫が結構あるっぽかったから、と思ってたん
だけど、店員さんに聞いてみたら、このキットは
どうやら店頭在庫なかたみたい。
しかたなく、
http://www.aitendo.com/product/1165
http://www.aitendo.com/product/1156
液晶モジュールとキャリー基板別々のをセットにして
買ってきた。100円高い。
100円はいいとして、基板との配線に使うゴム
みたいなやつの使い方とかが良くわかんない
から、予め取り付けてあるやつがよかったんだ
けどな。
んで、調べてみた。
http://crystal-radio.blogzine.jp/blog/2012/06/5110lcd5110av-3.html
どうやら、導体と絶縁体(ゴム?)が層状になって
いるようで、適当にそれっぽい位置にあてがえば、
それなりに配線されるっぽいなぁ。
それと、350円で3.3Vや5Vへの昇圧基板(小さくて
細い基板)のキットが売ってたので、3.3Vのを
買ってきた。
昇圧用のIC、3本足なんだけど、型番が読めない。
多分HT7733Aかなんかだろうと想像。帰って来て
から開いてみてみると、正解。
http://www.aitendo.com/product/6851
これか。
コイルがアキシャルタイプのちっちゃいヤツだから、
これだと電流は殆ど取れないだろうと思うので、
インダクタだけはもうちょっと大型のに変えておいた
方がいいかな。
ふと、あきばおーに行ったら、USB電源が売ってる
んじゃないかなぁと思って、立ち寄ってみる。
ビンゴ!
売ってたよ。売ってた。狙い通りの品が。
単3電池2本で、昇圧かけて、スイッチでオン/オフ
出来るパッケージ。まさに狙い通り。シメタ!
んで、買って帰って来て、電池を入れて動かしてみる。
…とりあえず、期待通りの5Vがでてきた。
でも、大きさとか考えると、どう見ても表示されて
いる「5V500mA出力」は無理っぽい。
っつーか、無理ゲーだろ。
んで、例によって、色々な抵抗負荷掛けて、実験を
してみた。
実験の結果はまた明日にでも。
それにしても、LED付いてるっていうのは、いざと
言うときに向けて、意外と便利かもしれないな。
|