Как подключить OLED I2C дисплей к ARDUINO – Своими Руками

Подключение OLED I2C дисплея с размером экрана 0,96″ и разрешением 128*64 точек к плате Arduino UNO.

Сегодня мы рассмотрим подключение OLED I2C дисплея с размером экрана 0,96″ и разрешением 128*64 точек к плате Arduino UNO.

OLED L2C дисплей (фронт)

OLED L2C display (тыл)

Заказать дисплей на Алиэкспресс 128X64 OLED LCD LED

В OLED (Organic Light-Emitting Diode) дисплеях используется технология в которой светодиоды сами излучают свет без дополнительного подсвечивания как например в LCD дисплеях. Дисплей OLED состоит из тонкой многослойной органической пленки, помещенной между анодом и катодом. OLED обладает высоким потенциалом применения практически для всех типов дисплеев и рассматривается в качестве конечной технологии для следующего поколения плоских дисплеев. Качество отображения информации, дешевизна и идеальные углы обзора OLED дисплея делают его лидером среди дисплеев.

Особенности OLED L2C дисплея

  • Не требуется подсветка дисплея
  • Высокое разрешение: 128 * 64 пикселей.
  • Угол обзора: больше 160 градусов.
  • Полностью совместим с Arduino, контроллерами 51 серии, MSP430 серии, STM32 / 2, КСО IC и т.д.
  • Ультра-низкое энергопотребление: при полном свечении экрана 0.08W
  • Рабочее напряжение: 3V

5 В постоянного тока.
Рабочая температура: -30 C

