引き続き使用するArduinoは5vなので、TA48M033Fを使用して3.3vへ降圧し、パーツ箱の中で眠っていたI2Cバス用双方向電圧レベル変換モジュール(PCA9306)を引っ張り出して使用しています。
レベル変換モジュールは、下図の様なものです。
配線は、
・VREF1 ← Arduino VCC(5v)
・SCL1 ← Arduino I2C SCL
・SDA1 ← Arduino I2C SDA
・VPU 入力なし
・VREF2 ← TA48M033F VCC(3.3v)
・SCL1 → VGM12864-3S SCK
・SDA1 → VGM12864-3S SDI
・GND ← Arduino GND
となります。
簡単に言えば、VREFに変換元電圧、変換先電圧を入力すれば、それぞれのI2Cを信号を指定電圧に変換して出力してくれる便利なものなわけです。
これから先は、VGM12864-3Sの配線をしていきます。
ここで使用するのは、正面中央上部のPIN(VCC、GND、RES、SCK、SDI、BS1、BS2)の7つとなります。(SCK、SDIは既に上記で解説済みとします。)
まずは、バスタイプをI2Cに指定する必要が有ります。
前回に記載したものを抜粋すると以下の様に配線する事でI2Cとなります。
Bus Type | BS1 | BS2 | 有効となるPIN(MCU) |
---|---|---|---|
I2C | VCC | GND | SCK(SCL), SDI(SDA), A0(SA0), RES(RES#) |
VCC、BS1は、TA48M033F VCC(3.3v)と接続、GND、BS2はArduino GNDと接続すればI2Cで起動する状態になります。
RESは、SPIで動作させた際はArduino RESETに接続して動作したのですが、今回は動作しなかったのでTA48M033F VCC(3.3v)に接続しています。試していませんがSPIの場合も同様で動くかと思います。
A0(SA0)は、スレーブアドレス選択のためSA0として機能するようですが、ここではI2Cの通信は単一スレーブなので必要ありません。
以上で配線は完了です。
表示を実行させるのは、前回同様にU8glibを使用しています。
SPI時にアンコメントした箇所をコメントアウトして下記の箇所をアンコメントすれば動作が確認出来るかと思います。
U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_DEV_0|U8G_I2C_OPT_NO_ACK|U8G_I2C_OPT_FAST); // Fast I2C / TWI
で、次回が本題となるのですが、マルツでついつい購入してしまった160×128 RGB26万色 OLEDディスプレイ +3.3V【BL160128ACRNHn$】を動かしてみたいと思います。
このBL160128Aですが、カラーOLEDとしては安かったので衝動買いしてしまったものの、解説はペラ一枚のみ、私もOLEDを使った事がない上にFPC端子のままで、変換はマルツで取り扱っていないという状況で、お勉強を兼ねてVGM12864-3Sを購入検証してきたわけです。
まだ、動くか不明ですが、VGM12864-3Sで学んだ事を反映出来れば良いなと思っています。ちなみにU8glibではBL160128AのコントローラーSSD1353に対応していないので、その辺りも含めて色々調査中です。
0 件のコメント:
コメントを投稿