Arduino oled i2c. Подключение OLED-дисплея SSD1306 к Arduino: пошаговое руководство

Как правильно подключить OLED-дисплей SSD1306 к Arduino. Какие библиотеки нужны для работы с OLED. Как написать код для вывода информации на OLED-экран. Какие ошибки могут возникнуть при подключении OLED к Arduino и как их исправить.

Содержание

Что такое OLED-дисплей SSD1306 и его преимущества

OLED-дисплей SSD1306 — это монохромный дисплей с органическими светодиодами, который часто используется в проектах с Arduino и другими микроконтроллерами. Он обладает рядом преимуществ по сравнению с обычными ЖК-дисплеями:

  • Высокая контрастность и яркость изображения
  • Широкий угол обзора — до 180 градусов
  • Низкое энергопотребление
  • Компактные размеры
  • Отсутствие подсветки
  • Быстрый отклик

Эти дисплеи доступны в разных размерах, наиболее популярны варианты 128×64 и 128×32 пикселя. Они поддерживают интерфейсы I2C и SPI для подключения к микроконтроллеру.

Необходимые компоненты для подключения OLED к Arduino

Для подключения OLED-дисплея SSD1306 к Arduino вам понадобятся следующие компоненты:


  • Плата Arduino (Uno, Nano, Pro Mini и др.)
  • OLED-дисплей на базе контроллера SSD1306
  • Соединительные провода
  • Макетная плата (опционально)

Также потребуется установить библиотеку для работы с OLED. Наиболее популярные варианты:

  • Adafruit SSD1306
  • U8g2
  • Tiny4kOLED

Выбор библиотеки зависит от конкретных задач вашего проекта. Adafruit SSD1306 проста в использовании, U8g2 более функциональна, а Tiny4kOLED оптимизирована для экономии памяти.

Схема подключения OLED-дисплея к Arduino по I2C

Подключение OLED-дисплея SSD1306 к Arduino по интерфейсу I2C выполняется следующим образом:

  • VCC дисплея → 5V Arduino
  • GND дисплея → GND Arduino
  • SCL дисплея → A5 Arduino (SCL)
  • SDA дисплея → A4 Arduino (SDA)

Для Arduino Nano и Pro Mini контакты SCL и SDA могут отличаться, уточняйте по документации вашей платы. Некоторые OLED-модули могут требовать напряжение питания 3.3V вместо 5V.

Настройка и инициализация OLED-дисплея в коде Arduino

После физического подключения дисплея необходимо настроить его программно. Пример базового кода с использованием библиотеки Adafruit SSD1306:



#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET    -1
#define SCREEN_ADDRESS 0x3C

Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

void setup() {
  Serial.begin(9600);
  
  if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;);
  }

  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0,0);
  display.println("Hello, World!");
  display.display();
}

void loop() {
  // Ваш код
}

Этот код инициализирует дисплей, очищает его и выводит текст «Hello, World!». Не забудьте заменить SCREEN_WIDTH, SCREEN_HEIGHT и SCREEN_ADDRESS на значения, соответствующие вашему дисплею.

Вывод текста и графики на OLED-дисплей

Библиотека Adafruit SSD1306 предоставляет множество функций для работы с текстом и графикой. Вот несколько примеров:

Вывод текста:


display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.println("Первая строка");
display.println("Вторая строка");
display.display();

Рисование графических примитивов:


display.clearDisplay();
display.drawLine(0, 0, 127, 63, SSD1306_WHITE);
display.drawRect(10, 10, 50, 30, SSD1306_WHITE);
display.fillCircle(100, 30, 20, SSD1306_WHITE);
display.display();

Помните, что после любых изменений на дисплее необходимо вызывать функцию display.display() для обновления изображения.


Оптимизация использования памяти при работе с OLED

OLED-дисплеи могут потреблять значительную часть памяти Arduino, особенно на платах с ограниченными ресурсами. Вот несколько советов по оптимизации:

  • Используйте библиотеку Tiny4kOLED для экономии памяти
  • Храните строки и графику в PROGMEM
  • Избегайте использования функций вроде sprintf, которые занимают много памяти
  • Используйте буферизацию только при необходимости

Пример использования PROGMEM для хранения строк:


const char string_0[] PROGMEM = "Строка 0";
const char string_1[] PROGMEM = "Строка 1";
const char* const string_table[] PROGMEM = {string_0, string_1};

char buffer[20];
strcpy_P(buffer, (char*)pgm_read_word(&(string_table[i])));
display.println(buffer);

Такой подход позволяет экономить оперативную память Arduino.

Устранение типичных проблем при работе с OLED-дисплеем

