Arduino oled 128×64: Обзоры дисплеев Arduino: описание, примеры использования

OLED дисплеи и Arduino ||Arduino-diy.com

В статье рассмотрены монохромные 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 дисплея.Arduino oled 128x64: Обзоры дисплеев Arduino: описание, примеры использования

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. Кроме того, его можно легко адаптировать и под другие микроконтроллеры.Arduino oled 128x64: Обзоры дисплеев Arduino: описание, примеры использования Для передачи данных используется SPI стандарт передачи данных.

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

Переместите папку Adafruit_SSD1306 в папку Arduino /libraries. Если папка не существует, вам надо ее создать. В Windows путь будет следующим: (home folder)\My Documents\Arduino\libraries, а для 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 дисплее.Arduino oled 128x64: Обзоры дисплеев Arduino: описание, примеры использования Контакты не будут работать без распайки!

Начните с установки рельсы на 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

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

Пример находится в: 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 (вы можете изменить эти контакты в скетче дальше)

Это подключение соответствует тому, которое требуется для работы скетча примера.Arduino oled 128x64: Обзоры дисплеев Arduino: описание, примеры использования После того, как пример отработал, вы можете изменить пин 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. Это подключение соответствует скетчу-примеру. После того как, приведенное подключение отработает, можете поэксперементировать с другими контактами/пинами.

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

Урок 5. Вывод информации на OLED дисплей

/*————————————————*/

// подключение библиотек для работы  OLED

#include <Adafruit_GFX.Arduino oled 128x64: Обзоры дисплеев Arduino: описание, примеры использования h>

#include <Adafruit_SSD1306.h>

/*————————————————*/

#define OLED_RESET 7

Adafruit_SSD1306 display(OLED_RESET);

/*————————————————*/

