128 64 Дисплей для arduino

OLED дисплеи и Arduino

В статье рассмотрены монохромные OLED дисплеи с разрешением 128×64 и 128×32 пикселей.

Это небольшие экранчики, их диагональ составляет всего около 1”. Основное их преимущество – удобство чтения благодаря высокой контрастности OLED дисплея. Каждый OLED дисплей изготавливается из отдельных 128×64 или 128×32 белых органических (OLED) светодиодов. Каждый светодиод включается/выключается с помощью чипа управления. Так как дисплей сам является источником света, дополнительная подсветка не требуется. Во-первых, это обеспечивает высокую контрастность дисплея, а во-вторых – значительно снижает энергозатраты, необходимы для его питания.

В качестве драйвера в дисплее используется чип SSD1306, который позволяет передавать данные по протоколам I2C, SPI и 8-битному параллельному протоколу. Как правило, столь широкий выбор интерфейсов предоставляет дисплей с разрешающей способностью 128×64 пикселей. В OLED дисплеях с разрешающей способностью 128×32, доступен только протокол SPI. В статье ниже используется именно SPI для подключения, так как он наиболее универсальный и требует малого количества контактов.

Питание OLED дисплеев

OLED дисплею и драйверу необходимо питание 3.3 В и 3.3 В на питание логики, для передачи данных. Питание дисплеев зависит от того, как именно загружен экран, но в основном он тянет около 20 мА и требует напряжение питания 3.3 В. Встроенный драфвер представляет из себя простой переключатель, который преобразует 3.3 В – 5 В в управляющий сигнал для OLED дисплея. Вы можете запускать дисплей от одного источника питания 3.3 В или использовать 3.3 В для питания чипа и до 4.5 В для самого экрана. Или вы можете подключить 3.3 В к чипу и подать 7-9 В непосредственно на контакт питания OLED дисплея.

OLED 128×64 и 128×32 с готовым выходом 5 В

Если у вас версия OLED дисплея, которая старше v1 128×64, можете не ознакамливаться со следующим подразделом. У вас уже есть возможность запитать 5 В. Все 1.3″ 128×64 и меленькие 128×32 SPI и I2C имеют на борту 5 В. Если у вас модель v2 0.96″ 128×64 OLED дисплей с отметкой 5 В на передней части, его тоже можно подключать к 5 В. Если у вас более старая версия OLED дисплея — 0.96″ (смотрите ниже), вам надо быть аккуратнее при подключении к мекроконтроллеру 5 В. OLED дисплей разработан таким образом, что он совместим с питанием 5 В. То есть вы можете подать питание в диапазоне 3-5 В, а встроенный регулятор сделает всю остальную «черную работу» за вас.

Все OLED экраны можно использовать с питанием и логикой 3.3 В.

Просто подключите контакт GND к «земле», а контакт Vin к источнику питания в диапазоне 3-5 В. В результате на контакте 3Vo будет 3.3 В.

0.96 128×64 OLED

Более старые версии OLED дисплеев 0.96″ 128×64 использовать сложнее, так как по умолчанию они не совместимы с питанием 5 В. То есть, вам надо обеспечивать для них питание 3.3 В.

  • VDD — для питания логики 3.3 В. Значение напряжения должно быть 3 или 3.3 В.
  • VBAT – это вход для изменения напряжения в диапазоне от 3.3 до 4.2 В.
  • VCC – это контакт значения напряжения high для OLED экрана. Если вы используете встроенный преобразователь напряжения, этот контакт подключать не надо. Если вы не используете внутренний преобразователь, подключите его к источнику питания 7-9 В – постоянный ток.

Рекомендуется соединить контакты VDD и VBAT вместе и подключить к 3.3 В, а контакт VCC оставить неподключенным.

Библиотека Arduino и примеры

Для использования небольших монохромных OLED дисплеев вам надо будет установить библиотеки Arduino. Код из библиотеки, которая приведена ниже поддерживает работу с любыми моделями плат Arduino. Кроме того, его можно легко адаптировать и под другие микроконтроллеры. Для передачи данных используется SPI стандарт передачи данных.

