2022年10月17日月曜日

SSD1306 OLEDをArduinoで動かす。 Adafruitのライブラリ

AliExpressで購入したSSD1306 OLEDモジュールをArduinoで動作確認しました。使用したライブラリはAdafruit SSD1306です。

ライブラリのインストール


Arduino IDE (Ver.1.8.13)で、「スケッチ」-「ライブラリをインクルード」-「ライブラリを管理...」を開く。検索窓に「Adafruit SSD1306」などと入力して、
Adafruit SSD1306 (by Adafruit)
を探し「インストール」します。同様に
Adafruit GFX Library (by Adafruit)
を探し「インストール」します。

SPI


ブレッドボード配線

Arduino Pro mini 3.3V/8MHz(互換品)を使用しました。

接続表


SSD1306 Arduino 機能
GND GND GND
VCC VCC VCC(3.3V)
D0 10 SPI/SCK
D1 9 SPI/MOSI
RES 13 RESET
DC 11 Data/Command
CS 12 SPI/CS

動作確認用スケッチ


「ファイル」-「スケッチ例」-「カスタムライブラリのスケッチ例」-「Adafruit SSD1306」-「ssd1306_128x64_spi」

SPI通信波形


C1:D1(SPI/MOSI) C2:D0(SPI/SCK)

I2C


ブレッドボード配線


Arduino Pro mini 3.3V/8MHz(互換品)を使用しました。

I2Cの信号線(SCK/SDA)はプルアップが必要ですが、OLEDモジュールでプルアップされており、Arduino側でも内部プルアップされているため、外部プルアップは不要です。ただし信号波形がなまる場合は必要に応じて追加で外部プルアップします。

接続表


SSD1306 Arduino 機能
GND GND GND
VCC VCC VCC(3.3V)
SCK A5 I2C/SCL
SDA A4 I2C/SDA

動作確認用スケッチ


「ファイル」-「スケッチ例」-「カスタムライブラリのスケッチ例」-「Adafruit SSD1306」-「ssd1306_128x64_i2c」

重要:SSD1306 OLEDのI2Cアドレスを変更する必要がある場合があります。私が使用したモジュールは変更が必要でした。

// #define SCREEN_ADDRESS 0x3D ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32
#define SCREEN_ADDRESS 0x3C ///< See datasheet for Address; 0x3D for 128x64, 0x3C for 128x32

I2C波形


外部プルアップしない場合

C1:SDA C2:SCK


2.2kΩで外部プルアップした場合

C1:SDA C2:SCK

0 件のコメント:

コメントを投稿