const unsigned char PROGMEM logoBmp[] = {

  0x0, 0x0, 0x0, 0x0, 0x1f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,

  0x0, 0x0, 0x0, 0x0, 0x3f, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,

  0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, 0x38, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,

  0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, 0x38, 0x0, 0x0, 0x0, 0x3c, 0x0, 0x0, 0x0, 0x0, 0x0,

  0x0, 0x7f, 0x80, 0x0, 0x7b, 0x80, 0x38, 0x0, 0x0, 0x7c, 0x3c, 0x0, 0x0, 0x0, 0x0, 0x0,

  0x0, 0x7f, 0x80, 0x0, 0x73, 0x80, 0x38, 0x0, 0x0, 0x7e, 0x7c, 0x0, 0x0, 0x0, 0x0, 0x0,

  0x0, 0x7f, 0x80, 0x0, 0x77, 0x80, 0x38, 0x0, 0x0, 0xfe, 0x7c, 0x0, 0x0, 0x0, 0x0, 0x0,

  0x0, 0x73, 0x80, 0x0, 0x7f, 0x80, 0x38, 0x0, 0x0, 0xfe, 0x7c, 0x0, 0x0, 0x3f, 0xc0, 0x0,

  0x0, 0x73, 0x80, 0x0, 0x7f, 0x80, 0x38, 0x0, 0x0, 0xfe, 0x7c, 0x0, 0x0, 0x3f, 0xc0, 0x0,

  0x0, 0x73, 0x80, 0x0, 0x7f, 0x0, 0x38, 0x0, 0x0, 0xfe, 0x7c, 0x0, 0x0, 0x3f, 0xc0, 0x0,

  0x0, 0x77, 0x8f, 0xfc, 0x7c, 0x0, 0x38, 0x0, 0x0, 0xfe, 0x78, 0x0, 0x0, 0x39, 0xc0, 0x0,

  0x0, 0x7f, 0x8f, 0xfc, 0xfc, 0x0, 0x38, 0x0, 0x0, 0xfe, 0xf8, 0x0, 0x0, 0x39, 0xc0, 0x0,

  0x0, 0x7f, 0x8f, 0xfc, 0xf8, 0x3f, 0xb8, 0x0, 0x0, 0xfc, 0xf0, 0x0, 0x0, 0x3b, 0xc0, 0x0,

  0x0, 0x7f, 0x8f, 0x9c, 0xff, 0xbf, 0xbf, 0xc3, 0xf8, 0xfc, 0xf0, 0x38, 0x0, 0x3f, 0xc0, 0x0,

  0x0, 0x7f, 0xe7, 0x1c, 0xff, 0xbf, 0xbf, 0xe7, 0xfc, 0xf8, 0xff, 0xbf, 0x0, 0x3f, 0xc0, 0x0,

  0x0, 0x7f, 0xf7, 0x1c, 0x7f, 0xbf, 0xbf, 0xff, 0xfc, 0xfe, 0xff, 0xbf, 0x0, 0x3f, 0x80, 0x0,

  0x0, 0x73, 0xf7, 0xfc, 0x7b, 0xbb, 0xb9, 0xff, 0xbc, 0xfe, 0xff, 0xbf, 0x0, 0x7f, 0x38, 0x0,

  0x0, 0x70, 0xf7, 0xfc, 0x7b, 0xbf, 0xb8, 0xff, 0x1c, 0xfe, 0xfb, 0xbf, 0x0, 0x7f, 0x39, 0xc0,

  0x0, 0x0, 0x7, 0xfc, 0x3f, 0xbf, 0xb8, 0xfe, 0x1c, 0xfe, 0xf3, 0xbf, 0x0, 0x7f, 0x39, 0xc0,

  0x0, 0x0, 0x0, 0x0, 0x3f, 0xbf, 0xb8, 0xff, 0xfc, 0xee, 0x73, 0xbf, 0x0, 0x3f, 0x39, 0xc0,

  0x0, 0x0, 0x0, 0x0, 0x3f, 0xbf, 0x38, 0xff, 0xfc, 0xee, 0x7f, 0xbf, 0x8c, 0x3f, 0x39, 0xc0,

  0x0, 0x0, 0x0, 0x0, 0x3f, 0x0, 0x0, 0x1f, 0xfc, 0xfe, 0x7f, 0x9f, 0x8c, 0x3f, 0x3b, 0xc0,

  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, 0x7f, 0xbf, 0x80, 0x3f, 0x3f, 0xc0,

  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xfe, 0x0, 0x7f, 0x0, 0x3f, 0x3f, 0xc0,

  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x0, 0x3f, 0x3f, 0xc0,

  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x0, 0x3f, 0x3, 0xe0,

  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x77, 0x0, 0x0, 0xf, 0xe0,

  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x77, 0x0, 0x0, 0xf, 0xe0,

  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x77, 0x0, 0x0, 0xf, 0xc0,

  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x77, 0x0, 0x0, 0xf, 0xc0,

  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x77, 0x0, 0x0, 0xf, 0xc0,

  0x0, 0x0, 0xf8, 0x3e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x77, 0x0, 0x0, 0xf, 0xc0,

  0x0, 0x0, 0xf8, 0x3f, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,

  0x0, 0xf1, 0xfc, 0x3f, 0x7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,

  0x0, 0xf1, 0xfc, 0x3f, 0x87, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,

  0x1, 0xf1, 0xfc, 0x3f, 0x87, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,

  0x1, 0xf1, 0xdc, 0x7, 0x87, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,

  0x3, 0xe0, 0x1c, 0x3, 0x87, 0x0, 0x7, 0xff, 0xc3, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,

  0x7, 0xc0, 0x1e, 0x7, 0x87, 0x0, 0x7, 0xff, 0xc7, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,

  0x1f, 0xc0, 0x1e, 0xf, 0x87, 0x3, 0x87, 0xff, 0xc7, 0xff, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0,

  0x1f, 0x80, 0x1e, 0x3f, 0x87, 0x3, 0x87, 0xc0, 0xf, 0x8f, 0xff, 0xf3, 0xf0, 0x1f, 0xf0, 0x0,

  0x1f, 0x80, 0xe, 0x3f, 0xc7, 0x3, 0x87, 0x80, 0xf, 0xf, 0xff, 0xf7, 0xf8, 0x1f, 0xf0, 0x0,

  0x1f, 0x80, 0xe, 0x3f, 0xe7, 0x7, 0x8f, 0x80, 0xf, 0x0, 0x0, 0xf7, 0xfc, 0x3f, 0xf0, 0x0,

  0x7, 0x0, 0xe, 0x3f, 0xe7, 0x7, 0x8f, 0x0, 0x1e, 0x0, 0x1, 0xf7, 0xfc, 0x3d, 0xc0, 0x0,

  0x7, 0x0, 0x7e, 0x1, 0xf7, 0x7, 0x8f, 0x0, 0x1e, 0x0, 0x3, 0xe7, 0x3c, 0x3d, 0xc0, 0x0,

  0x7, 0x3, 0xfe, 0x0, 0xf7, 0xff, 0x8f, 0xf8, 0x3e, 0x0, 0x3, 0xe7, 0x3c, 0x39, 0xc0, 0x0,

  0x7, 0xf, 0xfe, 0x0, 0xf7, 0xff, 0x8f, 0xf8, 0x3f, 0x80, 0x7, 0xc7, 0x7c, 0x3d, 0xc0, 0x0,

  0x7, 0xf, 0xf0, 0x0, 0x77, 0xff, 0xf, 0xf8, 0x7f, 0xc0, 0xf, 0x87, 0xfc, 0x3f, 0xc0, 0x0,

  0x7, 0xf, 0x80, 0x0, 0x70, 0x7, 0x0, 0x38, 0xff, 0xc0, 0xf, 0x87, 0xf8, 0x3f, 0xc0, 0x0,

  0x7, 0xe, 0x0, 0x7, 0xf0, 0x7, 0x0, 0x38, 0xfb, 0xc0, 0xf, 0x7, 0xf0, 0x1f, 0xc0, 0x0,

  0xf, 0xe, 0x0, 0x7, 0xf0, 0x7, 0x0, 0x39, 0xf3, 0xc7, 0xff, 0x8f, 0x80, 0x1, 0xc0, 0x0,

  0xf, 0xe, 0x0, 0x7, 0xf0, 0x7, 0x0, 0x39, 0xe7, 0xc7, 0xff, 0x8f, 0xc0, 0x1, 0xc0, 0x0,

  0xf, 0xe, 0xfc, 0x0, 0x0, 0x7, 0x0, 0x39, 0xff, 0xc7, 0xff, 0x9f, 0xc0, 0x1, 0xc0, 0x0,

  0xe, 0xf, 0xfe, 0x0, 0x0, 0x7, 0x0, 0x79, 0xff, 0x80, 0x7c, 0x1f, 0xc1, 0xc1, 0xc0, 0x0,

  0xe, 0xf, 0xff, 0x0, 0x0, 0x7, 0x1, 0xf9, 0xff, 0x0, 0x7c, 0x1f, 0xe1, 0xe1, 0xc0, 0x0,

  0x0, 0xf, 0xff, 0x0, 0x0, 0x7, 0xf, 0xf9, 0xf0, 0x0, 0xf8, 0x1d, 0xe1, 0xf1, 0xc0, 0x0,

  0x0, 0x0, 0xf, 0x0, 0x0, 0x7, 0xf, 0xf1, 0xc0, 0x0, 0xf0, 0x1d, 0xe1, 0xff, 0xc0, 0x0,

  0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x8f, 0xc0, 0x0, 0x0, 0xf0, 0x1d, 0xe0, 0xff, 0xc0, 0x0,

  0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x80, 0x0, 0x0, 0x0, 0xe0, 0x1f, 0xe0, 0x7f, 0xc0, 0x0,

  0x0, 0x0, 0x0, 0x0, 0x0, 0x7, 0x80, 0x0, 0x0, 0x0, 0xe0, 0x1f, 0xe0, 0x0, 0x0, 0x0,

  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0xc0, 0x0, 0x0, 0x0,

  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,

  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,

  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,

  0

};

/*————————————————*/

void setup() {

  display.Arduino oled 128x64: Обзоры дисплеев Arduino: описание, примеры использования begin(SSD1306_SWITCHCAPVCC, 0x3C);  // инициализация дисплея по интерфейсу I2C, адрес 0x3C

  display.clearDisplay(); // очистка дисплея

  display.drawBitmap(0, 0, logoBmp, 128, 64, WHITE); // рисуем нашу картинку на экране

  display.display(); // выводим её на OLED

}

/*————————————————*/

void loop() {

}

/*————————————————*/

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

Подключение 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_SSD1306

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

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

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

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

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

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

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

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

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

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

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

display.Arduino oled 128x64: Обзоры дисплеев Arduino: описание, примеры использования begin(SSD1306_SWITCHCAPVCC, 0x3C);

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

Так же не забываем о экономии при покупке товаров на Алиєкспресс с помощью кэшбэка

Для веб администраторов и владельцев пабликов  главная страница ePN

Для пользователей покупающих на Алиэкспресс с быстрым выводом % главная страница ePN Cashback

Удобный плагин кэшбеэка браузерный плагин ePN Cashback

OLED дисплей 0.96″ 128×64, I2C, SSD1306 синий

Подключение OLED дисплея I2C к NANO и вывод Русского шрифта:

А теперь более подробно, что мы делали.

Мы использовали:

1. Arduino NANO V 3.0

2. OLED display 0.96″ I2C (IIC)

3. Макетная плата для монтажа без пайки

4. Библиотека с поддержкой русского и украинского языка OLED I2C

Дисплей подключаем к ARDUINO NANO по следующей схеме:

Вход питания дисплея VDD можно было бы подключить к 3,3V или 5V ARDUINO, но у нас задача обойтись без проводов. Поэтому мы установим цифровому порту ARDUINO «D2» значение HIGHT, это значит, что на pin «D2» ARDUINO подаст 5 вольт. Для сборки используем макетную плату:

Наш Скетч:

Устанавливаем библиотеку OLED_I2C (если не была установлена) и компилируем. Каждая строка в скетче подробно описана:

Таблица соответствия символов:


































Русский символ

Символ, заглавной буквы

Символ, прописной буквы

А, а

F

f

Б, б

<

,

В, в

D

d

Г, г

U

u

Д, д

L

l

Е, е

T

t

Ж, ж

:

;

З, з

P

p

И, и

B

b

Й, й

Q

q

К, к

R

r

Л, л

K

k

М, м

V

v

Н, н

Y

y

О, о

J

j

П, п

G

g

Р, р

H

h

С, с

C

c

Т, т

N

n

У, у

E

e

Ф, ф

A

a

Х, х

{

[

Ц, ц

W

w

Ч, ч

X

x

Ш, ш

I

i

Щ, щ

O

o

Ъ, ъ

}

]

Ы, ы

S

s

Ь, ь

M

m

Э, э

~