Скачать библиотеку для работы OLED дисплея можно на Github — библиотека Adafruit SSD1306. Кликните кнопку DOWNLOAD в левом верхнем углу, извлеките архив и переименуйте папку в Adafruit_SSD1306. Проверьте, чтобы в папке содержались файлы Adafruit_SSD1306.cpp и Adafruit_SSD1306.h, а также папка examples.

Переместите папку Adafruit_SSD1306 в папку Arduino /libraries. Если папка не существует, вам надо ее создать. В Windows путь будет следующим: (home folder)My DocumentsArduinolibraries, а для Mac или Linux: (home folder)/Documents/Arduino/libraries. Если у вас возникли трудности с библиотеками, ознакомьтесь с полным гайдом по работе и установке библиотек на нашем сайте Arduino-diy.com.

Аналогичную процедуру вам надо будет провести с Github — библиотека Adafurit_GFX.

После установки библиотек Adafruit_SSD1306 и Adafruit_GFX, перезапустите Arduino IDE. Загрузить пример скетча можно через меню: File→Sketchbook→Libraries→Adafruit_SSD1306→SSD1306.

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

Библиотека не сможет определить размер экрана на уровне кода. Указать размер надо в header файле. Перейдите в папку с библиотекой и откройте файл Adafruit_SSD1306.h. Сверху в нем есть пояснения по адаптации библиотеки к различным дисплеям.

Создание растровых изображений

Вы можете легко создать растровые изображения для отображения на OLED дисплее с помощью LCD assistant software. Сначала создайте изображение с помощью любого фоторедактора (Photoshop, Paint и т.п.). Сохраните это изображение в формате Monochrome Bitmap (bmp):

Установите следующие параметры:

И импортируйте ваше монохромное растровое изображение. Сохраните его (Save output) в cpp файл:

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

Подключение OLED дисплея 128×64

Паяем контакты

Перед подключением надо установить и спаять контакты на OLED дисплее. Контакты не будут работать без распайки!

Начните с установки рельсы на 8 контактов на вашу монтажную плату. Рельса устанавливается в макетку своими длинными ногами.

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

Теперь спаяйте 8 контактов с 8-ю отверстиями!

I2C или SPI

Одна из хороших особенностей OLED экранов 128×64 – это то, что они могут использовать I2C или SPI протоколы. SPI отрабатывает быстрее, чем I2C, но для подключения надо больше контактов. Кроме того, наладить SPI на некоторых микроконтроллерах проще, чем I2C.

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

Экран может подключаться по I2C протоколу к любому микроконтроллеру, который поддерживает этот формат. Так как I2C интерфейс используется только для ‘соединения’ дисплея, у вас останется 512 байт RAM памяти на микроконтроллере. Но передать данные с OLED дисплея не получится.

Для начала вам надо соединить два контакта на задней части платы OLED экрана. Оба контакта должны быть ‘замкнуты’ (с помощью распайки), чтобы I2C начал работать!

После этого подключите контакты к Arduino

  • GND идет к GND(земля)
  • Vin идет к 5V
  • Data к I2C SDA (на Uno — это A4, на Mega — это 20, а на Leonardo — digital 2)
  • Clk к I2C SCL (на Uno — это A5, на Mega — это 21, а на Leonardo — digital 3)
  • RST к 4 (позже вы можете изменить этот пин в коде программы)

Это подключение совпадает с примером, который есть в библиотеке. После того как предложенный вариант отработает, вы можете попробовать другой контакт для Reset (вы не можете поменять контакты SCA и SCL).

Читать еще:  Black decker gw3050 отзывы

Пример находится в: File→Sketchbook→Libraries→Adafruit_SSD1306→SSD1306_128x64_i2c example

Подключение OLED по SPI

По умолчанию плата предусматривает использование SPI, но если вы до этого использовали I2C, вам надо разомкнуть контакты, которые вы замыкали в предыдущем пункте!

После этого подключите контакты к Arduino

  • GND идет к ground (земля)
  • Vin идет к 5V
  • Data к digital 9
  • CLK к digital 10
  • D/C к digital 11
  • RST к digital 13
  • CS к digital 12

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

Пример находится в: File→Sketchbook→Libraries→Adafruit_SSD1306→SSD1306_128x64_spi example

Подключение OLED дисплея 128×32

Подключение OLED экрана 128×32 по SPI

OLED экран 128×32 очень просто подключается по SPI так как в нем есть встроенный модуль согласования уровней. Сначала возьмите рельсу 0.1″ с 8 контактами.

