この間の、ラジオペンチさんのUC1701液晶の記事
http://radiopench.blog96.fc2.com/blog-date-20150125.html
を参考に、Arduinoでいじってみることに。
まずは、ラジオペンチさんに倣って、u8glibを
そのまま使って動かしてみることに。
配線は、ラジオペンチさんのコードにあわせてみた。
バックライトのLEDの制限抵抗は、最初300Ωを繋いで
みたところ、十分明るかったんだけど、写真撮るには
もう少し明るいほうがいいかな、と思って、75Ωを
繋いでみたのがこの写真。
ちなみにマイコンは、内蔵RCの8MHz発振にしてある
3.3V動作のワンチップArduinoを使用。
adafruitのシールが貼ってある。
(写真だと見えにくいけど)
んで、simさんのtwitterで、
https://twitter.com/Sim0000/status/547803795917254656
ST7565と互換っぽいことが書かれていたので、スケッチ
をST7565のものを使い、ピン配置だけこれにあわせて
実行してみた。
例のパターンを表示するスケッチ。
初期化コードがまずいのか、スケッチがどこか変
なのかがよくわからないんだけど、1行おきに、
左に2ドット空きができて、そこに微妙にごみが
表示されるんだよな。
あと、コントラストの指定値はちょっと変えてある。
さらに、adafruitの、例の有名なST7565用スケッチも
動かしてみた。
まぁ、表示されるんだけど、やっぱりこれもほかのST7565
液晶と同じように、上下半分が逆に表示されるんだよな。
まぁ、モノとしては壊れていないことはわかったので、
u8glibのUC1701初期化コードを探してきて、その初期化
コードを、以前作ったSSD1306用のサンプルスケッチ
(オシロの作りかけのやつをSSD1306にフィットさせて
みたもの)に組み込んでみた。
出た。出た。しめしめ。左端のノイズとかも無い。
けど、一部の文字が表示されないな。何でだろう?と
思って、しばらく迷って困って、調べても調べても、
原因わからずで困ってたんだけど、どうやら、以前
アレンジしていたSSD1306のときも、
こんな風に、一部の文字が表示されてなかった。
本当は、以前NOKIA5110で表示したみたいに、
こういう風に表示したいんだけど…
NOKIA5110で表示したときとの違いはというと、
スクリーンサイズが大きく違うので、これは多分
メモリサイズじゃないかなと。メモリ不足。
MEGA328のSRAMでは、このサイズだとぎりぎりアウト
になるみたい。
VRAMだけで1KB食って、さらにFFTライブラリも
取り込んでるので、もういっぱいいっぱい。
まぁ、UC1701の初期化処理自体は、u8glibを読んで
みたら、わかった。やっぱり、
u8g_dev_uc1701_mini12864.c
の中で書かれている
uint8_t u8g_dev_uc1701_mini12864_init_seq[]
という配列内部の16進数の並びがそのものだった。
そこが知りたかった。
(ソース中にコメントも書かれてるので、内容は
なんとなくわかるかと)
このc言語ファイルは、以下の場所に。
arduino-1.0.5\libraries\U8glib\utility
ちなみに、配列の要素は、16進数以外の値も
入っているんだけど、これらはどうやら、この
ライブラリ内で、特殊文字(エスケープ文字)
として定義しているデータっぽい。
出力処理内で「時間稼ぎ」を行わせたり、
チップセレクトとかの端子を制御させたりと
いった意味になっているみたいなので、その
あたりを踏まえて、個別にロジック展開してみた。
なお、データの出力処理は、SSD1306のコードと
まったく同一のまま使ってるんだけど、この
あたりのデータフォーマットは同じものと考えて
よさそう。
ビットイメージの指定も、カーソル位置の指定も、
まったく同じ。
まぁ、似通ったハードだから、あんまり選択肢
なんぞないんだろうな。
初期化コードがわかっちゃえば、あとは似通った
ハード向けのコードやライブラリがカンタンに
流用できるかと。
オシロ全体として、まだまとまってないので、
ある程度まとまったら、例によってArduinoの
ページに、自作のライブラリ丸ごと含めて
整理しておく予定。
この液晶、500円前後と安いながら、機能はなかなか
なものがあるんだけど、表示のコントラストが少し
薄めなのかな。NOKIA5110のほうが、コントラストは
高めみたい。
まぁ、便利だし安いから、あといくつか手元に
置いておきたいな。
|