При подключении и использовании OLED-дисплея SSD1306 могут возникнуть некоторые проблемы. Вот наиболее распространенные из них и способы их решения:

Дисплей не включается:

  • Проверьте правильность подключения проводов
  • Убедитесь, что выбрано правильное напряжение питания (3.3V или 5V)
  • Проверьте I2C-адрес дисплея (обычно 0x3C или 0x3D)

Искаженное изображение:

  • Убедитесь, что выбран правильный размер дисплея в коде
  • Проверьте настройки частоты I2C

Программа занимает слишком много памяти:

  • Используйте библиотеку Tiny4kOLED вместо Adafruit SSD1306
  • Храните строки и изображения в PROGMEM
  • Оптимизируйте код, удалив неиспользуемые функции

При возникновении проблем также полезно использовать серийный монитор для отладки и вывода дополнительной информации о состоянии дисплея и выполнении программы.


Создание анимации на OLED-дисплее

OLED-дисплеи SSD1306 отлично подходят для создания простых анимаций благодаря своей высокой скорости обновления. Вот пример создания анимации движущегося круга:


int x = 0;
int direction = 1;

void loop() {
  display.clearDisplay();
  display.fillCircle(x, 32, 5, SSD1306_WHITE);
  display.display();
  
  x += direction;
  
  if (x >= 127 || x <= 0) {
    direction *= -1;
  }
  
  delay(10);
}

Этот код создаст анимацию круга, двигающегося от левого края экрана к правому и обратно. Для более сложных анимаций можно использовать массивы кадров или создавать объекты с собственной логикой движения.

Использование OLED-дисплея в проектах Интернета вещей

OLED-дисплеи SSD1306 часто используются в проектах Интернета вещей (IoT) для отображения данных с датчиков или статуса устройства. Вот пример использования OLED-дисплея для отображения температуры и влажности с датчика DHT11:


#include <DHT.h>
#include <Adafruit_SSD1306.h>

#define DHTPIN 2
#define DHTTYPE DHT11

DHT dht(DHTPIN, DHTTYPE);
Adafruit_SSD1306 display(128, 64, &Wire, -1);

void setup() {
  dht.begin();
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
}

void loop() {
  float h = dht.readHumidity();
  float t = dht.readTemperature();
  
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(SSD1306_WHITE);
  display.setCursor(0,0);
  display.print("Humidity: ");
  display.print(h);
  display.print(" %");
  display.setCursor(0, 20);
  display.print("Temperature: ");
  display.print(t);
  display.print(" C");
  display.display();
  
  delay(2000);
}

Этот код считывает данные с датчика DHT11 и отображает их на OLED-дисплее. Такой подход можно использовать для отображения данных с любых других датчиков или информации, полученной через интернет-соединение.



Проекты с использованием OLED дисплея SSD1306

Главная→Метки SSD1306 1 2 >>

На данной странице представлены проекты, в которых используется OLED дисплей SSD1306 — один из самых распространенных дисплеев этого типа

Опубликовано автором admin-new5 сентября, 2022

Дисплеи находят широкое применение в современных электронных устройствах, начиная от детских игрушек, и заканчивая смартфонами, компьютерами и даже устройствами медицинского назначения. Дисплеи бывают различных типов, начиная от простейших семисегментных и заканчивая продвинутыми AMOLED дисплеями. В данной статье мы рассмотрим подключение … Читать далее →

Рубрика: Проекты на ESP32 | Метки: ESP32, I2C, OLED дисплей, SSD1306 | Добавить комментарий

Опубликовано автором admin-new29 мая, 2022

В настоящее время в связи с текущим ухудшением экологической обстановки во всем мире повышается актуальность использования различных анализаторов качества воздуха.

В связи с этим в данной статье мы рассмотрим создание анализатора качества воздуха с определением частиц PM2.5, PM10 и CO … Читать далее →

Рубрика: Проекты на ESP32 | Метки: 3D печать, DHT11, ESP32, OLED дисплей, SSD1306, датчик влажности, датчик газа, датчик температуры, интернет вещей | Добавить комментарий

Опубликовано автором admin-new22 января, 2022

В предыдущей статье на нашем сайте мы рассмотрели создание часов реального времени на основе модулей DS3231 и ESP32. Но можно упростить данный проект, исключив из него модуль часов реального времени. При этом точность наших часов будет даже лучше чем при … Читать далее →

Рубрика: Проекты на ESP32 | Метки: ESP32, OLED дисплей, SSD1306, система реального времени, цифровые часы | Добавить комментарий

Опубликовано

22.01.2022 автором admin-new22 января, 2022