Установите контакты на макетной плате длинной стороной, а сверху OLED экран. После этого припаяйте рельсу к OLED PCB.

После этого подключите Arduino — GND подключается к ground (земля), Vin подключается к 5V, DATA к digital 9, CLK к digital 10, D/C к digital 11, RST к digital 13 и CS к digital 12.

Скетч соответствует тому, как вы подключили экран к Arduino. После проверки работоспособности можете попробовать подключить другие контакты.

Пример находится в: File→Sketchbook→Libraries→Adafruit_SSD1306→SSD1306_128x32_SPI example

Если вы используете OLED экран 128×32, убедитесь, что вы раскомментировали строку «#define SSD1306_128_32» в верхней части скетча Adafruit_SSD1306.h. Раскомментировав эту строку, вы изменяете размер буфера.

Подключение OLED экрана 128×32 по I2C

OLED экран 128×32 можно легко подключить и по I2C. Опять-таки, причина в наличии модуля согласования уровней и регулятора. Сначала возьмите рельсу 0.1″ на 6 контактов.

Установите рельсу длинными контактами на макетной плате

Сверху установите OLED экран

Припаяйте рельсу к OLED PCB

Теперь подключите контакты к Arduino

  • GND к GND
  • Vin к 5V
  • SDA к I2C Data (на Uno — это A4, на Mega — это 20, а на Leonardo — digital 2)
  • SCL к I2C Clock(на Uno — A5, на Mega — это 21, а на Leonardo — digital 3)
  • RST к 4 (вы можете изменить эти контакты в скетче дальше)

Это подключение соответствует тому, которое требуется для работы скетча примера. После того, как пример отработал, вы можете изменить пин RST. Вы не можете изменить контакты I2C, так как они ‘зафиксированы’ на уровне электросхемы.

Пример находится в: File→Sketchbook→Libraries→Adafruit_SSD1306→SSD1306_128x32_i2c example

Подключение старого 128×64 OLED экрана V 1.0

Эта схема подключения рассчитана на более старые 0.96″ OLED экраны, которые поставляются с модулем согласования уровней. Если у вас V2.0, то используйте другую схему подключения.

Версия V1 128×64 OLED экрана работает от 3.3 В и не имеет встроенного модуля согласования уровней, так что для использования этого экрана с 5 В микроконтроллером, вам понадобится внешний модуль согласования. Если ваш микроконтроллер поддерживает 3.3 В, вы можете пропустить дальнейшие шаги.

Предполагается, что вы будете использовать монтажную плату. Возьмите рельсу 0.1″ с 10 контактами

Установите контакты длинными ногами на макетную млату, а потом сверху – левую рельсу контактов OLED экрана.

Соедините VDD и VBAT (они подключатся к 3.3 В). GND подключается к GND.

Установите модуль согласования уровней CD4050 таким образом, чтобы пин 1 был сверху

Подключите пин 10 к пину D/C, пин 12 к CLK (SPI время) и пин 15 к DAT (SPI данные).

Подключите пин 2 к RES (сброс) и пин 4 к CS (выбор чипа). Пин 1 идет к 3.3 В, а пин 8 к земле.

Вы можете подключить входы модуля согласования уровней к любым контактам, но в данном случае мы подключили digital 13 к контакту 3 модуля согласования, 12 к пину 5, 11 к пину 9, 10 к пину 11 и 9 к пину 14. Это подключение соответствует скетчу-примеру. После того как, приведенное подключение отработает, можете поэксперементировать с другими контактами/пинами.

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

Вывод картинки на дисплей 128×64

2018-07-13 в 11:03

Сегодня расскажу, как вывести любую картинку на дисплей на базе контроллера ST7920 с разрешением 128х64 пикселя с помощью контроллера Arduino. Ранее был проект по выводу различных данных на дисплей.
Для примера будем рисовать картинку логотипа нашего сайта.

Первым шагом, следует ее перевести в черно-белый формат, то есть сделать рисунок монохромным. Для этого воспользуемся сервисом https://www.imgonline.com.ua.

На выходе у нас должен получится черно-белый рисунок.

