Подключение OLED дисплея к ESP32

oledresВ этом примере рассматривается подключение OLED дисплея на контроллере SH1106 к ESP32 и программирование его в среде Ардуино.

Схема подключения OLED дисплея на контроллере SH1106 к ESP32:

oled2

Соединяем таким образом:
[ESP32 3.3V – OLED VCC]
[ESP32 GND – OLED GND]
[ESP32 IO12– OLED SDA]

[ESP32 IO14 – OLED SCL]
Внимание: если во время прошивки ESP32 вы увидите md5 error, то отключите питание дислплея от вывода ESP32 "3.3V", а после прошивки подключите обратно (в программе для этого сделана задержка в две секунды ( delay(2000) ) в функции setup(), чтобы успеть подключить обратно) или можно использовать внешнее питсание для дисплея.

Контроллер SH1106 имеет адрес 0x3C.

Программа

Для взаимодействия с контроллером  SH1106OLED по шине I2C мы будем использовать библиотеку ssh1106-oled. Эта библиотека зависима от библиотеки Adafruit-GFX так что ее тоже нужно скачать и установить. С помощью этих двух библиотек можно не только выводить текст на дисплей, но и некоторую графику.
Библиотеки можно скачать отсюда:
Распакованные папки скопируйте в папку библиотек Ардуино: 

C:/Users/[YOUR_USER_NAME]/Documents/Arduino/libraries
 
Библиотека поддерживает следующие классы и интерфейсы:
  • Adafruit_SH1106 display(sda, scl): создает экземпляр объекта OLED screen с указанными пинами I2C
  • begin(uint8_t switchvcc = SH1106_SWITCHCAPVCC, uint8_t i2caddr = SH1106_I2C_ADDRESS, bool reset=true): инициализация OLED, с помощью флага SH1106_SWITCHCAPVCC мы соединяем вывод OLED VCC с выводом ESP 3.3V, адрес I2C OLED в нашем случае 0x3C
  • display(): выводит буфер дисплея на дисплей
  • width(): возвращает ширину дисплея
  • height(): возвращает высоту дисплея
  • clearDisplay(): очищает дисплей
  • println(text): выводит текст на дисплей
  • setCursor(x,y): устанавливает курсор в позицию (x, y)
  • drawCircle(): выводит окружность на дисплей
Более подробно все фунцкии расписаны в файле “Adafruit_GFX.h”
 
Создадим в Arduino проект и вставим следующий код:
 
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SH1106.h>

#define OLED_SDA 12
#define OLED_SCL 14

Adafruit_SH1106 display(12, 14);


void setup()   {                
  Serial.begin(115200);
  delay(2000);
  /* initialize OLED with I2C address 0x3C */
  display.begin(SH1106_SWITCHCAPVCC, 0x3C); 
  display.clearDisplay();

}
void loop() { 
  /* set text size, color, cursor position, 
  set buffer with  Hello world and show off*/
  display.setTextSize(2);
  display.setTextColor(WHITE);
  display.setCursor(0,0);
  display.println("Hello, world!");
  display.display();
  delay(2000);
  display.clearDisplay();
}

 После компилирования и прошивки должно получитсья следующее:

oledres

Загрузка...