I2c serial 128×64 oled arduino

Содержание

Как подключить 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:

Источник

OLED I2C 128 x 64 px – схема подключения к Arduino

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

Краткий обзор модуля

OLED-экраны на базе контроллера SSD1306 популярны благодаря простому подключению, относительно низкой цене и высокому разрешению – для экрана диагональю 0.96 дюйма разрешение составляет аж 128×64! У того же Nokia 3310 разрешение составляет 84×48 пикселей при диагонали 1.5”.

Важным плюсом OLED-экранов является работа без подсветки – каждый пиксель – сам себе подсветка. За счёт такой системы, экран потребляет крайне мало тока (фактически, его можно запитать от пина Arduino). Есть и один минус – при постоянном использовании отдельные пиксели начинают выгорать и терять яркость, но до наступления этого состояния вы успеете отладить и вывести всё, что только можно.

Дисплей подключается по высокоскоростному интерфейсу I2C (относительно высокоскоростному – до 400Кбод) и использует всего 2 сигнальных провода. Это ещё один неоспоримый плюс! Несмотря на то, что интерфейс последовательный, да ещё и данные в обе стороны идут по одной линии, на рядовой Arduino можно достичь порядка 15-20fps, чего более чем достаточно для проектов.

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

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

Всего у дисплея 4 пина – VCC, GND, SDA, SCL. VCC и GND подключаются к VCC и GND Arduino соответственно (чтобы перестраховаться, лучше питать дисплей от пина 3.3В – не на всех модулях стоят понижающие преобразователи), а линии данных находятся у каждой версии Arduino на разных пинах. У Uno (Nano, Pro Mini и других платах на ATMega328/168) SDA – A4, SCL – A5. У Mega – SDA – 20, SCL – 21.

На платах 3 ревизии контакты интерфейса выведены перед 13 пином на гребёнке и подписаны соответственно.

Источник

OLED экран 128×64 / 0,96” (Trema-модуль V2.0)

Общие сведения:

Trema-модуль OLED-дисплей (128×64) — это графический дисплей, каждый пиксель которого является отдельным OLED (organic light-emitting diode) светодиодом. В отличии от TFT (Thin-Film Transistor), LCD (ЖК) и других дисплеев, этот дисплей не нуждается в подсветке, каждый пиксель светится самостоятельно, а не затемняет свет подсветки. Благодаря этому черный цвет — действительно чёрный (выключенный светодиод не светится в темноте), а белый цвет — действительно белый (не проходит через слой жидких кристаллов или тонкоплёночных транзисторов).

Использование органических светодиодов позволило достичь угла обзора более 160° и значительно снизить энергопотребление. Так же стоит отметить высокую контрастность (что повышает удобочитаемость текста и изображений), и небольшие размеры дисплея, всего 0.96 дюйма. Всё это, в сочетании с удобством и функциональностью, позволяет сказать что OLED-дисплей (128×64) один из лучших.

Видео:

Спецификация:

  • Тип дисплея: графический, OLED (organic light-emitting diode) на основе органических светодиодов.
  • Тип драйвера матрицы: SSD1306.
  • Разрешение: 128 x 64 точек.
  • Цвет пикселей (светодиодов): белый.
  • Количество цветов: белый и черный (монохромный).
  • Угол обзора: > 160°.
  • Коэффициент контрастности: 10000:1.
  • Яркость: >120 кд/м 2 .
  • Напряжение питания: 3,3 . 5 В.
  • Энергопотребление: до 80 мВт (при свечении всего экрана);
  • Интерфейс: I2C (поддерживается Arduino, WeMos, STM32, MSP430 и множеством других микроконтроллеров, и отладочных плат).
  • Адрес на шине I2C: 0x3C или 0x3D выбирается переключателем.
  • Время отклика

Подключение:

Дисплей подключается к аппаратной или программной шине I2C Arduino. Логические уровни шины I2C не должны превышать напряжение питания.

В комплекте имеется кабель для быстрого и удобного подключения модуля к колодке I2C на Trema Shield .

Если на шине I2C уже имеется другое устройство, то для подключения модуля, предлагаем воспользоваться I2C Hub.

Адрес дисплея на шине I2C выбирается переключателем на обратной стороне платы.

Модуль удобно подключать 3 способами, в зависимости от ситуации:

Способ — 1 : Используя проводной шлейф и Piranha UNO

Используя провода «Папа — Мама», подключаем напрямую к контроллеру Piranha UNO.

Способ — 2 : Используя Trema Set Shield

Модуль можно подключить к любому из I2C входов Trema Set Shield.

Способ — 3 : Используя проводной шлейф и Shield

Используя 4-х проводной шлейф, к Trema Shield, Trema-Power Shield, Motor Shield, Trema Shield NANO и тд.

Питание:

Входное напряжение питания от 3,3 до 5,5 В постоянного тока, подаётся на выводы Vcc и GND модуля.

Подробнее о модуле:

Матрица OLED-дисплея управляется встроенным драйвером SSD1306, отличающимся низким энергопотреблением и высокой скоростью отклика. В Trema-модуле OLED-дисплей (128×64) используется интерфейс I2C с возможностью выбора адреса на шине. Адрес выбирается переключателем установленным на обороте модуля. Доступны два адреса: 0x3C (0x78) и 0x3D (0x7A), в скобках (и на плате) указан адрес с учётом бита RW = 0. К одной шине можно подключить два OLED-дисплея (128×64), указав им разные адреса.

Обе библиотеки позволяют указывать адрес дисплея на шине I2C. В обеих библиотеках присутствуют шрифты с поддержкой Русского языка. Как понятно из названия, библиотека iarduino_OLED_txt предназначена только для вывода текста и чисел, но благодаря этому, она использует минимум памяти ОЗУ. Библиотека iarduino_OLED может использоваться для вывода графики, изображений, текста и чисел, но как и многие другие графические библиотеки для данного типа дисплеев, она займёт не менее 1 КБ памяти ОЗУ (более половины ОЗУ Arduino UNO).