Теперь нужно убрать фон.
Чтобы это сделать, можно воспользоваться разными программами. Меня больше всего на данный момент устраивает LCD Vision, которая обычно идет в комплекте с Code Vision AVR. Она так же переводит картинку в код, но нам это не нужно.

Запускаем программу и делаем импорт нашего черно-белого изображения.

Нажимаем кнопку «Convert image to monochrome».

Открывается окно, где выбираем «Threshold» и, если необходимо, с помощью ползунка выбираем более оптимальный вариант. А оставшиеся недочеты редактируем в Paint. После жмем Ок и сохраняем наше изображение «File» — «Save As».

Теперь, как и говорил, открываем Paint и вставляем туда наше изображение. Тут рекомендую перейти во вкладку «Вид» и включить «Линии сетки». Так мы будем видеть картинку попиксельно.

Вспоминаем, что наш дисплей имеет разрешение 128 пикселей по ширине и 64 по высоте. Сейчас моя картинка имеет разрешение 256х100 пикселей. Необходимо уменьшить область рисунка. То есть уменьшить нашу область, сделать ее такого же размера, как и дисплей. Если картинка очевидно не влазит, сначала уменьшаем ее. Делается это просто. Используем инструмент «Выделить» и жмем «Выделить все». Далее выбираем «Изменить размер» и примерно прикидываем на сколько будем уменьшать. Я сделаю на 50 процентов.

Теперь уменьшаем наше поле под размер дисплея. Для этого в правом нижнем углу ловим белый квадратик и тянем до тех пор пока внизу не увидим 128х64 пкс. Можно корректировать отдельно правую и нижнюю границы, кому как удобнее.

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

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

Опять вспоминаем размеры нашего дисплея. Не всегда картинка будет на весь размер дисплея. Давайте сейчас уменьшим размер картинки (того же поля) до границ самой картинки. У меня получилось 110×40 пикселей.

Осталось правильно сохранить изображение, иначе в следующем пункте возникнут проблемы. Сохраняем картинку обязательно в формате .BMP. И выбираем тип файла «Монохромный рисунок». Чтобы не запутаться назвал его tolcd.bmp. Будет ругаться, что ухудшится цветопередача и т.п.. Не обращаем внимания и сохраняем.

В итоге получаем следующее.

С изображением разобрались. Следующим шагом будет перевод картинки в двоичный массив — код. В этом нам поможет программа Image2Code которую можно скачать с нашего сервера.

Читать еще:  Po300 обнаружены случайные множественные пропуски зажигания

Запускаем Image2Code и просто перетаскиваем готовую картинку, которую я назвал tolcd.bmp. Если картинка сделана правильно, появятся настройки (как на изображении ниже) и нужно отметить в тех местах, которые указаны стрелкой.

После нажатия кнопки «Convert» откроется блокнот с необходимым нам кодом нашей картинки.

Есть один момент, все фигурные скобки < >нужно будет удалить, как и последнюю запятую.

Запускаем Arduino IDE.
Так мы подключаем библиотеку для работы с дисплеем.

Указали, какой дисплей мы используем, и на каких пинах он подключен.

Объявляем массив для помещения кода картинки в код программы. Помните, что в строках кода картинки не должно быть скобок. Так же массиву нужно дать название (например: tehnopageru).

Размещаем картинку определенного размера в определенном месте. Где Х — место начала вывода картинки по оси х (ширине), Y — место начала вывода картинки по оси у (высоте) от верхнего левого угла. W — ширина картинки и H — высота картинки. Помните, в Paint мы ее обрезали по границам картинки, вот эти значения сюда и вписываем.

Вот что получилось у меня при при следующем коде.

Как видно, картинка размещена в самом верхнем левом углу. Как же разместить ее по центру? Моя картинка имеет размера 110х40. От размера дисплея 128х64 отнимем соответственно 110х40 и получим 18 и 24. Теперь делим их пополам и вписываем в настройки размещения.

Немного поясню, как мы вывели картинку в центр. По ширине у нас осталось 18 точек (те же пиксели) и по высоте 24 точки. Мы эти значения поделили на 2, чтобы у нас по краям оставалось одинаковое количество точек, так же и по высоте. Благодаря этому и удалось разместить ее в центре.

А вот и код полностью.

U8GLIB_ST7920_128X64_1X u8g( 13, 11, 10);