В данной статье мы рассмотрим создание часов на основе микроконтроллера ESP32 и модуля часов реального времени DS3231. Информация о времени будет выводиться на экран OLED дисплея. ESP32 – это больше чем обычный микроконтроллер. Он имеет встроенные чипы для Wi-Fi и … Читать далее →

Рубрика: Проекты на ESP32 | Метки: DS3231, ESP32, OLED дисплей, SSD1306, система реального времени | Комментарии (2)

Опубликовано автором admin-new16 января, 2022

Как известно, литий-ионные батареи (Li-Ion Battery) являются в настоящее одними из самых эффективных типов аккумуляторов. Но чтобы обеспечить им «долгую жизнь», их необходимо специальным образом заряжать, разряжать и даже хранить. В данной статье мы рассмотрим создание тестера емкости литий-ионных батарей … Читать далее →

Рубрика: Схемы на Arduino | Метки: arduino, arduino nano, LM358, MOSFET, OLED дисплей, SSD1306, операционный усилитель, силовая электроника, терморезистор | Добавить комментарий

Опубликовано автором admin-new22 января, 2022

Модули часов реального времени (Real Time Clock, RTC) находят широкое применение в современной электронике для определения текущего времени и даты. Но недостатком данных модулей является то, что они не всегда обеспечивают требуемую точность определения даты и времени. При этом они … Читать далее →

Рубрика: Проекты на ESP8266 | Метки: ESP8266, NodeMCU, OLED дисплей, SSD1306, система реального времени, цифровые часы | Добавить комментарий

Опубликовано автором admin-new30 ноября, 2021

В данной статье мы рассмотрим подключение OLED дисплея SSD1306 к NodeMCU ESP8266. NodeMCU – это платформа IoT (интернета вещей) с открытым исходным кодом. Она включает в себя прошивку (firmware), которая работает на дешевом Wi-Fi чипе (SoC) ESP8266 от компании Espressif … Читать далее →

Рубрика: Проекты на ESP8266 | Метки: ESP8266, NodeMCU, OLED дисплей, SPI, SSD1306 | Добавить комментарий

Опубликовано автором admin-new16 февраля, 2022

Платы расширения (HAT) для Raspberry Pi – это платы, которые имеют примерно такой же размер как и плата Raspberry Pi. Они непосредственно одеваются сверху на плату Raspberry Pi и при этом не требуют никаких других соединений с платой. Сейчас на … Читать далее →

Рубрика: Проекты на Raspberry Pi | Метки: LoRa, OLED дисплей, Raspberry Pi, SSD1306, беспроводная связь | Добавить комментарий

Опубликовано автором admin-new30 мая, 2021

В настоящее время OLED дисплеи получают все большее распространение по сравнению со стандартными ЖК дисплеями 16х2, которые имеют множество ограничений. Сейчас на рынке доступно достаточно большое количество разнообразных OLED дисплеев, которые можно использовать в своих электронных проектах, но одни из … Читать далее →

Рубрика: Проекты на Raspberry Pi | Метки: OLED дисплей, Raspberry Pi, SSD1306 | Добавить комментарий

Опубликовано автором admin-new18 мая, 2021

В связи с текущей пандемией коронавируса Covid-19 резко возрос спрос на такие электронные устройства как бесконтактные термометры и пульсоксиметры (Pulse-Oximeters). В настоящее время существует достаточно много различающихся по принципу действия пульсоксиметров и на нашем сайте мы уже рассматривали измеритель пульса … Читать далее →

Рубрика: Схемы на Arduino | Метки: arduino, arduino nano, OLED дисплей, SSD1306, коронавирус, медицина | Добавить комментарий

У меня Pro Micro и I2C OLED Мне нужна помощь - Помощь и информация

BobRoss (БобРосс)

1

Я вставил все в Pro Micro и использовал домашние библиотеки мистера Блинки, но каждый раз, когда я загружаю игру или что-то еще, я получаю пустой OLED. ПОЖАЛУЙСТА ПОМОГИТЕ!!!

Я загрузил тестовый код, и светодиоды мигают красным и красным. Я отключил его и снова подключил, и он сделал то же самое.

фильмотзыв (Саймон)

2

Возможно, вы захотите сделать фотографии.

Мистер Блинки

3

и к каким контактам вы подключили OLED-дисплей?

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

Фарап (Фарап)

4

Какой тип экрана вы используете и какой экран вы выбрали из списка параметров?

БобРосс (БобРосс)

5

Контакты 2 и 3 работают ли видео? Видео с ютуба здесь

БобРосс (БобРосс)

6

Какой список опций я не смог найти.

БобРосс (БобРосс)

7

