Подключение дисплея oled i2c к Arduino

 

OLED дисплей Arduino 0,96 дюйма позволяет создавать крутые проекты с экраном, при этом сохраняя миниатюрные размеры DIY устройства. Модули OLED на базе SSD1306 весьма популярны благодаря простому подключению к микроконтроллеру и высокому разрешению экрана – 128×64 пикселя. Рассмотрим характеристики OLED с I2C, подключение к Arduino и разберем команды библиотек: Adafruit_SSD1306 и OLED_I2C.

Подключение OLED дисплея к Ардуино

Arduino I2C OLED display подключение

OLED (Organic Light-Emitting Diode) — это полупроводниковый прибор, излучающий свет при прохождении через него электрического тока. Управление модулем осуществляет с помощью чипа SSD1306, который поддерживает пять разных протоколов связи. Встречаются модули не только с протоколом IIC, но и с протоколом SPI, и даже олед дисплеи с возможностью выбора (переключения) между этими двумя протоколами.

Характеристики OLED I2C 128×64 / 128×32

  • Цвет экрана — монохромный;
  • Разрешение — 128×64 или 128×32;
  • Графический чип — SSD1306;
  • Интерфейс — I2C или SPI;
  • Питание модуля — от 3 до 5 В;
  • Размер модуля — 27x27x4 мм.
Распиновка OLED SPI и дисплея OLED IIC
Распиновка OLED SPI и дисплея OLED IIC

Главным плюсом OLED 128×64 iic является работа модуля без подсветки, за счет чего обеспечивается низкое потребление тока этим модулем. А высокое разрешение OLED 128×64 px Arduino позволяет вывести на дисплей большее количество информации, в отличии от текстового экрана 1602. Для подключения используется четыре разъема — два провода для питания (5V и GND) и два провода для шины IIC (SDA и SCL).

Подключение OLED I2C 128×64 к Arduino

Для этого занятия потребуется:

  • Arduino Uno / Arduino Nano / Arduino Mega;
  • lcd oled 128×32 / lcd oled 128×64;
  • провода «папа-мама».
Схема подключения OLED дисплея с i2c к Ардуино
Схема подключения OLED дисплея с i2c к Ардуино
OLED i2c 0,96 Arduino Uno Arduino Nano Arduino Mega
GND GND GND GND
VDD 5V 5V 5V
SDA A4 A4 20
SCL A5 A5 21

На изображении выше, показана схема подключения OLED I2C — разъемы SDA и SCL модуля подключаются к соответствующим пинам на микроконтроллере. У Arduino Uno и Nano SDA — пин A4, SCL — пин A5, а у Arduino Mega — 20 и 21 пин, соответственно. Питание модуля 3,3 или 5 Вольт. Далее рассмотрим две популярные библиотеки для работы с OLED SSD1306 — это библиотека OLED_I2C.h и Adafruit_SSD1306.h.

Библиотеки для OLED I2C 0,96 Arduino

Библиотека OLED_I2C.h позволяет менять шрифт текста (размер), выводить латинские и русские буквы на экран, а также позиционировать текст на дисплее (по левому и правому краю или по центру). В следующем скетче показано максимальное количество возможностей команд данной библиотеки с подробными комментариями. Подключите ОЛЕД дисплей, согласно схеме выше, и загрузите программу в плату Ардуино Уно.

Скетч. Библиотека OLED_I2C.h команды, описание

#include "OLED_I2C.h"           // подключаем библиотеку для экрана
OLED myOLED(SDA, SCL, 8);  // создаем объект myOLED

// подключаем шрифты для текста и цифр
extern uint8_t TinyFont[];
extern uint8_t SmallFont[];
extern uint8_t MediumNumbers[];
extern uint8_t BigNumbers[];

void setup(){
   myOLED.begin();  // инициализируем экран
}

void loop(){
   // выводим текст по левому краю экрана
   myOLED.setFont(TinyFont);
   myOLED.print("ABCDEFGHIJKLMNOPQRSTUVWXYZ", LEFT, 10);
   myOLED.update();
   delay(1000);
 
   // выводим текст по центру экрана
   myOLED.setFont(SmallFont);
   myOLED.print("ABCDEFG", CENTER, 25);
   myOLED.update();
   delay(2000);

   myOLED.clrScr(); // очищаем экран от надписей
   myOLED.update();
   myOLED.invert(true); // включаем инверсию экрана
   delay(1000);

   // выводим цифры по правому краю экрана
   myOLED.setFont(MediumNumbers);
   myOLED.print("123456789", RIGHT, 5);
   myOLED.update();
   delay(1000);
  
   // выводим цифры, начиная с 5 пикселя строки
   myOLED.setFont(BigNumbers);
   myOLED.print("123456789", 5, 30);
   myOLED.update();
   delay(2000);

   myOLED.clrScr(); // очищаем экран от надписей
   myOLED.update();
   myOLED.invert(false); // отключаем инверсию экрана
   delay(1000);
}

Пояснения к коду:

  1. библиотека использует много оперативной памяти микроконтроллера для загрузки шрифтов, поэтому работать с OLED дисплеем на плате Arduino Nano не получится. Скетч не загрузится из-за нехватки свободной памяти;
  2. ещё больше возможностей библиотеки можно узнать из стандартных скетчей.