static unsigned char tehnopageru[] <
0x00,0x00,0x03,0x06,0x0C,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x03,0x06,0x0C,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x07,0x0F,0x1E,0x3C,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x07,0x0F,0x1E,0x3C,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x07,0x0F,0x1E,0x3C,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x07,0x0F,0x1E,0x3C,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xFE,0xFF,0x9F,0xFF,0xFF,0xFF,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xFF,0xFF,0x9F,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xFF,0xFF,0x9F,0xFF,0xFF,0xFF,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,
0x80,0xFF,0xFF,0x9F,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,
0x80,0xCF,0xFF,0x9F,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,
0x80,0xCF,0xFF,0x9F,0xFF,0xFF,0xFF,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,
0xBC,0xCF,0xFF,0x9F,0xFF,0xFF,0xFF,0x7F,0x0F,0x00,0x00,0x00,0x00,0x00,
0xBF,0xCF,0xFF,0x9F,0xFF,0xFF,0xFF,0x7F,0x3F,0x00,0x00,0x00,0x00,0x00,
0xBF,0x07,0x0F,0x9E,0xE0,0x82,0x0F,0x7C,0x3F,0x3F,0xF8,0xE0,0x07,0x1F,
0xBC,0x07,0x07,0x1C,0xE0,0x00,0x07,0x78,0x8F,0x7F,0xFC,0xF1,0x8F,0x3F,
0x80,0xCF,0xE7,0x9C,0xE7,0x3C,0xE7,0x79,0x80,0x61,0x8C,0x31,0x8C,0x31,
0x80,0xCF,0xE7,0x9C,0xE7,0x3C,0xE7,0x79,0x80,0x61,0x8C,0x31,0x8C,0x31,
0x80,0xCF,0xE7,0x9C,0xE7,0x3C,0xE7,0x79,0x80,0x61,0x80,0x31,0x8C,0x31,
0x80,0xCF,0xE7,0x9C,0xE7,0x3C,0xE7,0x79,0x80,0x61,0x80,0x31,0x8C,0x31,
0x80,0xCF,0x07,0x9C,0xE7,0x3C,0xE7,0x79,0x80,0x61,0xF8,0x31,0x8C,0x3F,
0xBC,0xCF,0x07,0x9C,0xE7,0x3C,0xE7,0x79,0x8F,0x61,0xFC,0x31,0x8C,0x3F,
0xBF,0xCF,0xE7,0x9F,0xE7,0x3C,0xE7,0x79,0xBF,0x61,0x8C,0x31,0x8C,0x01,
0xBF,0xCF,0xE7,0x9F,0xE7,0x3C,0xE7,0x79,0xBF,0x61,0x8C,0x31,0x8C,0x01,
0xBC,0xCF,0xE7,0x9C,0xE7,0x3C,0xE7,0x79,0x8F,0x61,0x8C,0x31,0x8C,0x31,
0x80,0xCF,0xE7,0x9C,0xE7,0x3C,0xE7,0x79,0x80,0x71,0x8C,0x31,0x8C,0x31,
0x80,0x0F,0x06,0x9C,0xE7,0x3C,0x07,0x78,0x80,0x3F,0xFC,0xF1,0x8F,0x3F,
0x80,0x1F,0x0F,0x9E,0xE7,0x3C,0x0F,0x7C,0x80,0x1F,0xF8,0xE0,0x0F,0x1F,
0x00,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x3F,0x80,0x01,0x00,0x00,0x0C,0x00,
0x00,0xFE,0xFF,0xFF,0xFF,0xFF,0xFF,0x1F,0x80,0x01,0x00,0x30,0x0C,0x00,
0x00,0xF8,0xFF,0xFF,0xFF,0xFF,0xFF,0x07,0x80,0x01,0x00,0x30,0x0C,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0xF0,0x0F,0x00,
0x00,0x80,0x07,0x0F,0x1E,0x3C,0x78,0x00,0x80,0x01,0x00,0xE0,0x07,0x00,
0x00,0x80,0x07,0x0F,0x1E,0x3C,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x07,0x0F,0x1E,0x3C,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0x07,0x0F,0x1E,0x3C,0x78,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x03,0x06,0x0C,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x03,0x06,0x0C,0x18,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00

void draw(void) <
// graphic commands to redraw the complete screen should be placed here
u8g.drawXBM( 9, 12, 110, 40, tehnopageru);
>