Я нашел список оледов и перепробовал их все, но ничего.

БобРосс (БобРосс)

8

WIN_20220424_08_22_22_Pro1920×1080 233 КБ

БобРосс (БобРосс)

9

WIN_20220424_08_23_34_Pro1920×1080 232 КБ

Мистер Блинки

10

БобРосс:

Контакты 2 и 3 работают ли видео? Видео с ютуба здесь

Неверные контакты. Как указано в файле readme пакета Homemade:

При использовании дисплея I2C контакт SDA должен быть подключен к контакту 4 PORTD4, а контакт SCL — к контакту 6 PORTD7, если только вы не используете Pro Micro с альтернативной схемой подключения. В этом случае контакт SCL должен быть подключен к контакту 1/TXO PORTD3.

Кстати, это видео является частным.

БобРосс:

Какой список опций я не смог найти.

Список параметров отображения из меню инструментов.


Редактировать:

Картинки должны быть размытыми, чтобы быть полезными. У вас есть ссылка, где вы купили дисплей?

1 Нравится

БобРосс (БобРосс)

11

попробуй сейчас видео.

БобРосс (БобРосс)

12

На oled по-прежнему ничего не показывает.

БобРосс (БобРосс)

13

Как узнать, есть ли у меня Pro Micro с альтернативной проводкой?

БобРосс (БобРосс)

14

Олед работает с уно и нано. Но когда я загружаю код в uno, oled показывает только 1/8 экрана и мигает повсюду.

Мистер Блинки

15

БобРосс:

На oled по-прежнему ничего не показывает.

Вы меняли проводку дисплея I2C?

БобРосс:

Как узнать, есть ли у меня Pro Micro с альтернативной проводкой?

Ответить на этот вопрос можете только вы. Как ты все подключил. Проверьте таблицу проводки контактов

BobRoss:

, когда я загружаю код в uno, oled показывает только 1/8 экрана и мигает повсюду.

Тогда, вероятно, это дисплей Sh2106 I2C, а не дисплей SSD1306 I2C.

Выберите вариант отображения Sh2106-I2C.

БобРосс (БобРосс)

16

https://youtu.be/vb7GjV7ecDE
Спасибо за совет. (Фарап)

17

Напоминаем, что существующие комментарии можно редактировать с помощью серой кнопки карандаша. Это немного опрятнее, чем делать много коротких комментариев один за другим.

В любом случае, ваше видео указывает на то, что у вас есть недопустимая библиотека в папке Arduino.
Похоже, вы пытались поместить игры в папку с библиотеками?
Вероятно, это не связано с вашей основной проблемой, но вам не следует держать игры в своей девятке.0201 Arduino/libraries , для них нужно создать отдельную папку.

Мистер Блинки

18

БобРосс:

, когда я загружаю код в uno, oled показывает только 1/8 экрана и мигает по всему

Это проблема с дисплеями I2C без выделенного контакта сброса. Если обновление дисплея прервано из-за сброса Arduino или загрузки скетча, дисплей может перестать работать должным образом.

Поскольку на модуле дисплея отсутствует контакт сброса, единственный способ «сбросить» дисплей — отключить питание на секунду или около того, а затем снова включить (отсоедините и снова подключите USB-кабель, если он питается от USB)

TL ;DR

Выключите и снова включите Arduino после загрузки скетча.

1 Нравится

БобРосс (БобРосс)

19

Я сделал это, и все равно получилось то же самое. Как изменить дисплей в коде для работы с моим дисплеем i2c sh #Mr.Blinky

Mr.Blinky

20

Для Pro Micro вы должны подключить дисплей, как указано выше. При загрузке скетча из Arduino IDE выберите Sh2106-I2C в качестве дисплея.

Что касается ваших проблем с Uno, я рекомендую посетить другие форумы, посвященные Arduino.

1 Нравится

следующая страница →

2X16 символов Синий модульный OLED

(пока отзывов нет) Написать обзор

2X16 Символьный синий модульный OLED-экран | Arduino готов с интерфейсом I2C

Рейтинг Требуется Выберите Рейтинг1 звезда (худший)2 звезды3 звезды (средний)4 звезды5 звезд (лучший)

Имя

Тема отзыва Обязательно

комментариев Обязательно

Модель:
NHD-0216AW-IB3
Размер:
2 ряда | 16 символов
Цвет дисплея:
Синий
Тип дисплея:
Модульный символ OLED
Контроллер/драйвер:
УС2066
Ресурсы:

Запросить объемную цену

$28,91

  • Описание
  • Стандарты качества
  • Наши дистрибьюторы