Стандартные скетчи библиотеки OLED_I2C.h Arduino IDE
Стандартные скетчи библиотеки OLED_I2C.h Arduino IDE

Еще одна библиотека, которая позволяет работать с дисплеем 0,96 по протоколу SPI и IIC, это Adafruit_SSD1306. В дополнении к этому вам потребуется еще установить библиотеку Adafruit_GFX. Все необходимые библиотеки вы можете скачать на нашем сайте — здесь. После установки необходимых файлов, вы сможете использовать команды библиотеки Adafruit_SSD1306.h для вывода текста на олед дисплей.

Скетч. Библиотека Adafruit_SSD1306.h команды

// библиотеки для работы с OLED экраном Arduino IDE
#include "Wire.h"
#include "Adafruit_GFX.h"
#include "Adafruit_SSD1306.h"

Adafruit_SSD1306 display(128, 64, &Wire, 4); // указываем размер экрана в пикселях

void setup() {
   display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // указываем адрес устройства на шине
   display.clearDisplay();
   display.setTextSize(1, 2); // указываем размер шрифта
   display.setTextColor(SSD1306_WHITE); // указываем цвет надписи

   display.setCursor(30, 10);
   display.println("ARDUINO");
   display.display();
   delay(3000);
   display.clearDisplay(); // очищаем экран
}

void loop() {
   display.setTextSize(3); // указываем размер шрифта
   display.setTextColor(SSD1306_WHITE); // указываем цвет надписи

   for (int i = 0; i <= 100; i++) {
      display.setCursor(20, 10);
      display.println(i);
      display.display();
      delay(100);
      display.clearDisplay(); // очищаем экран
   }

}

Пояснения к коду:

  1. адрес устройства — 0x3C, можно узнать с помощью программы для сканирования шины I2C микроконтроллера Ардуино;
  2. display.setTextSize(1, 2); в этой строчке можно указывать два параметра — первая цифра задает размер шрифта, а вторая высоту шрифта.

Кириллица, русский шрифт OLED I2C 128×64

Для вывода русских букв следует использовать библиотеку OLED_I2C.h, подключив русский шрифт в программе. В следующем скетче реализована возможность вывода бегущей строки с помощью цикла for Arduino IDE. Кроме того, с помощью библиотек, рассмотренных на этой странице, на олед экран можно выводить различные картинки и логотипы с прокруткой по вертикали или по горизонтали олед дисплея.

Скетч. Русификация дисплея OLED I2C Arduino

#include "OLED_I2C.h" // библиотека для oled экрана
OLED  myOLED(SDA, SCL, 8); // создаем объект myOLED

extern uint8_t RusFont[]; // подключаем русский шрифт

void setup() {
   // инициализируем экран с русским шрифтом
   myOLED.begin();
   myOLED.setFont(RusFont);
}

void loop() {

   // бегущая строка на oled с русскими буквами
   for (int i = 128; i >= -40; i--) {
      myOLED.print("GHBDTN!", i, 32);
      myOLED.update();
      delay(5);
      myOLED.clrScr(); // очищаем экран OLED
   }

   // выплывающая строка на oled с русскими буквами
   for (int i = -10; i <= 80; i++) {
      myOLED.print("GHBDTN!", CENTER, i);
      myOLED.update();
      delay(5);
      myOLED.clrScr(); // очищаем экран OLED
   }

}

Пояснения к коду:

  1. переменная i в цикле for меняет положение надписи в строке от 128 до -40 пикселей (если надпись будет длиннее то нижний диапазон нужно увеличить);
  2. минусом библиотеки является то, что некоторые символы будут тоже переводиться в русские буквы, например, «точка» превратится в букву «ю».

Заключение. Мы постарались наиболее полно рассмотреть схему подключения OLED 0,96 к Ардуино и разобрать команды библиотек для экрана. Рассказать обо всех возможностях работы с OLED в одном обзоре довольно сложно. Вы можете изучить эту информацию на основе примеров из архива с библиотеками самостоятельно. Если у вас остались вопросы по теме — пишите их в комментариях к этой записи.



9 Replies to “Как подключить OLED SSD1306 дисплей к Ардуино”

    1. Для любой платы, главное чтобы хватило памяти для шрифтов. При использовании в скетче русского шрифта для ОЛЕД дисплея — памяти Нано уже не хватит

      1. Тот момент, когда прочитал этот комментарий только после того, как успешно поставил на нано русскую прошивку)

  1. «…
    extern uint8_t RusFont[]; // подключаем русский шрифт
    …»
    Подключаем, взяв его откуда? оО

  2. Это графический дисплей, каждый символ — массив точек сохраненный в памяти. Для практического использования есть только два пути: если нужны только цифры (часы, термометр и т.п) — то в библиотеке оставляем часть массива с числами и несколько спецсимволов. Если нужно все — Atmega 128 или ESP32

  3. что делеать если пишет C:\Users\timoy\Documents\Arduino\libraries\Adafruit-GFX-Library-master/Adafruit_GFX.h:12:10: fatal error: Adafruit_I2CDevice.h: No such file or directory
    #include

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.