void loop(void) <
// picture loop
u8g.firstPage();
do <
draw();
> while( u8g.nextPage() );

// rebuild the picture after some delay
delay(1000);
>

Таким же образом можно вывести на дисплей QR код.

Генерируем QR код с помощью онлайн генератора qrcoder.online.
Вставляем ссылку или же другую информацию в соответствующее поле. Выбираем размер сторон картинки с кодом в пикселях. Тут вспоминаем разрешение нашего дисплея — 128×64. Вот я и выбрал 50 пикселей. Проходим тот же путь.

Остались вопросы? Задавайте в комментариях или на форум.

OLED дисплеи и Arduino

В статье рассмотрены монохромные OLED дисплеи с разрешением 128×64 и 128×32 пикселей.

Это небольшие экранчики, их диагональ составляет всего около 1”. Основное их преимущество – удобство чтения благодаря высокой контрастности OLED дисплея. Каждый OLED дисплей изготавливается из отдельных 128×64 или 128×32 белых органических (OLED) светодиодов. Каждый светодиод включается/выключается с помощью чипа управления. Так как дисплей сам является источником света, дополнительная подсветка не требуется. Во-первых, это обеспечивает высокую контрастность дисплея, а во-вторых – значительно снижает энергозатраты, необходимы для его питания.

В качестве драйвера в дисплее используется чип SSD1306, который позволяет передавать данные по протоколам I2C, SPI и 8-битному параллельному протоколу. Как правило, столь широкий выбор интерфейсов предоставляет дисплей с разрешающей способностью 128×64 пикселей. В OLED дисплеях с разрешающей способностью 128×32, доступен только протокол SPI. В статье ниже используется именно SPI для подключения, так как он наиболее универсальный и требует малого количества контактов.

Питание OLED дисплеев

OLED дисплею и драйверу необходимо питание 3.3 В и 3.3 В на питание логики, для передачи данных. Питание дисплеев зависит от того, как именно загружен экран, но в основном он тянет около 20 мА и требует напряжение питания 3.3 В. Встроенный драфвер представляет из себя простой переключатель, который преобразует 3.3 В – 5 В в управляющий сигнал для OLED дисплея. Вы можете запускать дисплей от одного источника питания 3.3 В или использовать 3.3 В для питания чипа и до 4.5 В для самого экрана. Или вы можете подключить 3.3 В к чипу и подать 7-9 В непосредственно на контакт питания OLED дисплея.

OLED 128×64 и 128×32 с готовым выходом 5 В

Если у вас версия OLED дисплея, которая старше v1 128×64, можете не ознакамливаться со следующим подразделом. У вас уже есть возможность запитать 5 В. Все 1.3″ 128×64 и меленькие 128×32 SPI и I2C имеют на борту 5 В. Если у вас модель v2 0.96″ 128×64 OLED дисплей с отметкой 5 В на передней части, его тоже можно подключать к 5 В. Если у вас более старая версия OLED дисплея — 0.96″ (смотрите ниже), вам надо быть аккуратнее при подключении к мекроконтроллеру 5 В. OLED дисплей разработан таким образом, что он совместим с питанием 5 В. То есть вы можете подать питание в диапазоне 3-5 В, а встроенный регулятор сделает всю остальную «черную работу» за вас.

Все OLED экраны можно использовать с питанием и логикой 3.3 В.

Просто подключите контакт GND к «земле», а контакт Vin к источнику питания в диапазоне 3-5 В. В результате на контакте 3Vo будет 3.3 В.

0.96 128×64 OLED

Более старые версии OLED дисплеев 0.96″ 128×64 использовать сложнее, так как по умолчанию они не совместимы с питанием 5 В. То есть, вам надо обеспечивать для них питание 3.3 В.

  • VDD — для питания логики 3.3 В. Значение напряжения должно быть 3 или 3.3 В.
  • VBAT – это вход для изменения напряжения в диапазоне от 3.3 до 4.2 В.
  • VCC – это контакт значения напряжения high для OLED экрана. Если вы используете встроенный преобразователь напряжения, этот контакт подключать не надо. Если вы не используете внутренний преобразователь, подключите его к источнику питания 7-9 В – постоянный ток.