70 C.

  • I2C / IIC интерфейс, нужно только 2 провода.
  • Драйвер IC: SSD1306.
  • Размер платы: 2.7см х 2.8см.
  • Размер дисплея: 2.7см х 1,95см (0,96″ дюйма)

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

    VCC —– +5v (+5 вольт ,но работает и от 3х вольт – проверено на есп 8266)
    GND —– GND (земля)
    SDA —– pin SDA (pin A4 для Arduino nano V3)
    SCL —– pin SCL (pin A5 для Arduino nano V3)

    Библиотеки для OLED L2C дисплея

    После удачного скачивания и установки библиотек, приступаем к тестовому запуску нашего дисплея

    Сегодня мы используем библиотеку от Adafruit, и запустим тестовый скетч

    загружаем наш скетч и смотрим есть ли у нас отображение на дисплее информации как на видео

    если у нас дисплей никак не отреагировал и ничего не отображает, тогда загружаем скетч MultiSpeedI2CScanner

    После загрузки скетча открываем монитор порта, устанавливаем скорость 115200 бод

    Меню L2C сканера

    после чего, в SerialPort отправляем S , для полного сканирования и ищем наше устройство.

    Результат полного сканирования

    для отображения только подключенных устройств, сначала отправляем P, а потом S

    результат сканирования подключенных устройств

    Теперь запоминаем или копируем адрес нашего OLED l2C дисплея и в тестовом скетче ищем строку с записью адреса нашего дисплея

    Урок 9. Русский язык на OLED дисплее 128X64

    Вы могли наблюдать, что в предыдущих уроках №7 и №8 уже использовался Русский шрифт. В этом уроке мы разберём некоторые проблемные моменты с которыми можно столкнуться при выводе Русских букв на OLED дисплей.

    Нам понадобится:

    • Arduino Uno х 1шт.
    • Trema OLED дисплей х 1шт.
    • Trema Shield или Trema Set Shield х 1шт.

    Для реализации проекта нам необходимо установить библиотеки:

    • Библиотека iarduino_OLED_txt (текстовая) – для вывода текста и цифр на OLED дисплеи.
    • Дополнительно можно установить библиотеку iarduino_OLED (графическая), но в данном уроке она использоваться не будет.
      Графическая библиотека поддерживает все функции текстовой и имеет дополнительные функции для работы с изображениями и графикой, но при этом она занимает больше памяти, как оперативной, так и памяти программ.

    О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki – Установка библиотек в Arduino IDE.

    Схема подключения:

    Код программы:

    Алгоритм работы программы:

    В коде setup() происходит инициализация дисплея (подготовка дисплея к работе) и подключение шрифта «SmallFontRus» (в библиотеке имеется несколько предустановленных шрифтов, которые подключаются перед использованием). Со списком шрифтов и описанием всех функций библиотек iarduino_OLED и iarduino_OLED_txt, можно ознакомиться в разделе Wiki – OLED экран 128×64 / 0,96” .

    Код loop() разбит на 4 части. Каждая часть начинается с очистки экрана функцией clrScr(), после чего следуют несколько функций print() для вывода текста или чисел на экран дисплея. Все части выполняются друг за другом с 3 секундной задержкой выполняемой функциями delay().

    В результате на дисплее поочерёдно будут появляться: большие буквы (включая Русские), маленькие буквы (включая Русские) , символы и цифры .

    Проблемы при выводе Русских букв:

    Кодировка:

    Первая и основная проблема это кодировка в которой скетч передаётся компилятору. Разные версии Arduino IDE хранят скетч в различных кодировках. Даже последняя версия Arduino IDE 1.8.5 (на момент написания данного урока) для ОС Windows, передаёт компилятору скетч в кодировке UTF-8 (если скетч был сохранён в файл *.ino) или в кодировке Windows-1251 (если скетч не был сохранён). Но ни скетч, ни библиотеки используемые в нём, не знают в какой кодировке они будут переданы компилятору. Вот и получается что один и тот же скетч, оперируя Русскими буквами, может работать по разному.

    Что такое кодировка?
    Компьютер, как и контроллер (в т.ч. Arduino) хранит, получает и передаёт данные в виде 1 и 0. Из набора 1 и 0 можно точно составить числа, но нельзя однозначно составить буквы. Кодировка это представление букв числами (по их порядковому номеру), которыми уже может оперировать компьютер или контроллер. Например, «А» – 1, «Б» – 2, «В» – 3 и т.д., тогда слово «ПРИВЕТ» можно передать, принять или сохранить, как набор чисел: 17,18,10,3,6,20. Так как буквы можно располагать по разному (сначала символы или числа, или буквы другого языка и т.д.), то и порядковые номера (числа) у букв будут разные, вот и получилось, что придумано множество кодировок. Исторически сложилось что Латинские буквы имеют одинаковые порядковые номера в большинстве кодировок: «A». «Z» = 65. 90, «a». «z» = 97. 122, а Кириллические буквы не только имеют различные номера, но могут быть разбросаны, или вообще отсутствуют в кодировках.

    В библиотеках iarduino_OLED и iarduino_OLED_txt, мы предусмотрели функцию setCoding (), которая может принимать в качестве единственного аргумента, одно из значений: TXT_UTF8, TXT_CP866, TXT_WIN1251, определяющее текущую кодировку скетча. Эта функция закомментирована в 3 строке кода setup программы данного урока. Если Русский текст на дисплее отображается некорректно, то раскомментируйте строку с функцией setCoding и замените параметр TXT_UTF8, на TXT_CP866 или TXT_WIN1251. В большинстве случаев это решит проблему кодировок.

    Если функция setCoding () Вам не помогла, тогда вызовите функцию setCoding () с параметром false, а Русские буквы указывайте их кодом, как это показано в следующем разделе данного урока: «Недостаточно памяти ». При желании укажите в комментариях к уроку свою версию ОС, версию Arduino IDE и какую кодировку использует Ваша Arduino IDE (если Вы не знаете какую кодировку использует Arduino IDE, то напишите какие символы отображаются на дисплее вместо строчных и прописных Русских букв). Мы постараемся добавить Вашу кодировку в библиотеки.

    Недостаточно оперативной памяти:

    Вторая, но не менее важная проблема заключается в том, что строки занимают много оперативной памяти. Каждая буква строки занимает минимум 1 байт. Особенно актуальна эта проблема при создании различных пунктов меню.

    Наиболее эффективным решением данной проблемы является хранение строк не в области оперативной памяти, а в области памяти программ, так как объем памяти программ гораздо больше. Для этого указывайте строки в качестве аргумента функции F(). Строки указанные таким образом будут храниться в области памяти программ:

    Недостаточно оперативной памяти или памяти программ:

    Если Вы работаете со строками на Русском языке в Arduino IDE, которая хранит скетч в кодировке UTF-8. Вы уже храните строки в области памяти программ (или оставили строки в области оперативной памяти). Вы все равно можете освободить до половины памяти занимаемой строками!

    Дело в том, что в кодировке UTF-8 каждая Русская буква занимает целых 2 байта. Если указывать Русские символы кодом в той кодировке, где они занимают 1 байт, можно освободить половину памяти занимаемой строками, вне зависимости от того, в каком типе памяти они хранятся.

    Символы в шрифтах для библиотек iarduino_OLED и iarduino_OLED_txt располагаются в соответствии с кодировкой CP866, значит хранить и выводить Ваши строки на экран дисплея можно в этой кодировке:

    Как указывать символ или букву по его коду в строках скетчей?
    Для начала нужно узнать коды всех символов той кодировки, в которой Вы желаете их указывать, таблицы символов различных кодировок можно найти в интернете. Для кодировки CP866, Русские символы имеют следующие коды:

    Как подключить OLED I2C дисплей к ARDUINO

    Привет! Будучи любителем – энтузиастом электроники, я уверен, что всё что мы делаем – радиоэлектронные игрушки – самоделки, или большие проекты, все это от любопытства и лени. Любопытство стремится понять и постичь необъятное, не познанное, разобраться, как оно там работает, чего делает, как двигается. А лень изобретает, чтобы такого придумать, чтобы не вставать, не подходить, не поднимать, не запачкаться или еще чего ни будь важное.

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

    Для тех, у кого тоже возникло подобное желание, – вот краткое руководство по подключению и проверке маленьких и не дорогих дисплеев OLED.
    Далее речь пойдет об одной из широко доступных для радиолюбителей моделях OLED дисплеев, управляемых чипом SSD1306, с размером экрана 0,96-дюймов и разрешением 128*64 или 128*32 точки. Эти дисплеи идеально подходят для не больших радиолюбительских конструкций и самоделок.

    Шаг 1: Основные понятия

    Шаг 2: Комплектующие

    Шаг 3: Подключение дисплея

    Шаг 4: Сканер I2C

    Каждое устройство на шине I2C имеет шестнадцатеричный адрес, поменять нельзя, он вшит намертво, каждый ответственный производитель должен где-то на корпусе или в инструкции указать его. Бывают модули с переключателями и перемычками, которыми можно изменить адрес, но… если устройства дешевые, до безобразия, то производитель может и не удосужиться заниматься такой мелочью, поэтому его придется определять самостоятельно.

    Всего на шине может использоваться до 127 адресов – 119 для устройств и 8 адресов служебных. Общение ведется по этим адресам. Есть главный, он же Master, а есть ведомый, он же Slave, – Мастера запрашивают, ведомые отвечают, все просто.
    Поскольку на нашем OLED-дисплей используется протокол связи I2C, а адрес может быть и не указан, мы сами попробуем узнать этот самый адрес.

    Это можно сделать, загрузив коротенький скетч на свою плату Arduino с подключенным OLED. НО!
    Не торопитесь сразу заливать скетч в Arduino! Давайте для начала загрузим «драйвера», т.е. подключим библиотеки, а для этого сразу перейдем к «Шагу №5», а затем вернемся и продолжим.

    Шаг 4: Продолжение:

    Шаг 5: Загрузка и подключение библиотек

    Шаг 6: Тестирование дисплея

    Откройте файл Adafruit_SSD1306.h в текстовом редакторе и найдите строки:

    Должно получиться так:

    Если снова ошибка – необходимо проверить правильность соединений.
    После окончания загрузки вы увидите тестовую анимацию на экране, это означает, что вы успешно настроили свой OLED дисплей.

    Когда вы вдоволь насладитесь сей анимацией, можете переходить к следующему шагу.

    Шаг 7: Пишем свое собственное сообщение

    Для написания собственного сообщения, сначала создадим новый скетч в среде программирования ArduinoIDE.
    В заголовке мы подключаем 4 библиотеки:

    Затем пишем протокол сброса:

    В VOID SETUP указываем шестнадцатеричный адрес нашего дисплея 0x3C, который мы узнали на «Шаге №4».
    Затем, инициализируем дисплей и очищаем его:

    Далее в VOID LOOP пишем основной код, то есть наше сообщение, которое хотим отобразить на дисплее.
    Для этого описываем размер текста, цвет текста, позицию курсора, и наконец, выводим сообщение с помощью команды println:

    Источники:

    http://www.electronica52.in.ua/proekty-arduino/-podkluchenie-oled-i2c-displeya-s-razmerom-ekrana-096%E2%80%B3-i-razresheniem-12864-tochek-k-plate-arduino-uno
    http://lesson.iarduino.ru/page/urok-8-russkiy-yazyk-na-oled-displee-128×64/
    http://sdelaysam-svoimirukami.ru/4710-kak-podkljuchit-oled-i2c-displej-k-arduino.html

    Читать еще:  Смешарик - Своими Руками
  • Ссылка на основную публикацию
    Статьи на тему: