aitendoのOLED VGM12864-3S
OLEDのグラフィック表示器としては安いほうだが、1,350円なのでヘタして壊したら泣ける。
I2C/SPI/パラレル接続のどれかを選択して使えるようになってるが、I2CはいろいろややこしいのでSPIでやってみた。
I2Cだと上側の7ピンで制御できるが、SPIだと左側のCSとA0ピンも必要になるのでブレッドボードで実験するためにピンソケットを使って上側からケーブルをさせるようにした。
上側の7ピンは
1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|
VCC | GND | RESET | SCK | SDI | BS1 | BS2 |
となっていて、VCC、GNDは電源、SCK、SDIはSPIの信号線で、BS1とBS2で通信方法のI2C/SPI/パラレルを選択する。BS1、BS2をL(GND)に落とすとSPI接続になる。
ブレッドボード図
74HC4050はSPIの信号線のロジックレベルを5V->3.3Vに変換するために使っている。ブレッドボードの電源は74HC4050、OLEDともArduino Unoから3.3V供給している。
A0(青)、CS(白)、RESET(緑)は仕様通りHかLに固定すれば動作するので(←未確認)、実質クロックとデータの2線で動かせる。(I2Cの様にデータラインが双方向ではないので、5V->3.3Vに片方向で変換できれば良い)
<追記:2016.09.05>A0とCSはU8GLIBの指定通りに配線しないと動作しません。</追記>
U8GLIB
いろいろな表示器のコントローラーに対応しているライブラリで、CPUはArduino、AVR、ARMに対応している。
Arduino Uno用のライブラリをインストールするとArduino IDEでexampleが使える様になる。
aitendoのOLED(VGM12864-3S)はコントローラーがSSD1306なのでexampleのスケッチの
//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9 //U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED) U8GLIB_SSD1306_128X64 u8g(10, 9); // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are SCK = 13 and MOSI = 11)
とコメントアウトされているところの「//」を削除してu8gのコンストラクタを指定すれば動く。
U8gLogoや他のスケッチも試してみたが問題なく動作する(^q^/
思ったこと
5V系->3.3V系の変換には74HC4050は結構便利。
マイコンに限ったことではないが、キャラクタLCDと違ってグラフィックLCDは文字を表示するのも一苦労する。U8GLIBはいろいろと関数が用意されているようなので、使うLCDとMPUに合致すれば便利かもしれない。
ARM用のライブラリにPSoC 5LPもあるようだ。
0 件のコメント:
コメントを投稿