Рекомендуется соединить контакты VDD и VBAT вместе и подключить к 3.3 В, а контакт VCC оставить неподключенным.

Библиотека Arduino и примеры

Для использования небольших монохромных OLED дисплеев вам надо будет установить библиотеки Arduino. Код из библиотеки, которая приведена ниже поддерживает работу с любыми моделями плат Arduino. Кроме того, его можно легко адаптировать и под другие микроконтроллеры. Для передачи данных используется SPI стандарт передачи данных.

Скачать библиотеку для работы OLED дисплея можно на Github — библиотека Adafruit SSD1306. Кликните кнопку DOWNLOAD в левом верхнем углу, извлеките архив и переименуйте папку в Adafruit_SSD1306. Проверьте, чтобы в папке содержались файлы Adafruit_SSD1306.cpp и Adafruit_SSD1306.h, а также папка examples.

Переместите папку Adafruit_SSD1306 в папку Arduino /libraries. Если папка не существует, вам надо ее создать. В Windows путь будет следующим: (home folder)My DocumentsArduinolibraries, а для Mac или Linux: (home folder)/Documents/Arduino/libraries. Если у вас возникли трудности с библиотеками, ознакомьтесь с полным гайдом по работе и установке библиотек на нашем сайте Arduino-diy.com.

Читать еще:  Ivchetoo 225 и ivchetoo 05

Аналогичную процедуру вам надо будет провести с Github — библиотека Adafurit_GFX.

После установки библиотек Adafruit_SSD1306 и Adafruit_GFX, перезапустите Arduino IDE. Загрузить пример скетча можно через меню: File→Sketchbook→Libraries→Adafruit_SSD1306→SSD1306.

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

Библиотека не сможет определить размер экрана на уровне кода. Указать размер надо в header файле. Перейдите в папку с библиотекой и откройте файл Adafruit_SSD1306.h. Сверху в нем есть пояснения по адаптации библиотеки к различным дисплеям.

Создание растровых изображений

Вы можете легко создать растровые изображения для отображения на OLED дисплее с помощью LCD assistant software. Сначала создайте изображение с помощью любого фоторедактора (Photoshop, Paint и т.п.). Сохраните это изображение в формате Monochrome Bitmap (bmp):

Установите следующие параметры:

И импортируйте ваше монохромное растровое изображение. Сохраните его (Save output) в cpp файл:

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

Подключение OLED дисплея 128×64

Паяем контакты

Перед подключением надо установить и спаять контакты на OLED дисплее. Контакты не будут работать без распайки!

Начните с установки рельсы на 8 контактов на вашу монтажную плату. Рельса устанавливается в макетку своими длинными ногами.

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

Теперь спаяйте 8 контактов с 8-ю отверстиями!

I2C или SPI

Одна из хороших особенностей OLED экранов 128×64 – это то, что они могут использовать I2C или SPI протоколы. SPI отрабатывает быстрее, чем I2C, но для подключения надо больше контактов. Кроме того, наладить SPI на некоторых микроконтроллерах проще, чем I2C.

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

Экран может подключаться по I2C протоколу к любому микроконтроллеру, который поддерживает этот формат. Так как I2C интерфейс используется только для ‘соединения’ дисплея, у вас останется 512 байт RAM памяти на микроконтроллере. Но передать данные с OLED дисплея не получится.

Для начала вам надо соединить два контакта на задней части платы OLED экрана. Оба контакта должны быть ‘замкнуты’ (с помощью распайки), чтобы I2C начал работать!

После этого подключите контакты к Arduino

  • GND идет к GND(земля)
  • Vin идет к 5V
  • Data к I2C SDA (на Uno — это A4, на Mega — это 20, а на Leonardo — digital 2)
  • Clk к I2C SCL (на Uno — это A5, на Mega — это 21, а на Leonardo — digital 3)
  • RST к 4 (позже вы можете изменить этот пин в коде программы)

Это подключение совпадает с примером, который есть в библиотеке. После того как предложенный вариант отработает, вы можете попробовать другой контакт для Reset (вы не можете поменять контакты SCA и SCL).

Пример находится в: File→Sketchbook→Libraries→Adafruit_SSD1306→SSD1306_128x64_i2c example

Подключение OLED по SPI

По умолчанию плата предусматривает использование SPI, но если вы до этого использовали I2C, вам надо разомкнуть контакты, которые вы замыкали в предыдущем пункте!

После этого подключите контакты к Arduino

  • GND идет к ground (земля)
  • Vin идет к 5V
  • Data к digital 9
  • CLK к digital 10
  • D/C к digital 11
  • RST к digital 13
  • CS к digital 12

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

Пример находится в: File→Sketchbook→Libraries→Adafruit_SSD1306→SSD1306_128x64_spi example

Подключение OLED дисплея 128×32

Подключение OLED экрана 128×32 по SPI

OLED экран 128×32 очень просто подключается по SPI так как в нем есть встроенный модуль согласования уровней. Сначала возьмите рельсу 0.1″ с 8 контактами.

Установите контакты на макетной плате длинной стороной, а сверху OLED экран. После этого припаяйте рельсу к OLED PCB.

После этого подключите Arduino — GND подключается к ground (земля), Vin подключается к 5V, DATA к digital 9, CLK к digital 10, D/C к digital 11, RST к digital 13 и CS к digital 12.

Скетч соответствует тому, как вы подключили экран к Arduino. После проверки работоспособности можете попробовать подключить другие контакты.

Пример находится в: File→Sketchbook→Libraries→Adafruit_SSD1306→SSD1306_128x32_SPI example

Если вы используете OLED экран 128×32, убедитесь, что вы раскомментировали строку «#define SSD1306_128_32» в верхней части скетча Adafruit_SSD1306.h. Раскомментировав эту строку, вы изменяете размер буфера.

Подключение OLED экрана 128×32 по I2C

OLED экран 128×32 можно легко подключить и по I2C. Опять-таки, причина в наличии модуля согласования уровней и регулятора. Сначала возьмите рельсу 0.1″ на 6 контактов.

Установите рельсу длинными контактами на макетной плате

Сверху установите OLED экран

Припаяйте рельсу к OLED PCB

Теперь подключите контакты к Arduino

  • GND к GND
  • Vin к 5V
  • SDA к I2C Data (на Uno — это A4, на Mega — это 20, а на Leonardo — digital 2)
  • SCL к I2C Clock(на Uno — A5, на Mega — это 21, а на Leonardo — digital 3)
  • RST к 4 (вы можете изменить эти контакты в скетче дальше)

Это подключение соответствует тому, которое требуется для работы скетча примера. После того, как пример отработал, вы можете изменить пин RST. Вы не можете изменить контакты I2C, так как они ‘зафиксированы’ на уровне электросхемы.

Пример находится в: File→Sketchbook→Libraries→Adafruit_SSD1306→SSD1306_128x32_i2c example

Подключение старого 128×64 OLED экрана V 1.0

Эта схема подключения рассчитана на более старые 0.96″ OLED экраны, которые поставляются с модулем согласования уровней. Если у вас V2.0, то используйте другую схему подключения.

Версия V1 128×64 OLED экрана работает от 3.3 В и не имеет встроенного модуля согласования уровней, так что для использования этого экрана с 5 В микроконтроллером, вам понадобится внешний модуль согласования. Если ваш микроконтроллер поддерживает 3.3 В, вы можете пропустить дальнейшие шаги.

Предполагается, что вы будете использовать монтажную плату. Возьмите рельсу 0.1″ с 10 контактами

Установите контакты длинными ногами на макетную млату, а потом сверху – левую рельсу контактов OLED экрана.

Соедините VDD и VBAT (они подключатся к 3.3 В). GND подключается к GND.

Установите модуль согласования уровней CD4050 таким образом, чтобы пин 1 был сверху

Подключите пин 10 к пину D/C, пин 12 к CLK (SPI время) и пин 15 к DAT (SPI данные).

Подключите пин 2 к RES (сброс) и пин 4 к CS (выбор чипа). Пин 1 идет к 3.3 В, а пин 8 к земле.

Вы можете подключить входы модуля согласования уровней к любым контактам, но в данном случае мы подключили digital 13 к контакту 3 модуля согласования, 12 к пину 5, 11 к пину 9, 10 к пину 11 и 9 к пину 14. Это подключение соответствует скетчу-примеру. После того как, приведенное подключение отработает, можете поэксперементировать с другими контактами/пинами.

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

Ссылка на основную публикацию
Adblock
detector