`

Ю, ю

>

.Arduino oled 128x64: Обзоры дисплеев Arduino: описание, примеры использования

Я, я

Z

z

Для простоты написания, переключаемся на английскую раскладку и набираем текст Русскими буквами!

Подключение OLED l2C дисплея к Arduino UNO

#include <Wire.h>

#include <Arduino.h>

long speed[] = {

  50, 100, 200, 250, 400, 500, 800 };

const int speeds = sizeof(speed)/sizeof(speed[0]);

#define RESTORE_LATENCY  5

bool delayFlag = false;

bool printAll = true;

bool header = true;

enum states {

  STOP, ONCE, CONT, HELP };

states state = STOP;

uint32_t startScan;

uint32_t stopScan;

void setup()

{

  Serial.begin(115200);

  Wire.begin();

  displayHelp();

}

void loop()

{

  switch (getCommand())

  {

  case ‘s’:

    state = ONCE;

    break;

  case ‘c’:

    state = CONT;

    break;

  case ‘d’:

    delayFlag = !delayFlag;

    Serial.print(F(«<delay=»));

    Serial.println(delayFlag?F(«5>»):F(«0>»));

    break;

  case ‘e’:

    break;

  case ‘h’:

    header = !header;

    Serial.print(F(«<header=»));

    Serial.println(header?F(«yes>»):F(«no>»));

    break;

  case ‘?’:

    state = HELP;

    break;

  case ‘p’:

    printAll = !printAll;

    Serial.print(F(«<print=»));

    Serial.println(printAll?F(«all>»):F(«found>»));

    break;

  case ‘q’:

    state = HELP;

    break;

  default:

    break;

  }

  switch(state)

  {

  case ONCE:

    I2Cscan();

    state = HELP;

    break;

  case CONT:

    I2Cscan();

    delay(1000);

    break;

  case HELP:

    displayHelp();

    state = STOP;

    break;

  case STOP:

    break;

  default:

    break;

  }

}

char getCommand()

{

  char c = ‘\0’;

  if (Serial.Arduino oled 128x64: Обзоры дисплеев Arduino: описание, примеры использования available())

  {

    c = Serial.read();

  }

  return c;

}

void displayHelp()

{

  Serial.println(F(«\nArduino I2C Scanner — 0.1.03\n»));

  Serial.println(F(«\ts = single scan»));

  Serial.println(F(«\tc = continuous scan — 1 second delay»));

  Serial.println(F(«\tq = quit continuous scan»));

  Serial.println(F(«\td = toggle latency delay between successful tests.»));

  Serial.println(F(«\tp = toggle printAll — printFound.»));

  Serial.println(F(«\th = toggle header — noHeader.»));

  Serial.println(F(«\t? = help — this page»));

  Serial.println();

}

void I2Cscan()

{

  startScan = millis();

  uint8_t count = 0;

  if (header)

  {

    Serial.print(F(«TIME\tDEC\tHEX\t»));

    for (uint8_t s = 0; s < speeds; s++)

    {

      Serial.print(F(«\t»));

      Serial.print(speed[s]);

    }

    Serial.println(F(«\t[KHz]»));

    for (uint8_t s = 0; s < speeds + 5; s++)

    {

      Serial.print(F(«———«));

    }

    Serial.println();

  }

  for (uint8_t address = 8; address < 120; address++)

  {

    bool printLine = printAll;

    bool found[speeds];

    bool fnd = false;

    for (uint8_t s = 0; s < speeds ; s++)

    {

      TWBR = (F_CPU/(speed[s]*1000) — 16)/2;

      Wire.beginTransmission (address);

      found[s] = (Wire.endTransmission () == 0);

      fnd |= found[s];

      // give device 5 millis

      if (fnd && delayFlag) delay(RESTORE_LATENCY);

    }

    if (fnd) count++;

    printLine |= fnd;

    if (printLine)

    {

      Serial.print(millis());

      Serial.print(F(«\t»));

      Serial.print(address, DEC);

      Serial.print(F(«\t0x»));

      Serial.Arduino oled 128x64: Обзоры дисплеев Arduino: описание, примеры использования print(address, HEX);

      Serial.print(F(«\t»));

      for (uint8_t s = 0; s < speeds ; s++)

      {

        Serial.print(F(«\t»));

        Serial.print(found[s]? F(«V»):F(«.»));

      }

      Serial.println();

    }

  }

  stopScan = millis();

  if (header)

  {

    Serial.println();

    Serial.print(count);

    Serial.print(F(» devices found in «));

    Serial.print(stopScan — startScan);

    Serial.println(F(» milliseconds.»));

  }

}

Взаимодействие и отображение изображений на OLED

Введение

В этом руководстве мы научимся взаимодействовать с Arduino UNO с монохромным дисплеем OLED 128×64 I2C и отображать изображения.

Схема

Соедините выводы OLED со следующими выводами Arduino UNO, как показано ниже.

Arduino UNO OLED

5 В ——————— VCC

GND —————- -GND

SDA / A4 ————— SDA

SCL / A5 ————— SCL

Установить необходимые библиотеки

Либо вы можете скачать библиотеки с Github и добавить ZIP-файл в Arduino IDE с помощью add.вариант библиотеки zip.

Или вы можете установить библиотеки прямо из Arduino IDE из «Управление библиотеками».

Для установки выполните следующие действия.

Откройте управление библиотекой из эскиза -> включить библиотеку -> управлять библиотеками

Затем найдите AdafruitSSD1306 и нажмите кнопку установки.

Затем найдите AdafruitGFX и нажмите кнопку установки. Теперь мы успешно установили необходимые библиотеки для этого проекта.

Пример кода Adafruit

Давайте загрузим пример программы библиотеки adafruitSSD1306 и протестируем нашу настройку.Откройте пример программы из Файл -> Примеры -> Adafruit SSD1306 -> ssd1306_128x64_i2c, т.к. мы используем OLED-дисплей с интерфейсом I2C с размером экрана 128×64.

Теперь загрузим код

Перейдите в меню инструментов -> Платы выберите Arduino UNO, затем в Порт выберите порт, к которому подключен Arduino

Видео

Отображение изображений на OLED

Для отображения изображения на OLED сначала отобразить Нам нужно преобразовать изображение в HEX-код, для этого нам нужно использовать конвертер, например image2cpp by javl Image2cpp

Преобразование изображения в Bitmap HEX Code

Шаг 1. Откройте Converter

Нажмите кнопку image2cpp и открыть приложение в новой вкладке.

Шаг 2: Выберите файл изображения

Нажмите , выберите файлы и выберите файл изображения, который необходимо отобразить на OLED-экране.

Шаг 3: Настройки изображения

Ниже приведен снимок экрана с настройками по умолчанию, когда Мы открываем логотип facebook.

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

Размер холста: это размер нашего OLED-дисплея в моем случае его 128×64, если вы используете любой другой OLED-дисплей, затем измените настройки соответственно

Порог яркости: Он предназначен для регулировки интенсивности по отношению к background, Вы можете правильно понять это с помощью приложения.

Масштабирование: Предназначено для регулировки размера изображения по отношению к размеру холста.

Ниже скриншот после обновления настроек.

Теперь у нас есть красивый логотип facebook, мне нужно изменить размер холста на «128 x 64», порог яркости на «185», масштабирование на «масштабирование по размеру с сохранением пропорций». Другие настройки, такие как центр , цвет фона и инвертировать цвета изображения , предназначены для настройки, поиграйте с ними, чтобы понять :).

Шаг 4: Сгенерируйте код

Из вывода кода в раскрывающемся меню formate выберите код Arduino и нажмите кнопку Generate code .Arduino oled 128x64: Обзоры дисплеев Arduino: описание, примеры использования

Теперь мы успешно сгенерировали HEX-код для нашего изображения. Перейдем к кодированию Arduino.

Кодирование Arduino

Скопируйте приведенный ниже код в новый эскиз Arduino, затем скопируйте сгенерированный выше HEX-код чуть выше функции void Setup () в коде Arduino. Так он будет выглядеть так.

Теперь выберите плату и порт в меню инструментов и загрузите код, вот и все. Наш OLED начнет отображать изображение.

Видео

adafruit / Adafruit_SSD1306: библиотека Arduino для монохромных OLED-дисплеев SSD1306 128×64 и 128×32

Это библиотека для наших монохромных OLED на основе драйверов SSD1306

Купите сегодня в магазине adafruit!
——> http://www.adafruit.com/category/63_98

Эти дисплеи используют I2C или SPI для связи, для взаимодействия требуется от 2 до 5 контактов.

Adafruit вкладывает время и ресурсы в создание этого открытого исходного кода,
пожалуйста, поддержите Adafruit и оборудование с открытым исходным кодом, купив
продукты от Adafruit!

Написано Лимором Фридом / Ladyada для Adafruit Industries при участии сообщества разработчиков ПО с открытым исходным кодом. Код прокрутки предоставлен Майклом Греггом. Динамическое выделение буфера на основе работы Эндрю Канадея.
Лицензия BSD, дополнительные сведения см. В файле license.txt. Весь текст выше должен быть включен в любое повторное распространение

Предпочтительный метод установки — использовать диспетчер библиотек Arduino IDE Library.Чтобы вместо этого загрузить исходный код с Github, нажмите «Клонировать или загрузить» выше, а затем «Загрузить ZIP». После распаковки переименуйте полученную папку в Adafruit_SSD1306. Убедитесь, что папка Adafruit_SSD1306 содержит Adafruit_SSD1306.cpp и Adafruit_SSD1306.h.

Вам также необходимо будет установить библиотеку Adafruit GFX , которая предоставляет графические примитивы, такие как линии, круги, текст и т.Arduino oled 128x64: Обзоры дисплеев Arduino: описание, примеры использования Д. Это также можно найти в диспетчере библиотек Arduino или получить исходный код с https: // github .ru / adafruit / Adafruit-GFX-Library

Изменения

Запрос на включение:
(Сентябрь 2019)

  • новые #defines для SSD1306_BLACK, SSD1306_WHITE и SSD1306_INVERSE, которые соответствуют существующей схеме именования #define и не будут конфликтовать с общими названиями цветов
  • старые определения # для ЧЕРНОГО, БЕЛОГО и ИНВЕРСИИ сохранены для обратной совместимости (отказ с помощью #define NO_ADAFRUIT_SSD1306_COLOR_COMPATIBILITY)

Версия 1.2 (ноябрь 2018 г.) содержит некоторые существенные изменения:

  • Размеры отображения теперь указаны в конструкторе… вам больше не нужно редактировать файл .h для разных экранов (хотя старые эскизы могут продолжать работать таким образом).
  • Используются

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

Совместимость

MCU Проверенные работы Не работает Не тестировалось Банкноты
Atmega328 Х
Atmega32u4 Х
Атмега2560 Х
ESP8266 Х Измените OLED_RESET на другой вывод, если используются выводы I2C по умолчанию D4 / D5.
ESP32 Х
ATSAM3X8E Х
ATSAM21D Х
Intel Curie Х
WICED Х Нет аппаратного SPI — только bitbang
ATtiny85 Х
Частица Х
  • ATmega328: Arduino UNO, Adafruit Pro Trinket, Adafruit Metro 328, Adafruit Metro Mini
  • ATmega32u4: Arduino Leonardo, Arduino Micro, Arduino Yun, Teensy 2.Arduino oled 128x64: Обзоры дисплеев Arduino: описание, примеры использования 0, Адафрут Флора, Блюфрут Микро
  • ATmega2560: Arduino Mega
  • ;

  • ESP8266: Adafruit Huzzah
  • ATSAM3X8E: Arduino Due
  • ATSAM21D: Arduino Zero, M0 Pro, Adafruit Metro Express, Feather M0
  • ATtiny85: Adafruit Gemma, Arduino Gemma, Adafruit Trinket
  • Частица: частица аргона

Добавление белого OLED-дисплея 128×64 пикселей в ваш проект Arduino

В настоящее время OLED-экраны для проектов в области электроники очень доступны.Они бывают разных форм и размеров. Некоторые из них монохромные или двухцветные, но вы также можете получить полноцветные экраны. На них определенно стоит взглянуть, когда ваши проекты Arduino должны отображать четкий и четкий вывод. Этот пост посвящен красивому маленькому белому OLED-дисплею 128 × 64 пикселей, основанному на микросхеме драйвера OLED SSD1306.

Белый 0,96-дюймовый 128 × 64 6-контактный модуль дисплея SPI OLED

Приступая к работе

Я пытался получить крошечный 0,96-дюймовый монохромный (белый) экран от VNG Systems для работы на моих Arduino Uno и Nano.Он имеет разрешение 128х64 пикселей и имеет красивое четкое и яркое изображение. Это 6-контактная версия SPI. Как и предполагалось в инструкции, я подключил его к своему Nano и установил библиотеку U8glib. К сожалению, мне не удалось заставить его работать, и после некоторого времени я решил найти другой подход. После некоторого поиска в Google я попытался перемонтировать соединения и, наконец, заставил его работать с библиотекой Adafruit SSD1306,

.

Подключение 0,96-дюймового модуля белого OLED-дисплея 128 × 64 пикселей

Этот экран представляет собой 6-контактную версию SPI, поэтому подключить его к Arduino очень просто.Я нашел несколько разных подходов в Интернете, но это то, что у меня сработало. Подключите экран к Arduino следующим образом:

OLED Ардуино
ЗЕМЛЯ ЗЕМЛЯ
VCC
SCL D10
SDA D9
РЭС D13
постоянного тока D11

0.Arduino oled 128x64: Обзоры дисплеев Arduino: описание, примеры использования 96-дюймовый белый OLED-модуль 128 × 64 пикселей с отображением текста

Установка и изменение библиотеки Adafruit SSD1306

Запустите Arduino IDE и установите библиотеку Adafruit SSD1306:

  • Перейти к Sketch > Включить библиотеку > Управление библиотеками
  • Найдите « SSD1306 », затем выберите и установите библиотеку Adafruit

Затем откройте файл « Adafruit_SSD1306.h » (находится в папке ваших библиотек, для меня он находился в ~ / Arduino / libraries / Adafruit_SSD1306 / ).

Найдите строки:

 // # определить SSD1306_128_64
   #define SSD1306_128_32
// #define SSD1306_96_16 

и измените его на:

 #define SSD1306_128_64
// #define SSD1306_128_32
// #define SSD1306_96_16 

Примечание : Если вы используете Windows и у вас возникли проблемы с открытием или редактированием файла, используйте текстовый редактор, например Notepad ++, вместо Блокнота по умолчанию в Windows.

Не забудьте сохранить файл!

Запуск примера скетча

Пришло время проверить ваш дисплей.Вы можете сделать это, используя пример скетча « ssd1306_128x64_spi », который поставляется с библиотекой SSD1306.

  • Перейти к Файл > Примеры > Adafruit SSD1306
  • Загрузите эскиз « sd1306_128x64_spi »

Скомпилируйте и загрузите его на свой Arduino, и вы увидите демонстрационные анимации. Изучите экзамен, чтобы узнать, как включить OLED-экран в свои собственные проекты!

0.96-дюймовый белый OLED-модуль 128 × 64 пикселей, отображающий анимацию

OLED 1,3 «128×64 I2C Blue Display

Описание

Этот 1,3-дюймовый OLED-дисплей имеет разрешение 128 x 64 синих пикселя на черном фоне с интерфейсом I2C для легкого управления с помощью MCU.Arduino oled 128x64: Обзоры дисплеев Arduino: описание, примеры использования

В ПАКЕТЕ:

  • OLED 1,3 ″ 128 × 64 I2C Blue Display

ОСНОВНЫЕ ХАРАКТЕРИСТИКИ OLED 1,3 ″ 128 × 64 I2C СИНИЙ ДИСПЛЕЙ :

  • Новейшая светоизлучающая технология OLED
  • Разрешение 128 × 64 пикселей
  • Синий на черном монохромном дисплее
  • Интерфейс

  • I2C использует только 2 контакта на MCU
  • Ш2106 Контроллер OLED
  • 3.Работа 3 или 5 В

Эти дисплеи могут вместить много информации в небольшом форм-факторе.

OLED-дисплей

Дисплеи

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

Дисплей имеет разрешение 128 х 64 пикселей. Пиксели синие на черном фоне.

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

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

Интерфейс I2C

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

Адрес I2C по умолчанию для этих дисплеев — 0x3C. Адрес указан на сумке, в которой поставляется модуль.

Если вы не уверены в адресе I2C этого или любого другого устройства, легко узнать, что это такое. Просто обратитесь к этому блогу , сообщению .

Соединения модулей

Подключение к дисплею осуществляется через 4-контактный разъем.

Заголовок 1 x 4

  • VCC — Подключение к 3,3 или 5 В.Arduino oled 128x64: Обзоры дисплеев Arduino: описание, примеры использования Он может поступать от MCU или быть отдельным источником питания.
  • GND — Подключение к заземлению системы. Это заземление должно быть общим с MCU.
  • SCL — Подключите к выводу I2C / SCL на MCU.
  • SDA — Подключите к выводу I2C / SDA на MCU.

РЕЗУЛЬТАТЫ НАШИ ОЦЕНКИ:

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

OLED 0,9 и 1,3 Сравнение размеров

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

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

Подключите дисплей

Это просто, просто подключите VCC к 5 В (или 3,3 В), а GND к земле на MCU. Линии I2C просто подключаются к одним и тем же линиям на MCU, поэтому SCL — SCL и SDA — SDA.

Установить библиотеку

Установите следующую библиотеку, если она еще не установлена ​​на вашем компьютере. Их можно установить из диспетчера библиотек Arduino IDE.
«U8g2lib»

Эта библиотека может обрабатывать микросхему контроллера Sh2106, с которой не может справиться библиотека Adafruit, и она очень мощная со многими функциями.Справочное руководство и другую информацию можно найти здесь: https://github.com/olikraus/u8g2

Загрузить и запустить программу

Приведенная ниже программа выводит текст на дисплей, а затем обводит его рамкой.Arduino oled 128x64: Обзоры дисплеев Arduino: описание, примеры использования После установки библиотеки будет много примеров программ, которые также можно будет загрузить и запустить. Вам просто нужно раскомментировать следующую строку в любой программе, которую вы хотите запустить. Это сообщает библиотеке, что дисплей использует контроллер Sh2106, дисплей имеет разрешение 128 × 64 и использует интерфейс I2C.

«U8G2_Sh2106_128X64_NONAME_F_HW_I2C u8g2 (U8G2_R0, / * reset = * / U8X8_PIN_NONE);»

OLED 128 × 64 Sh2106 Тестовая программа

 / *
 * 1,3-дюймовый OLED-дисплей с контроллером Sh2106 Тестирование
 * Выводит на дисплей «Hello World», а затем обводит его рамкой.
 *
 * Подключите дисплей к 3,3 или 5 В и заземлению.
 * Подключите SDA к A4 (или SDA) и SCL к A5 (или SCL)
 * /
#include 
#include 
#include 

// Эта строка определяет контроллер, разрешение и тип интерфейса для использования из библиотеки
U8G2_Sh2106_128X64_NONAME_F_HW_I2C  u8g2  (U8G2_R0, / * сброс = * / U8X8_PIN_NONE);
// ================================================ ===============================
// Инициализация
// ================================================ ===============================
void setup (void) {
  u8g2  .begin ();
}
// ================================================ ===============================
//  Главный
// ================================================ ===============================
void loop (void) {
  у8г2 .первая страница();
 делать {
  u8g2  .setFont (u8g2_font_ncenB14_tr); // Устанавливаем шрифт
  u8g2  .drawStr (3,35, «Привет, мир!»); // Напишите "Hello World!"
  u8g2  .drawRFrame (0,0,127,63,7); // Рисуем вокруг него прямоугольник
 } while ( u8g2  .nextPage ());
}
 

ДО ОТГРУЗКИ ЭТИ МОДУЛИ ЯВЛЯЮТСЯ:

  • Проверено
  • Функциональность проверена
  • Переупакован в высококачественный герметичный пакет ESD для безопасного хранения.

Примечания:

  1. Дисплей тонкий и хрупкий.Arduino oled 128x64: Обзоры дисплеев Arduino: описание, примеры использования Убедитесь, что вы не надавливаете прямо на стекло, иначе оно может треснуть.

Технические характеристики

Дисплей Разрешение 128 x 64 пикселя
Цвет Синий (монохромный)
Интерфейс I2C (адрес 0x3C)
Эксплуатационные характеристики Вход питания постоянного тока 3.3 или 5В
Рабочий ток <15 мА (номинал)
Размеры
Размер модуля 35,4 x 33,5 мм (1,4 ″ x 1,3 ″)
Диагональ дисплея 33 мм (1,3 ″)
Дисплей (Ш x В) 29,42 x 14,7 мм (1,16 x 0,58 дюйма)
Контроллер дисплея Ш2106

Сколько тока используют OLED-дисплеи?

Эти маленькие OLED-дисплеи повсюду, и на то есть веская причина.Они недорогие, их легко программировать, и они хорошо выглядят. Я хотел узнать, сколько тока они потребляют, чтобы лучше планировать проекты с батарейным питанием.

Вопросы, на которые я хочу получить ответы:

  • Сколько холостого тока потребляется, когда контроллер выключен, по сравнению с включенным (пустой дисплей)?
  • Какой минимальный ток позволяет видеть текст в помещении?
  • Какой максимальный ток при максимальной яркости всех пикселей?
  • Как размер экрана влияет на текущий отрисовку?
  • Как активная запись данных влияет на текущий отрисовку?
  • Очевидно, что они используют больше, но сколько тока используют OLED в оттенках серого и в цвете?
  • Насколько практичны OLED-дисплеи по сравнению с обычными ЖК-дисплеями для проектов с батарейным питанием?

Материалы:

  • Дешевый мультиметр (ручная шкала, предполагаемая точность +/- 10% в худшем случае)
  • Различные дисплеи OLED (72×40, 96×16, 128×32, 64×32, 128×64-0.Arduino oled 128x64: Обзоры дисплеев Arduino: описание, примеры использования 96 дюймов, 128 x 64–1,3 дюйма)
  • Arduino-совместимый микроконтроллер (Adafruit nRF52840 Feather Express)
  • Программное обеспечение (моя библиотека ss_oled )

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

А как насчет цветных и полутоновых OLED-дисплеев?
В Твиттере меня попросили включить быстрый тест этих OLED-дисплеев.Я мог сказать, что потребление энергии было высоким, потому что чип контроллера нагревается на ощупь, когда почти ничего не отображается. У меня больше нет цветного OLED-дисплея SSD1351 для тестирования, но у меня есть 4-битный полутоновый дисплей SSD1327 128×128. Когда дисплей отключен, я измерил 600 мкА. Вот некоторые значения, которые я измерил, когда контраст (яркость) был установлен на максимальное значение:

Дисплей, заполненный цветом 0 — 2,5 мА (каждый пиксель выключен / черный)
Дисплей заполнен цветом 1 — 85 мА
Дисплей заполнен цветом 2 — 111 мА
Дисплей, заполненный цветом 3 — 147 мА
Дисплей, заполненный цветом 15 (сброс дисплея из-за моего 3.Проседание блока питания 3 В)

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

Процедура:
Я провел 8 различных тестов на каждом дисплее. При настройке «тусклый» контраст установлен на значение 31. Это удобно для чтения при освещении в помещении или ночью. 127 — это контрастность по умолчанию, достаточно яркая. 255 — максимальная яркость. Ток измеряли, вставляя щупы мультиметра между Vcc дисплея и 3.Источник питания 3 В (в данном случае регулируемый выход Arduino). Было очень мало видимой разницы между контрастом 1 и 31.Arduino oled 128x64: Обзоры дисплеев Arduino: описание, примеры использования

Результатов:

Тип

Отображать
От

На,
но черный

Контраст 31,
50% пикселей освещены

Контраст 127,
50% пикселей освещены

Контрастность 255,
50% пикселей освещены

Контраст 31,
100% пикселей

Контраст 127,
100% пикселей

Контрастность 255,
100% пикселей

128×128 1.12 ”

5 мА

7,1 мА

49,5 мА

104,0 мА

108,0 мА

89,9 мА

104,0 мА

104,0 мА

128×64 1,3 дюйма

490uA

490uA

15,4 мА

26,1 мА

31.4 мА

20,6 мА

33,7 мА

39,1 мА

128×64 0,96 дюйма

26uA

469uA

5,6 мА

8,1 мА

11,0 мА

10,3 мА

15,1 мА

20,7 мА

128×32 0.91 ”

6uA

6uA

12,1 мА

16,2 мА

21,1 мА

21,3 мА

29,0 мА

38,7 мА

128×32 0,91 дюйма

4uA

4uA

16,2 мА

19,7 мА

21.7 мА

27,5 мА

33,8 мА

36,0 мА

96×16 0,69 дюйма

7uA

7uA

4,45 мА

5,62 мА

6,96 мА

7,23 мА

9,44 мА

12,11 мА

64×32 0.Arduino oled 128x64: Обзоры дисплеев Arduino: описание, примеры использования 49 ”

6uA

6uA

1,56 мА

2,71 мА

3,11 мА

2,49 мА

4,63 мА

5,17 мА

72×40 0,42 дюйма

4uA

230 мкА *

630 мкА *

N / A

N / A

93

N / A

N / A

* Дисплей 72×40 не реагировал на настройку контрастности и имел постоянный и несколько тусклый контраст.
* Дисплей 128×128 продается компанией Pimoroni; У меня нет других примеров для тестирования

. Я думал, что 128×32 было аномалией от конкретного поставщика, но второй дисплей от другого поставщика вел себя точно так же. Как ни странно, второй дисплей 64×32 от того же поставщика, купленный той же партией, потреблял вдвое больше энергии, чем протестированный выше.

Я выбрал наиболее эффективный дисплей для проведения финального теста, который отображает текст (менее 50% покрытия пикселей). Мой амперметр показал 630 мкА для статического текстового дисплея на OLED-экране 64×32.

А как насчет активной записи данных?
Помимо дополнительной активности на контроллере дисплея, будет происходить утечка тока через подтягивающие резисторы, когда линии SCL или SDA становятся низкими. Типичные подтягивающие резисторы для этих дисплеев составляют 4,7 кОм, поэтому, пока линии данных и тактовые импульсы активны, через них будет протекать около 700 мкА (3,3 В / 4700 Ом). Я попробовал тест, в котором я постоянно записывал одни и те же данные на дисплей (тот же дисплей и тот же текст, что и выше). Результат был 1.47 мА. Различные подтягивающие резисторы и разные записываемые данные дадут разные результаты.

Выводы:

  • Существует почти линейная зависимость между количеством освещенных пикселей и текущим использованием
  • Размер дисплея напрямую зависит от текущего использования
  • Есть несколько необычных дисплеев, которые потребляют больше тока, чем ожидалось. Каждую нужно тестировать индивидуально
  • При активной записи на дисплей потребляется больше тока, чем на статическом дисплее — трудно понять, является ли это активностью I2C, микросхемой контроллера или и тем, и другим.
  • Есть что-то странное в моих дисплеях 72×40; Мне нужно будет получить немного у другого поставщика и повторно протестировать
  • Вездесущий 128×64 0.96-дюймовые OLED-дисплеи потенциально могут отображать экран, полный полезной информации, при токе менее 5 мА
  • Энергопотребление полутоновых и цветных OLED-экранов намного менее эффективно по сравнению с монохромными дисплеями того же размера и яркости.
  • Небольшой OLED-дисплей с читаемым в помещении текстом может работать при токе менее 1 мА

Последний пункт выше меня удивил больше всего. Светодиодный индикатор питания на большинстве плат Arduino потребляет больше тока, чем OLED 64×32 с отображаемой на нем полезной информацией.


Чтобы ответить на мой последний вопрос о практичности OLED по сравнению с общедоступными ЖК-дисплеями для проектов с батарейным питанием, я думаю, что это зависит от проекта и источника питания. ЖК-экран приличного размера с выключенной подсветкой может потреблять менее 275 мкА (мои измерения для 2-дюймового 128×64 UC1701). Если у вас небольшой бюджет мощности и ваш MCU запрограммирован на спящий режим большую часть времени (средний ток <1 мА), это может имеют огромное значение по сравнению с OLED-дисплеем 5-20 мА, отображающим ту же информацию. С другой стороны, если вы включаете Raspberry Pi Zero или ESP32 с WIFI (80-120 мА), еще 5-20 мА не сработают. такая же большая разница в вашем бюджете мощности.

Geekcreit® 0,96-дюймовый 4-контактный синий желтый модуль дисплея iic i2c oled geekcreit для Arduino — продукты, которые работают с официальными платами Arduino Распродажа

Способы доставки

Общее примерное время, необходимое для получения вашего заказа, показано ниже:

  • Вы оформили заказ
  • (Время обработки)
  • Отправляем заказ
  • (время доставки)
  • Доставка!

Общее расчетное время доставки

Общее время доставки рассчитывается с момента размещения вашего заказа до момента его доставки вам.Общее время доставки делится на время обработки и время доставки.

Время обработки: Время, необходимое для подготовки вашего товара (ов) к отправке с нашего склада. Это включает в себя подготовку ваших товаров, выполнение проверки качества и упаковку для отправки.

Время доставки: Время, в течение которого ваш товар (-ы) дойдет с нашего склада до места назначения.

Рекомендуемые способы доставки для вашей страны / региона указаны ниже:

Отправить по адресу:

Корабль из

Этот склад не может быть доставлен к вам.

Способ (-ы) отгрузки Время доставки Информация для отслеживания

Примечание:

(1) Вышеупомянутое время доставки относится к расчетному времени в рабочих днях, которое займет отгрузка после отправки заказа.

(2) Рабочие дни не включают субботу / воскресенье и праздничные дни.

(3) Эти оценки основаны на нормальных обстоятельствах и не являются гарантией сроков доставки.

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

(5) Ускоренная доставка не может быть использована для почтовых ящиков

Расчетные налоги: Может взиматься налог на товары и услуги (GST).

Способы оплаты

Мы поддерживаем следующие способы оплаты.Нажмите, чтобы получить дополнительную информацию, если вы не знаете, как платить.

* В настоящее время мы предлагаем оплату наложенным платежом для Саудовской Аравии, Объединенных Арабских Эмиратов, Кувейта, Омана, Бахрейна, Катара, Таиланда, Сингапура, Малайзии, Филиппин, Индонезии, Вьетнама, Индии. Мы отправим код подтверждения на ваш мобильный телефон, чтобы проверить правильность ваших контактных данных. Убедитесь, что вы следуете всем инструкциям, содержащимся в сообщении.

* Оплата в рассрочку (кредитная карта) или Boleto Bancário доступна только для заказов с адресами доставки в Бразилии.

Плата

Grove 128×64 I2C OLED для Arduino и Raspberry Pi
— SwitchDoc Labs

Это очень читаемый модуль Grove с 4-контактным разъемом I2C OLED. Благодаря высокой контрастности OLED-дисплея он читается даже с мелкими шрифтами. Этот дисплей состоит из 128×64 отдельных белых OLED-пикселей, каждый из которых включается или выключается микросхемой контроллера. Поскольку дисплей излучает собственную подсветку, подсветка не требуется.Это снижает мощность, необходимую для работы OLED. Этот прорыв используется с интерфейсом I2C. Конструкция полностью готова к работе с напряжением 3,3 В / 5 В, со встроенным регулятором и повышающим преобразователем. Подключается к контроллерам Arduino или Raspberry Pi без необходимости в переключателях уровня. Кабель Grove не входит в комплект. Внешний вывод сброса не требуется. Драйверы программного обеспечения доступны здесь.

Это недорогой I2C OLED-дисплей с разъемами Grove для Arduino / Raspberry Pi / ESP8266

Этот продукт представляет собой очень гибкий модуль Grove с 4-контактным разъемом I2C OLED.Этот дисплей представляет собой OLED-дисплей 128×64, каждый пиксель которого включается или выключается микросхемой контроллера SSD1306, входящей в состав модуля. Вы можете отображать шрифты, графику и даже анимацию на этом четком и высококонтрастном дисплее.

Что такое разъемы Grove?

Разъемы

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