NHD-0216AW-IB3 | 2x16 символов | синий модульный OLED | интерфейс I2C | Arduino + готовая макетная плата | Соединитель со сквозным отверстием 1x7

Этот символьный OLED-дисплей предлагает высококонтрастный синий текст на черном фоне, видимый под любым углом. Этот модуль также является макетной платой и готов к работе с Arduino со сквозным разъемом 1x7 и совместимостью с интерфейсом I²C. Этот OLED-дисплей оснащен встроенным контроллером US2066 и тремя таблицами шрифтов с символами двойной высоты. Этот дисплей поддерживает питание 2,8 В или 5,0 В и соответствует требованиям RoHS.

Технические характеристики OLED-дисплеев
Количество символов: 32
Формат отображения: 2 х 16
Тип дисплея: Модульный символ OLED
Цвет дисплея: Синий
Габаритные размеры Д x Ш x В: 49,2 мм х 25,7 мм х 4,5 мм
Зона обзора Д x Ш: 36,22 мм x 11,4 мм
Активная зона Д x Ш: 34,22 мм x 9,4 мм
Напряжение питания: 2,8 В или 5 В
Интерфейс: I2C
Тип контроллера: УС2066
Тип соединения: Сквозное отверстие 1x7 с шагом 2,54 мм
Рабочая температура: -40°С ~ 85°С
Температура хранения: -40°С ~ 90°С
Добавлена ​​функция: Соединитель со сквозными отверстиями 1x7, символы двойной высоты

Индивидуальные решения OLED
Адаптация кабеля

Отрегулируйте длину, положение и разводку контактов кабелей или добавьте дополнительные разъемы. Получите кабельное решение, специально разработанное для упрощения и безопасности ваших подключений.


Настройка разъема

Легко модифицируйте любые разъемы на вашем дисплее в соответствии с требованиями вашего приложения. Наши инженеры могут выполнить пайку штыревых, штыревых, прямоугольных и любых других разъемов, которые могут потребоваться вашему дисплею.


Настройка интерфейса

Выберите один из множества вариантов интерфейса или поговорите с нашими экспертами, чтобы выбрать лучший вариант для вашего проекта. Мы можем интегрировать HDMI, USB, SPI, VGA и многое другое в ваш дисплей для достижения ваших дизайнерских целей.


Модификации печатных плат

Широкий выбор изменений, включая форму, размер, расположение выводов и компоновку компонентов печатной платы, чтобы сделать ее идеально подходящей для вашего приложения.

Стандарты качества

В Newhaven Display мы каждый день стремимся предоставлять нашим клиентам продукцию самого высокого качества. Это означает, что отделы качества, проектирования и производства работают так, чтобы превзойти ваши ожидания.

Наши клиенты должны ожидать, что их продукция будет соответствовать или превосходить следующие стандарты:

Все продукты
Печатные платы
Проверка надежности Клиенты могут ожидать, что все производственные детали будут соответствовать или превышать эксплуатационные требования по температуре, влажности и вибрации.
Чистота стекла Клиенты могут ожидать, что стекло будет защищено вкладышами и представлены с учетом стандартов чистоты. Это означает, что стекло будет быть чистым от загрязнений, отпечатков пальцев и других посторонних материалов.
Внешний вид лицевой панели Лицевые панели будут равномерно окрашены без посторонних материалов и отвлекающие косметические недостатки. Наши стандарты поддерживают чистоту поверхность без царапин.
Внешний вид печатной платы поставляются с учетом долгосрочной надежности. Отделка без пузырьков, посторонних примесей и соответствует всем требованиям пожарной безопасности UL требования. Материалы для печатных плат всегда будут доставлены в течение отраслевые нормы. Края печатной платы будут аккуратно обрезаны и не будут иметь заусенцев.
Пайка Пайка всех выводных и поверхностных компонентов одинакова в обеспечение механической безопасности и электрической связи.
Консистенция Наши процессы производства и контроля гарантируют, что продукт постоянство от партии к партии. Это означает, что заказы, обработанные в течение лет будет постоянно оправдывать ваши ожидания. Мы делаем это по строгие производственные спецификации, с вниманием к деталям в нашей процессов и по сравнению с золотыми единицами.
Целостность продукта Качество в производстве продукции обеспечивает надежность конструкции. Клиенты могут рассчитывать на плотную сборку, не беспокоясь о незакрепленных деталях. или отсутствующий материал. Наши продукты будут соответствовать всем экологическим ожидания, включая температуру, влажность и условия вибрации.
Цвет стекла Хотя возможны нормальные вариации цвета стекла (из-за производственные допуски), дисплей Newhaven сохраняет цвет соответствие внутренним утвержденным таблицам цветов.

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

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