Дело в том, что драйвер дисплея SSD1306 получает данные побайтно, каждый бит полученного байта устанавливает цвет отдельного пикселя на экране. Получается что мы не можем записать цвет менее 8 пикселей, значит при записи цвета одного пикселя, мы сотрём значения остальных 7 (если их состояние нам неизвестно). А так как драйвер SSD1306, по шинам I2C и SPI, не позволяет считывать информацию из своего ОЗУ о состоянии пикселей, то единственным выходом является создание массива в ОЗУ Arduino, данные которого целиком дублируют ОЗУ дисплея. Сначала изображение формируется в созданном массиве, а уже потом передаётся в дисплей. Разрешение экрана = 128×64 = 8192 пикселей, значит размер создаваемого массива должен быть 8192 / 8 = 1024 Байт = 1 КБ.

Подробнее про установку библиотеки читайте в нашей инструкции..

Примеры (для обеих библиотек):

Вывод времени с момента старта скетча:

Представленный ниже скетч будет выводить на дисплей, время с момента старта скетча, в формате ЧЧ:ММ:СС.

Пример с использованием текстовой библиотеки iarduino_OLED_txt:

Пример с использованием графической библиотеки iarduino_OLED:

Оба примера работают одинаково. Код скетчей отличается названием подключаемой библиотеки (1 и 2 строки) и номером вертикальной координаты (16 строка). В первом примере (для текстовой библиотеки) указывается номер строки (от 0 до 7), а во втором примере (для графической библиотеки) указывается номер пикселя (от 0 до 63).

В представленных выше примерах, координата начала вывода текста указана функцией setCursor(x,y), но координаты можно указывать и в функциях print(«текст»,x,y), как это будет сделано в следующих примерах.

Вывод текста на два дисплея:

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

Пример с использованием текстовой библиотеки iarduino_OLED_txt:

Пример с использованием графической библиотеки iarduino_OLED:

Пример с использованием графической библиотеки iarduino_OLED, так же должен отличаться названием библиотеки (1, 2 и 3 строки) и вертикальной координатой выводимых строк (13, 14, 17 и 18 строки), но он не сможет работать на Arduino UNO, так как для каждого объекта библиотека создаст буфер размером в 1 КБ, что займет всю память ОЗУ Arduino UNO.

Демонстрация вывода текста Кириллицей с указанием разных кодировок:

Представленные ниже скетчи позволят выводить Русский текст при работе в разных версиях Arduino IDE и ОС отличных от Windows.

Пример с использованием текстовой библиотеки iarduino_OLED_txt:

Пример с использованием графической библиотеки iarduino_OLED:

Оба примера работают одинаково. Код скетчей отличается названием подключаемой библиотеки (1 и 2 строки) и номером вертикальной координаты (13,15, 20,22, 27,29 строки). В первом примере (для текстовой библиотеки) указывается номер строки (от 0 до 7), а во втором примере (для графической библиотеки) указывается номер пикселя (от 0 до 63).

Если у Вас ОС Windows, Вы работаете в среде Arduino IDE 1.8.X и скетч был сохранён перед загрузкой, то указывать кодировку нет необходимости (символы будут переданы компилятору в кодировке UTF-8, которая используется библиотекой по умолчанию). Но в некоторых случаях может понадобиться явное указание кодировки. Например если у Вас ОС Windows, Вы работаете в среде Arduino IDE 1.8.X и скетч не был сохранён перед загрузкой, то все символы будут переданы компилятору в кодировке WINDOWS-1251.

Вывод символов по их коду:

Представленные ниже скетчи могут понадобиться для указания Русских или специальных символов в строках. Этот пример можно использовать не только для создания строк выводимых на дисплей. Описанный метод действует для создания любых строк в Arduino IDE (так, например, можно создавать строки для вывода в монитор последовательного порта).

Пример с использованием текстовой библиотеки iarduino_OLED_txt:

Пример с использованием графической библиотеки iarduino_OLED:

Оба примера работают одинаково. Код скетчей отличается названием подключаемой библиотеки (1 и 2 строки) и номером вертикальной координаты (10 строка). В первом примере (для текстовой библиотеки) указывается номер строки (от 0 до 7), а во втором примере (для графической библиотеки) указывается номер пикселя (от 0 до 63).

В приведённых выше примерах все Русские символы вводятся кодом по кодировке CP866 (именно в этой кодировке символы располагаются в библиотечных шрифтах), а латинские буквы (A-Z, a-z), цифры (0-9) и символы !»#$%&'()*+,-./:; [email protected][]^_`

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

Таблица кодов Русских букв в кодировке CP866:

А 128
\200
И 136
\210
Р 144
\220
Ш 152
\230
а 160
\240
и 168
\250
р 224
\340
ш 232
\350
Ё 240
\360
Б 129
\201
Й 137
\211
С 145
\221
Щ 153
\231
б 161
\241
й 169
\251
с 225
\341
щ 233
\351
ё 241
\361
В 130
\202
К 138
\212
Т 146
\222
Ъ 154
\232
в 162
\242
к 170
\252
т 226
\342
ъ 234
\352
242
\362
Г 131
\203
Л 139
\213
У 147
\223
Ы 155
\233
г 163
\243
л 171
\253
у 227
\343
ы 235
\353
243
\363
Д 132
\204
П 140
\214
Ф 148
\224
Ь 156
\234
д 164
\244
м 172
\254
ф 228
\344
ь 236
\354
244
\364
Е 133
\205
Н 141
\215
Х 149
\225
Э 157
\235
е 165
\245
н 173
\255
х 229
\345
э 237
\355
245
\365
Ж 134
\206
О 142
\216
Ц 150
\226
Ю 158
\236
ж 166
\246
о 174
\256
ц 230
\346
ю 238
\356
246
\366
З 135
\207
П 143
\217
Ч 151
\227
Я 159
\237
з 167
\247
п 175
\257
ч 231
\347
я 239
\357
247
\367

