大分経ってしまいました。
そろそろ作りだします。ちなみに、自作CNCは、まだ完成していません。
外観設計(ケース製作)
全体構造を設計します。ケースは、例によって3Dプリンタで作ります。
こじんまりした、構造と思ってましたが、結局は、ヤマハのチューナと同じ外形寸法で作ることにしました。(バイオリン教室で、他の生徒さんが良く使っているものです。自分は、KORG製ですが)
寸法 111×74×18mmの中に、いかに埋め込むか、それなりに試行錯誤しました。裏側から見た図です。真ん中の四角い穴がLCDパネルがはまるところ。
実は、ここまで製作が遅れたのは、FreeCADでのモデル作成で、エラーが解消できなかったためでした。四隅のネジ止めのところが上手くいかず、結局、モデルをほぼ最初から作ることに。
で実際の製作結果です。写真では、秋月で買った1.77インチLCDパネルを嵌めてみたところ(当然裏から見たところ)
LCDの上に、基板を載せるイメージです。
LCDパネルのテスト
今回の新規部品であるLCDパネルの使い方確認を兼ねてテストです。秋月のサイトからダウンロードしたマニュアルだけでは良くわからないので、ネットを探るとちょうど同じパネルのdemoプログラムがGitHubにありました。
github.comただし、これは、Seeeduino用のプログラムだったので、少し改造して、とりあえず動作の確認ができました(写真の青のグラデーション表示は、GitHubのdemoプログラムにはありません)。ElegooUnoとLCDパネルの間にあるのは、3.3V-5.0Vレベル変換用の74HC4050です。
と、簡単に出来たように書いてますが、いろいろ悩んだ末にたどりつきました。
その理由は、何といってもインターフェース仕様の解釈です。
マニュアル(ILI9163V)には、一応、SPI(LCDパネルとしては、4wire-SPI)とありますが、
信号名称がCSX、SCL、SDA、D/CXとなっていて、(SCL、SDA)ときたらI2Cではないですか。でも、D/CXって何って思いましたが。
4線SPIでは、普通は信号線は、CS(SS)、SCK、MOSI、MISOだと思うので、一体どっちなんだと。
ネットを幾つか探しても、ILI9143Vは、SPIだと書いてあるし、Aruduioのスケッチ例もありましたが、”SPI.h”をインクルードしているようです。また、マニュアル(ILI9143V)を良く読むと、D/CX信号でコマンドとデータバイトを識別しているともあり、単純なSPIインターフェースでは動かないのでは等々。
で、ようやくたどり着いたのが、先に紹介したGitHubでしたが、ここまで来て改めて理解しました。
ILI9143Vは、SPIではないが、描画コマンドを設定するだけなら、SPIインターフェースと同じ動作で動かすことができる
ということかと。
ちなみに、GitHubのSeeduino用プログラム変更したのは、以下のIO定義と、スタティックRAMのサイズの違い(Aruduinoが2Kしかない)による、vram[]変数の取り扱い位です(当然メモリが少ないのでその範囲で制限しただけなので、同じ表示にはなりませんが、テスト用としては十分でした)。Aruduionのpin13-11が、SPI.hライブラリで使う信号線です。
//Aruduino Uno // //13 SCK //12 MISO //11 MOSI //10 SS //9 DC //8 RST #define TFTCS 10 // chip select #define TFTCD 9 // command/data #define SPICLK 13 // clock #define SPIDAT 11 // data #define TFTRST 8 // reset
今後の計画
LCDが何とか使えそうになったので、個々の要素を作り上げていきます。LCDつながりで、成果が見えやすい画面構成あたりから作っていこうかな。