I2C接続のOLEDを使う


前回、SPI接続の128 X 64 のOLEDを紹介しました。
その後、I2C接続の128 X 64 のOLEDも入手したので、Raspberryで使ってみました。


ソースはこちらからダウン ロードできます。
前回と同じソースでSPI/I2C両方に対応しています。
インストールは以下の手順です。
git clone https://github.com/nopnop2002/ssd1306_rpi.git
cd ssd1306_rpi/
cc -o oled oled.c fontx.c -lwiringPi -DI2C

モジュールの結線は以下の通りです。
OLEDモジュール Raspberry
PIN SIG
1 GND Gnd
2 VDD
3.3V
3 SCK
SCL
4 SDA
SDA

実行時の引数も前回と同じです。
左がOrangePi+SPIモジュール、右がRaspberryPi+I2Cモジュール。


SPIにはハードウェアSPIとソフトウェアSPI(BitBanging SPI)が有ります。
探してみたら、I2Cにもソフトウェア I2Cのライブラリが有りました。
ソフトウェアI2Cにすると、SDAとSCLに好きなピンを使うことができます。
ソフトウェアI2Cを使う場合のインストールは以下の手順です。
git clone https://github.com/nopnop2002/ssd1306_rpi.git
git clone https://github.com/electronicayciencia/wPi_soft_i2c
cd ssd1306_rpi/
cp ../wPi_soft_i2c/soft_i2c.* ./
cc -o oled oled.c fontx.c soft_i2c.c -lwiringPi -DSOFT_I2C

ソフトウェアI2Cの時のモジュールの結線は以下の通りです。
OLEDモジュール Raspberry
PIN SIG
1 GND Gnd
2 VDD
3.3V
3 SCK
GPIO8(※)
4 SDA
GPIO7(※)

(※)プログラムの以下の箇所を変更することで、好きなピンに変更可能です。
// Software I2C
#define SSCL 10 // You can change
#define SSDA 11 // You can change

今回は、パフォーマンスは無視して、ハードウェアSPI/ソフトウェアSPI/ハードウェアI2C/ソフトウェアI2Cで試してみました。