Для вывода любого символа нужно указать его код в 8-ричной системе счисления, которому должен предшествовать обратный слеш «\». Данное правило действует для любых строк в Arduino IDE. Первая буква в строке примера — «A», имеет код 128. Если перевести 128 в 8-ричную систему счисления, получится (200)8. Значит букву «А» можно записать как «\200», букву «р» как «\340», букву «д» как «\244» и т.д.

Для перевода чисел из 10-тичной в 8-ричную систему предлагаем воспользоваться стандартным калькулятором Windows. Откройте калькулятор, выберите вид калькулятора — «Программист» и введите число, Вы увидите его представление в разных системах счисления: HEX(16), DEC(10), OCT(8) и BIN(2).

Но если Вы желаете научиться быстро переводить числа между системами счисления 2, 4, 8, 10, 16, без калькулятора, то посмотрите Урок 32 — перевод чисел между системами счисления .

Запись текста кодами символов кажется более громоздкой, но на самом деле, такая запись занимает в 2 раза меньше памяти, чем строки записанные Русскими символами в кодировке UTF-8!

Если Вы пишите скетч с большим количеством выводимых строк и у Вас не хватает памяти ОЗУ, то предлагаем Вам использовать такой вид записи:

Теперь выводимые Вами строки будут храниться в области памяти программ, не используя память ОЗУ.

Вывод текста черными буквами на белом фоне:

Иногда может понадобиться выделить заголовок, это можно сделать используя другой шрифт или просто инвертировав цвет текста. По умолчанию текст выводится белыми буквами на чёрном фоне, но после вызова функции invText(true) текст будет черным на белом фоне (параметр true функции invText можно не указывать). Если вызвать функцию invText(false), то текст выводимый после обращения к данной функции, опять будет выводиться белыми буквами на чёрном фоне.

Пример с использованием текстовой библиотеки iarduino_OLED_txt:

Пример с использованием графической библиотеки iarduino_OLED:

Оба примера работают одинаково. Код скетчей отличается названием подключаемой библиотеки (1 и 2 строки) и номером вертикальной координаты (10 и 12 строки). В первом примере (для текстовой библиотеки) указывается номер строки (от 0 до 7), а во втором примере (для графической библиотеки) указывается номер пикселя (от 0 до 63).

Вывод чисел:

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

Пример с использованием текстовой библиотеки iarduino_OLED_txt:

Пример с использованием графической библиотеки iarduino_OLED:

Оба примера работают одинаково. Код скетчей отличается названием подключаемой библиотеки (1 и 2 строки) и номером вертикальной координаты (10 — 17 строки). В первом примере (для текстовой библиотеки) указывается номер строки (от 0 до 7), а во втором примере (для графической библиотеки) указывается номер пикселя (от 0 до 63).

Инверсия цвета дисплея:

Следующий пример демонстрирует инверсию цвета дисплея. Все черные пиксели станут белыми и наоборот. Действие функции invScr() распространяется как на уже выведенное изображение дисплея, так и на выводимое после.

Данный пример будет менять цвета дисплея через каждые две секунды, он будет работать как с текстовой iarduino_OLED_txt, так и с графической iarduino_OLED библиотеками.

Примеры (только для графической библиотеки):

Установка прозрачности фона текста:

В данном примере два текста накладываются друг на друга, но текст выведенный после функции bgText(false) не имеет фонового цвета и не закрашивает данные находящиеся под ним. Если функция bgText(false) не вызывалась, или вызывалась с параметром true, то текст будет иметь фоновый цвет, который закрасит находящиеся под ним данные.

Аналогичным образом работает и функция bgImage, но не для текста, а для выводимых изображений.

Вывод предустановленных изображений:

Данные примеры демонстрируют вывод небольших изображений входящих в состав библиотеки. Эти изображения хранятся как массивы в файле «DefaultImage.c» в папке «src» библиотеки iarduino_OLED. Вы можете открыть этот файл в любом текстовом редакторе и увидеть названия всех имеющихся изображений, и способ объявления массивов. Так как предустановленные изображения находятся в отдельном файле, то перед выводом на экран, нужно подключить те массивы изображения которых Вы хотите использовать в скетче.

Список предустановленных изображений и их названий:

— Img_Battery_charging — Img_Arrow_down — Img_Level_1 — Img_Alarm
— Img_Battery_low — Img_Arrow_left — Img_Level_2 — Img_Antenna
— Img_Battery_0 — Img_Arrow_right — Img_Level_3 — Img_Bluetooth
— Img_Battery_1 — Img_Arrow_up — Img_Level_4 — Img_Message
— Img_Battery_2 — Img_Dynamic — Img_Netlevel_1 — Img_Light
— Img_Battery_3 — Img_Dynamic_off — Img_Netlevel_2 — Img_Melody
— Img_Call — Img_Dynamic_on — Img_Netlevel_3 — Img_Check
— Img_Call_in — Img_Checkbox_off — Img_Radio_off — Img_Settings
— Img_Call_out — Img_Checkbox_on — Img_Radio_on
— Img_BigBattery_low — Img_Logo

Узнать размеры картинок в пикселях можно функциями getImageWidth() и getImageHeight () :

Вывод нескольких изображений на экран дисплея:

Вывод логотипа и текста iArduino:

В следующем примере описан алгоритм создания массива изображения. Вы можете создать свой файл со своими массивами (на подобии «DefaultImage.c») сохранив его в одной директории со скетчем, тогда изображения из Вашего файла, так же можно будет выводить на дисплей.

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

Данный пример демонстрирует создание массивов изображений в области ОЗУ (RAM) или ПЗУ (ROM), и вывод этих изображений на дисплей. В скетче создаются два массива myImageInRAM и myImageInROM содержащие одни и те же данные (одно и то же изображение), но массив myImageInRAM будет храниться в области ОЗУ, а массив myImageInROM в области ПЗУ, так как он был объявлен с модификатором PROGMEM. Далее, в коде setup, оба изображения выводятся на дисплей, с указанием координат левой нижней точки изображения и типа памяти в которой хранится массив.

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

Посмотрите на то, как создан первый массив — myImageInRAM. Он начинается с двух чисел определяющих размер изображения 9,8 (ширина 9 пикселей, высота 8 пикселей). Далее следуют байты, каждый бит которых отвечает за цвет пикселя (0-черный, 1-белый). Если заменить 0 на пробел, а 1 на символ «#», как это сделано в комментарии (правее данных), то можно увидеть изображение смайлика (повёрнутое на 90° по ч.с.) — это и есть то изображение, которое хранится в массиве.

Создание больших изображений:

В предыдущем примере было создано изображение с высотой в 8 пикселей. Ниже представлен пример создания массива содержащего изображение стрелки с высотой в 16 пикселей:

Массив начинается с двух чисел определяющих размер изображения 11,16 (ширина 11 пикселей, высота 16 пикселей). Далее следуют байты, каждый бит которых отвечает за цвет пикселя (0-черный, 1-белый).

Изображение прорисовывается байтами, слева направо, сверху вниз. А каждый байт прорисовывается сверху вниз, от младшего к старшему биту. Сначала побайтно заполняется верх изображения, слева направо (на рисунке байты Б0-Б10), а по достижении правого края (ширины изображения), начинает прорисовываться следующая часть изображения, расположенная ниже, опять слева направо (на рисунке байты Б11-Б21), и так далее, пока не будет достигнут самый нижний правый пиксель изображения.

Обратите внимание на то, что нижние пикселы картинки со стрелкой (старшие биты б7..б5 старший байтов Б11. Б21) являются пустыми (черными). Это значит что мы можем изменить размер картинки с 11×16, на 11×13, указав новый размер (вместо старого) в начале массива. Теперь картинка будет занимать меньше места на экране.

Вывод фигур:

На дисплей можно выводить такие фигуры как: точка (drawPixel), линия (drawLine), прямоугольник (drawRect) и круг (drawCircle). Функции прорисовки фигур принимают в качестве обязательных параметров, только координаты фигур. Дополнительными параметрами являются: флаг заливки (указывает на необходимость закрасить фигуру) и цвет (фигуры и её заливки). Если дополнительные параметры не указывать, то фигура будет выводиться белым цветом, без заливки.

Загрузив данный пример в Arduino, можно заметить, что для прорисовки всего экрана требуется время. Заметно как фигуры прорисовываются по очереди. Дело в том, что все выше описанные примеры выводили данные на дисплей автоматически (сразу после обращения к функциям библиотеки). Это значит, что общение с дисплеем по шине I2C происходит при каждом обращении к функциям вывода чисел, текста, изображений, фигур, очистки и заливки экрана. Следующий пример выводит те же фигуры, что и данный, но не по очереди, а все сразу, что значительно сокращает время.

Обновление дисплея:

В данном примере показано, как можно управлять передачей данных на дисплей (управлять обновлением дисплея). Если вызвать функцию autoUpdate с параметром false, то последующие обращения к функциям вывода не приведут к изменениям на экране дисплея. Числа, текст, изображения, фигуры, фон и т.д. будут формироваться и храниться в буфере (в ОЗУ Arduino). А передача данных на дисплей (обновление экрана) будет формироваться только после вызова функции update(). Таким образом можно сформировать изображение из множества элементов, а передать его на дисплей за один раз.

Данный пример выводит те же фигуры, что и предыдущий, но значительно быстрее. Скетчи отличаются тем, что в данном примере добавлены функции: autoUpdate с параметром false (6 строка) и update (23 и 26 строки). В любой момент можно вызвать функцию autoUpdate с параметром true и тогда дисплей вновь будет обновляться при каждом обращении к функциям вывода данных.

Описание основных функций библиотек:

Обе библиотеки iarduino_OLED и iarduino_OLED_txt могут использовать как аппаратную, так и программную реализацию шины I2C.

Подключение библиотек:

Подключение текстовой библиотеки iarduino_OLED_txt:

Подключение графической библиотеки iarduino_OLED:

Если Вы планируете выводить только текст, то используйте библиотеку iarduino_OLED_txt (она использует минимум ОЗУ).
Если Вы планируете выводить текст, фигуры или изображения, то используйте библиотеку iarduino_OLED.
При объявлении объекта допускается указывать адрес с учетом бита RW=0 (написанный на плате): 0x78 или 0x7A.
Для работы с двумя дисплеями нужно объявить два объекта (с разными именами и адресами).

Функция begin();

  • Назначение: Инициализация работы с дисплеем.
  • Синтаксис: begin();
  • Параметры: нет.
  • Возвращаемые значения: нет.
  • Примечание:
    • Функцию необходимо вызывать до обращения к остальным функциям и методам объекта.
    • Функцию достаточно вызвать 1 раз в коде setup.
  • Пример:

Функция clrScr();

  • Назначение: Очистка экрана дисплея.
  • Синтаксис: clrScr( [ЗАЛИТЬ] );
  • Параметры:
    • ЗАЛИТЬ — не обязательный параметр (true или false) указывающий что экран нужно залить белым цветом, после его очистки.
      Значение по умолчанию — false.
  • Возвращаемые значения: нет.
  • Примечание:
    • Вызов функции без параметра аналогичен вызову с параметром false.
  • Пример:

Функция fillScr();

  • Назначение: Заливка дисплея.
  • Синтаксис: fillScr( [ЦВЕТ] );
  • Параметры:
    • ЦВЕТ — не обязательный параметр (0 или 1), 1 — залить белым цветом, 0 — залить чёрным цветом.
      Значение по умолчанию — 1.
  • Возвращаемые значения: нет.
  • Примечание:
    • Вызов функции без параметра аналогичен вызову с параметром 1 (залить белым цветом).
  • Пример:

Функция invScr();

  • Назначение: Инверсия цветов экрана.
  • Синтаксис: invScr( [ФЛАГ] );
  • Параметры:
    • ФЛАГ — не обязательный параметр (true или false) указывающий что цвета экрана нужно инвертировать.
      Значение по умолчанию — true.
  • Возвращаемые значения: нет.
  • Примечание:
    • Если флаг установлен, то на экране поменяются цвета как уже выведенных, так и выводимых в дальнейшем данных.
    • Если флаг сброшен, то цвета на экране вернутся к обычному состоянию.
    • Вызов функции без параметра аналогичен вызову с параметром true.
  • Пример:

Функция invText();

  • Назначение: Инвертировать цвет выводимого текста.
  • Синтаксис: invText( [ФЛАГ] );
  • Параметры:
    • ФЛАГ — не обязательный параметр (true или false) указывающий что цвет выводимого текста нужно инвертировать.
      Значение по умолчанию — true.
  • Возвращаемые значения: нет.
  • Примечание:
    • Если флаг установлен, то весь текст выводимый после обращения к данной функции будет отображаться с инверсией цвета.
    • Если флаг сброшен, то весь текст выводимый после обращения к данной функции будет отображаться без инверсии цвета.
    • Вызов функции без параметра аналогичен вызову с параметром true.
  • Пример:

Функция bgText();

  • Назначение: Управление наличием фона у выводимого текста.
  • Синтаксис: bgText( [ФЛАГ] );
  • Параметры:
    • ФЛАГ — не обязательный параметр (true или false) указывающий что у текста есть фон.
      Значение по умолчанию — true.
  • Возвращаемые значения: нет.
  • Примечание:
    • Если флаг установлен, то весь текст выводимый после обращения к данной функции будет отображаться с фоновым цветом.
    • Если флаг сброшен, то весь текст выводимый после обращения к данной функции будет отображаться без фонового цвета.
    • Вызов функции без параметра аналогичен вызову с параметром true.
    • Отсутствие фона означает, что данные находящиеся под выводимым текстом останутся видны.
    • Функция bgText() доступна только в графической библиотеке iarduino_OLED.
  • Пример:

Функция bgImage();

  • Назначение: Управление наличием фона у выводимых изображений.
  • Синтаксис: bgImage( [ФЛАГ] );
  • Параметры:
    • ФЛАГ — не обязательный параметр (true или false) указывающий что у изображений есть фон.
      Значение по умолчанию — true.
  • Возвращаемые значения: нет.
  • Примечание:
    • Если флаг установлен, то все изображения выводимые после обращения к данной функции будут отображаться с фоновым цветом.
    • Если флаг сброшен, то все изображения выводимые после обращения к данной функции будут отображаться без фонового цвета.
    • Вызов функции без параметра аналогичен вызову с параметром true.
    • Отсутствие фона означает, что данные находящиеся под выводимым изображением останутся видны.
    • Функция bgText() доступна только в графической библиотеке iarduino_OLED.
  • Пример:

Функция setFont();

  • Назначение: Выбор шрифта для выводимого текста.
  • Синтаксис: setFont( ШРИФТ );
  • Параметры:
    • ШРИФТ — название массива шрифта, который будет использован для вновь выводимого текста.
  • Возвращаемые значения: нет.
  • Примечание:
    • Перед выбором шрифта, его нужно подключить (см. пример).
  • Список предустановленных шрифтов:
    • SmallFont — содержит цифры, символы и Латинские буквы размером 6×8 px.
    • SmallFontRus — содержит цифры, символы, Латинские и Кириллические буквы размером 6×8 px.
    • MediumFont — содержит цифры, символы и Латинские буквы размером 12×16 px.
    • MediumFontRus — содержит цифры, символы, Латинские и Кириллические буквы размером 12×16 px.
    • MediumNumbers — содержит цифры размером 12×16 px.
    • BigNumbers — содержит цифры размером 14×24 px.
    • MegaNumbers — содержит цифры размером 24×40 px.
  • Пример:

Функция getFontWidth();

  • Назначение: Получение ширины символов шрифта.
  • Синтаксис: getFontWidth();
  • Параметры: нет.
  • Возвращаемые значения: uint8_t — ширина символов выбранного шрифта в пикселях.
  • Пример:

Функция getFontHeight();

  • Назначение: Получение высоты символов шрифта.
  • Синтаксис: getFontHeight();
  • Параметры: нет.
  • Возвращаемые значения: uint8_t — высота символов выбранного шрифта.
  • Примечание: высота символов для графической библиотеки iarduino_OLED возвращается в пикселях, а для текстовой библиотеки iarduino_OLED_txt в строках.
  • Пример:

Функция setCoding();

  • Назначение: Указание кодировки текста в скетче.
  • Синтаксис: setCoding( [КОДИРОВКА] );
  • Параметры:
    • КОДИРОВКА — тип кодировки:
      • TXT_CP866 — текст в скетче представлен в кодировке CP-866.
      • TXT_WIN1251 — текст в скетче представлен в кодировке WINDOWS-1251.
      • TXT_UTF8 — текст в скетче представлен в кодировке UTF-8.
      • false — кодировка текста в скетче совпадает с положением символов в массивах шрифтов (CP-866).
  • Возвращаемые значения: нет.
  • Примечание:
    • Функция полезна, если Вы выводите Русский текст и он некорректно отображается на экране дисплея.
    • В разных версиях Arduino IDE использовались разные кодировки для хранения скетчей, явное указание кодировки позволяет работать в более ранних версиях Arduino IDE.
    • Если функция setCoding не вызывалась, то считается что текст скетча представлен в кодировке UTF-8.
    • Вызов функции с параметром false позволяет выводить символы по их коду (см. примеры).
    • Вызов функции без параметра аналогичен вызову с параметром false.
  • Пример:

Функция setCursor();

  • Назначение: Установка курсора в указанную позицию на экране.
  • Синтаксис: setCursor( X , Y );
  • Параметры:
    • X — координата по оси X в пикселях.
    • Y — координата по оси Y в пикселях или строках (см. примечание).
  • Возвращаемые значения: нет.
  • Примечание:
    • Координата по оси Y для графической библиотеки iarduino_OLED указывается в пикселях (от 0 до 63), а для текстовой библиотеки iarduino_OLED_txt в строках (от 0 до 7).
    • После данной функции можно вывести текст или изображение без указания их координат в функциях print() или drawImage().
    • Если требуется задать координату только по одной оси, а другую ось оставить без изменений, то для оси которую требуется оставить без изменений, нужно установить значение OLED_N.
  • Пример:

Функция setCursorShift();

  • Назначение: Сдвиг курсора на указанное значение.
  • Синтаксис: setCursorShift( X, Y );
  • Параметры:
    • X — смещение курсора от его текущей позиции по оси X на указанное количество пикселей.
    • Y — смещение курсора от его текущей позиции по оси Y на указанное количество пикселей или строк (см. примечание).
  • Возвращаемые значения: нет.
  • Примечание:
    • Смещение по оси Y для графической библиотеки iarduino_OLED указывается в пикселях (от -63 до 63), а для текстовой библиотеки iarduino_OLED_txt в строках (от -7 до 7).
    • Данная функция похожа на функцию setCursor(), но она не указывает координаты курсора, а сдвигает его.
    • Функция может быть полезна для задания точных интервалов между выводимыми текстами и (или) картинками.
  • Пример:

Функция print();

  • Назначение: Вывод текста на экран дисплея.
  • Синтаксис: print( ТЕКСТ [ , X ] [ , Y ] );
  • Параметры:
    • ТЕКСТ — текст который требуется вывести на дисплей.
    • X — координата дисплея в которой будет находиться левый край выводимого текста (не обязательный параметр).
      • Значение в пикселях от 0 до 127 (точное указание координаты по оси X).
      • OLED_L — выровнять текст по левому краю экрана.
      • OLED_C — выровнять текст по центру экрана.
      • OLED_R — выровнять текст по правому краю экрана.
      • OLED_N — оставить координату без изменений (см. примечание).
    • Y — координата дисплея в которой будет находиться нижний край выводимого текста (не обязательный параметр).
      • Значение в пикселях от 0 до 63 или строках от 0 до 7 (см. примечание).
      • OLED_T — выровнять текст по верхнему краю экрана.
      • OLED_C — выровнять текст по центру экрана.
      • OLED_B — выровнять текст по нижнему краю экрана.
      • OLED_N — оставить координату без изменений (см. примечание).
  • Возвращаемые значения: нет.
  • Примечание:
    • Координата по оси Y для графической библиотеки iarduino_OLED указывается в пикселях (от 0 до 63), а для текстовой библиотеки iarduino_OLED_txt в строках (от 0 до 7).
    • Если координаты X и(или) Y не указывать, или указать OLED_N, то координатой будет служить текущая позиция курсора.
    • После вывода текста, позиция курсора будет находиться на той же строке в точке следующей за последним символом текста.
    • Перед использованием функции print() необходимо выбрать шрифт функцией setFont()
    • Функция print() может использоваться для вывода чисел (см. ниже).
  • Пример:

Функция print();

  • Назначение: Вывод чисел на экран дисплея.
  • Синтаксис: print( ЧИСЛО [ , X ] [ , Y ] [ , ПАРАМЕТР ] );
  • Параметры:
    • ЧИСЛО — положительное, отрицательное, целоё, число или число с плавающей точкой, которое требуется вывести на дисплей.
    • X — координата дисплея в которой будет находиться левый край выводимого числа (не обязательный параметр).
      • Значение в пикселях от 0 до 127 (точное указание координаты по оси X).
      • OLED_L — выровнять число по левому краю экрана.
      • OLED_C — выровнять число по центру экрана.
      • OLED_R — выровнять число по правому краю экрана.
      • OLED_N — оставить координату без изменений (см. примечание).
    • Y — координата дисплея в которой будет находиться нижний край выводимого числа (не обязательный параметр).
      • Значение в пикселях от 0 до 63 или строках от 0 до 7 (см. примечание).
      • OLED_T — выровнять текст по верхнему краю экрана.
      • OLED_C — выровнять текст по центру экрана.
      • OLED_B — выровнять текст по нижнему краю экрана.
      • OLED_N — оставить координату без изменений (см. примечание).
    • ПАРАМЕТР — значение зависит от типа числа.
      • Если выводится число с плавающей точкой, то параметр определяет количество выводимых знаков после запятой (по умолчанию 2).
      • Если выводится целое число, то параметр определяет основание системы счисления выводимого числа (по умолчанию 10).
  • Возвращаемые значения: нет.
  • Примечание:
    • Координата по оси Y для графической библиотеки iarduino_OLED указывается в пикселях (от 0 до 63), а для текстовой библиотеки iarduino_OLED_txt в строках (от 0 до 7).
    • Если координаты X и(или) Y не указывать, или указать OLED_N, то координатой будет служить текущая позиция курсора.
    • После вывода числа, позиция курсора будет находиться на той же строке в точке следующей за последнеё цифрой числа.
    • Перед использованием функции print() необходимо выбрать шрифт функцией setFont().
    • Функция print() может использоваться для вывода текста (см. выше).
  • Пример:

Функция drawImage();

  • Назначение: Вывод изображений на экран дисплея.
  • Синтаксис: drawImage( КАРТИНКА [ , X ] [ , Y ] [ , ТИП_ПАМЯТИ ] );
  • Параметры:
    • КАРТИНКА — название массива содержащего выводимое изображение.
    • X — координата дисплея в которой будет находиться левый край выводимого изображения (не обязательный параметр).
      • Значение в пикселях от 0 до 127 (точное указание координаты по оси X).
      • OLED_L — выровнять изображение по левому краю экрана.
      • OLED_C — выровнять изображение по центру экрана.
      • OLED_R — выровнять изображение по правому краю экрана.
      • OLED_N — оставить координату без изменений (см. примечание).
    • Y — координата дисплея в которой будет находиться нижний край выводимого изображения (не обязательный параметр).
      • Значение в пикселях (от 0 до 63) (точное указание координаты по оси Y).
      • OLED_T — выровнять изображение по верхнему краю экрана.
      • OLED_C — выровнять изображение по центру экрана.
      • OLED_B — выровнять изображение по нижнему краю экрана.
      • OLED_N — оставить координату без изменений (см. примечание).
    • ТИП_ПАМЯТИ — не обязательный параметр определяющий тип памяти в которой находится массив с изображением.
      • IMG_RAM — массив с изображением находится в области ОЗУ (оперативная память).
      • IMG_ROM — массив с изображением находится в области ПЗУ (память программ).
  • Возвращаемые значения: нет.
  • Примечание:
    • Если координаты X и Y не указывать, или указать OLED_N, то координатой будет служить текущая позиция курсора.
    • Если тип памяти не указывать, то функция будет выводить массив изображения из памяти программ (IMG_ROM).
    • После вывода изображения, позиция курсора будет находиться в точке справа от нижнего правого пикселя изображения.
    • Перед выводом предустановленных изображений, нужно подключить требуемый массив (см. пример).
    • Функция drawImage() доступна только в графической библиотеке iarduino_OLED.
  • Список предустановленных изображений и их названий:
— Img_Battery_charging — Img_Arrow_down — Img_Level_1 — Img_Alarm
— Img_Battery_low — Img_Arrow_left — Img_Level_2 — Img_Antenna
— Img_Battery_0 — Img_Arrow_right — Img_Level_3 — Img_Bluetooth
— Img_Battery_1 — Img_Arrow_up — Img_Level_4 — Img_Message
— Img_Battery_2 — Img_Dynamic — Img_Netlevel_1 — Img_Light
— Img_Battery_3 — Img_Dynamic_off — Img_Netlevel_2 — Img_Melody
— Img_Call — Img_Dynamic_on — Img_Netlevel_3 — Img_Check
— Img_Call_in — Img_Checkbox_off — Img_Radio_off — Img_Settings
— Img_Call_out — Img_Checkbox_on — Img_Radio_on
— Img_BigBattery_low — Img_Logo
  • Пример:

Функция getImageWidth();

  • Назначение: Получение ширины изображения.
  • Синтаксис: getImageWidth( КАРТИНКА [ , ТИП_ПАМЯТИ ] );
  • Параметры:
    • КАРТИНКА — название массива с изображением, ширину которого требуется узнать.
    • ТИП_ПАМЯТИ — не обязательный параметр определяющий тип памяти в которой находится массив с изображением.
      • IMG_RAM — массив с изображением находится в области ОЗУ (оперативная память).
      • IMG_ROM — массив с изображением находится в области ПЗУ (память программ).
  • Возвращаемое значение: (uint8_t) ширина изображения в пикселях.
  • Примечание:
    • Если тип памяти не указывать, то функция будет обращаться к массиву из памяти программ (IMG_ROM).
    • Функция getImageWidth() доступна только в графической библиотеке iarduino_OLED.
  • Пример:

Функция getImageHeight();

  • Назначение: Получение высоты изображения.
  • Синтаксис: getImageHeight( КАРТИНКА [ , ТИП_ПАМЯТИ ] );
  • Параметры:
    • КАРТИНКА — название массива с изображением, высоту которого требуется узнать.
    • ТИП_ПАМЯТИ — не обязательный параметр определяющий тип памяти в которой находится массив с изображением.
      • IMG_RAM — массив с изображением находится в области ОЗУ (оперативная память).
      • IMG_ROM — массив с изображением находится в области ПЗУ (память программ).
  • Возвращаемое значение: (uint8_t) высота изображения в пикселях.
  • Примечание:
    • Если тип памяти не указывать, то функция будет обращаться к массиву из памяти программ (IMG_ROM).
    • Функция getImageHeight() доступна только в графической библиотеке iarduino_OLED.
  • Пример:

Функция drawPixel();

  • Назначение: Вывод точки на экран дисплея.
  • Синтаксис: drawPixel( X , Y [ , ЦВЕТ] );
  • Параметры:
    • X — координата дисплея в пикселях по оси X (от 0 до 127) для вывода точки.
    • Y — координата дисплея в пикселях по оси Y (от 0 до 63) для вывода точки.
    • ЦВЕТ — не обязательный параметр (0 или 1), 1 — белый, 0 — чёрный.
  • Возвращаемые значения: нет.
  • Примечание:
    • Если цвет не указан, то точка будет белой.
    • После вывода точки позиция курсора будет находиться в указанной координате X,Y.
    • Функция drawPixel() доступна только в графической библиотеке iarduino_OLED.
  • Пример:

Функция getPixel();

  • Назначение: Получение цвета точки на экране дисплея.
  • Синтаксис: getPixel( X , Y );
  • Параметры:
    • X — координата дисплея в пикселях по оси X (от 0 до 127).
    • Y — координата дисплея в пикселях по оси Y (от 0 до 63).
  • Возвращаемые значения: (bool) цвет точки по указанным координатам (0-чёрный, 1-белый).
  • Примечание: Функция getPixel() доступна только в графической библиотеке iarduino_OLED.
  • Пример:

Функция drawLine();

  • Назначение: Вывод линии на экран дисплея.
  • Синтаксис: drawLine( X1,Y1 , X2,Y2 [ , ЦВЕТ] );
  • Параметры:
    • X1, Y1 — координата первой точки для вывода линии.
    • X2, Y2 — координата второй точки для вывода линии.
    • ЦВЕТ — не обязательный параметр (0 или 1), 1 — белый, 0 — чёрный.
  • Возвращаемые значения: нет.
  • Примечание:
    • Если цвет не указан, то линия будет белой.
    • Допускается не указывать координаты первой точки X1,Y1, тогда координатой будет служить текущая позиция курсора.
    • После вывода линии позиция курсора будет находиться в координате X2,Y2.
    • Функция drawLine() доступна только в графической библиотеке iarduino_OLED
  • Пример:

Функция drawRect();

  • Назначение: Вывод прямоугольника на экран дисплея.
  • Синтаксис: drawRect( X1,Y1 , X2,Y2 [ , ЗАЛИТЬ] [ , ЦВЕТ ] );
  • Параметры:
    • X1, Y1 — координата первой точки для вывода прямоугольника.
    • X2, Y2 — координата второй точки для вывода прямоугольника.
    • ЗАЛИТЬ — не обязательный параметр (true или false) указывающий что прямоугольник нужно залить указанным цветом.
    • ЦВЕТ — не обязательный параметр (0 или 1), 1 — белый, 0 — чёрный.
  • Возвращаемые значения: нет.
  • Примечание:
    • Если цвет не указан, то прямоугольник будет белый.
    • Если не указывать флаг заливки, то прямоугольник останется не залитым.
    • После вывода прямоугольника позиция курсора будет находиться в координате X2,Y2.
    • Функция drawRect() доступна только в графической библиотеке iarduino_OLED
  • Пример:

Функция drawCircle();

  • Назначение: Вывод круга на экран дисплея.
  • Синтаксис: drawCircle( X , Y , РАДИУС [ , ЗАЛИТЬ] [ , ЦВЕТ ] );
  • Параметры:
    • X, Y — координата центра круга в пикселях.
    • РАДИУС — длинна радиуса круга в пикселях.
    • ЗАЛИТЬ — не обязательный параметр (true или false) указывающий что круг нужно залить указанным цветом.
    • ЦВЕТ — не обязательный параметр (0 или 1), 1 — белый, 0 — чёрный.
  • Возвращаемые значения: нет.
  • Примечание:
    • Если цвет не указан, то круг будет белый.
    • Если не указывать флаг заливки, то круг останется не залитым.
    • После вывода круга позиция курсора будет находиться в указанной координате X,Y.
    • Функция drawCircle() доступна только в графической библиотеке iarduino_OLED
  • Пример:

Функция autoUpdate();

  • Назначение: Управление обновлением данных на дисплее.
  • Синтаксис: autoUpdate( ФЛАГ );
  • Параметры:
    • ФЛАГ — (true или false) разрешает обновление данных на экране дисплея после каждого обращения к функциям вывода.
  • Возвращаемые значения: нет.
  • Примечание:
    • Если флаг установлен, то данные на дисплее будут обновляться после каждого вызова функций вывода данных (по умолчанию).
    • Если флаг сброшен, то обращение к функциям вывода данных не приведёт к изменению на экране дисплея. Все изменения будут храниться в буфере (в ОЗУ Arduino). Данные из буфера будут отправляться на дисплей вызовом функции update().
    • Функция autoUpdate() доступна только в графической библиотеке iarduino_OLED
  • Пример:

Функция update();

  • Назначение: Передача данных из буфера на дисплей.
  • Синтаксис: update();
  • Параметры: нет.
  • Возвращаемые значения: нет.
  • Примечание:
    • Функция актуальна только после обращения к функции autoUpdate с параметром false (см. выше).
    • Функция update() доступна только в графической библиотеке iarduino_OLED
  • Пример:

Переменная numX

  • Значение: Содержит координату курсора по оси X в пикселях (от 0 до 127).
  • Назначение: Можно читать и указывать положительное целое число не прибегая к функциям библиотек.

Переменная numY

  • Значение: Содержит координату курсора по оси Y. для графической библиотеки iarduino_OLED — в пикселях (от 0 до 63), а для текстовой библиотеки iarduino_OLED_txt — в строках (от 0 до 7).
  • Назначение: Можно читать и указывать положительное целое число не прибегая к функциям библиотек.

Отличия библиотек:

Библиотеки iarduino_OLED и iarduino_OLED_txt схожи по назначению и синтаксису, но имеют следующие отличия:

  • Библиотека iarduino_OLED_txt использует минимум памяти ОЗУ и предназначена только для вывода текста и чисел, а значит не поддерживает функции: drawImage, drawPixel, getPixel, drawLine, drawRect, drawCircle, bgText, bgImage, autoUpdate, update.
  • Библиотека iarduino_OLED поддерживает все описанные выше функции, но занимает не менее 1 КБ памяти ОЗУ.
  • Координаты по оси X (горизонтально) для обеих библиотек указываются в пикселях (от 0 до 127), а координаты оси Y (вертикально) указываются:
    • для текстовой библиотеки iarduino_OLED_txt в строках (от 0 до 7);
    • для графической библиотеки iarduino_OLED в пикселях (от 0 до 63).

Источник

Adblock
detector