TigerSchool.

Эксклюзивные шаблоны DLE скачать бесплатно для dle.
Красивейшие шаблоны joomla скачать бесплатно для Joomla.
Гениальные темы wordpress и шаблоны вордпресс.
Современная инвестиционная деятельность поможет в вашей деятельности.
Универсальный музыкальный портал с огромным выбором.
Квалифицированная помощь по юридическим вопросам и консультации по праву.
Присоединяйтесь в нашему городскому музыкальному клубу где отмечают праздники и торжества.
Самый грамотный юридический форум и юридическая помощь.
Искуствоведческий фото форум для истинных ценителей прекрасного.
Посетите наш туристический форум и найдите где можно красиво отдохнуть.
Приходите на уникальный форум о творчестве и находите друзей и собеседников.

Ардуино: графический OLED дисплей

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

Мы уже познакомились с разными видами дисплеев, включая популярный  символьный 1602 и не менее популярный  графический ЖК дисплей от телефона Nokia 5110 . Они хороши для решения своих утилитарных задач. На первом можно легко вывести показания различных датчиков, и организовать меню настройки какого-нибудь прибора. На втором дисплее, от Nokia 5110 , можно рисовать графики, геометрические фигуры, даже вывести черно-белую картинку.

Сегодня речь пойдет еще об одном типе цифровых индикаторов, которые основаны на технологии OLED . В отличие от ЖК дисплеев, в OLED каждый пиксель изображения светится сам, что делает ненужным подсветку. По сути, OLED матрица состоит из множества органических светодиодов. Благодаря таким светящимся пикселям, эти дисплеи обладают запредельными показателями контрастности. А еще, OLED технология позволяет делать гибкие матрицы!

Еще лет 10 назад, когда технология только-только начала набирать обороты, у OLED было несколько проблем, самой серьезной из которых был короткий срок службы светодиодов. За последние несколько лет инженеры победили большинство «детских» болезней этой технологии, и теперь OLED дисплеи используются даже в ультрасовременных телевизорах с большой диагональю. Также OLED применяют в дисплеях для мобильных устройств, например в одной из модификаций Google Nexus.

Раз OLED дисплей такой хороший, попробуем его подключить к Ардуино, и увидеть все своими глазами!

1. Подключение OLED дисплея к Ардуино

Мы будем экспериментировать с популярными в DIY среде монохромными OLED дисплеями на основе контроллера SSD1306. Есть разные версии, с разным цветом свечения и разным разрешением. Наш дисплейчик имеет диагональ 0.96 дюйма и разрешение 128 x 64 точек. Матрица разделена на две части с разными цветами. Верхний блок — 128×16 имеет желтый цвет, нижний — 128×48 — голубой.

Дисплейные модули OLED могут иметь разные интерфейсы для связи с контроллером. В нашем распоряжении оказался модуль с SPI шиной, у которого было распаяно шесть ног:

GND — земля; VCC — питание 5 В; DO — синхросигнал; D1 — входные данные (MOSI); RST — сброс (Reset); DC — выбор режима (Data/Command select).

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

OLED дисплей 128×64 GND VCC DO D1 RST DC
Ардуино Уно GND +5V 10 9 13 11

2. Программа. Вывод текста

Для управления дисплеем нам потребуются две библиотеки:

1) Adafruit_GFX_Library — мы её уже ставили, когда подключали Nokia 5110

https://github.com/adafruit/Adafruit-GFX-Library/archive/master.zip

2) Adafruit_SSD1306 — библиотека для управления именно OLED дисплеями

https://github.com/adafruit/Adafruit_SSD1306

Устанавливаем обе библиотеки в Arduino IDE, и пробуем вывести наш любимый «Hello world!»:

#include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13 Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); void setup() { // инициализация и очистка дисплея display.begin(SSD1306_SWITCHCAPVCC); display.clearDisplay(); display.display(); delay(1000); display.setTextSize(1); // установка размера шрифта display.setTextColor(WHITE); // установка цвета текста display.setCursor(0,0); // установка курсора display.println("Hello, world!"); display.display(); } void loop() { }

Загружаем программу на Ардуино Уно, и получаем вот такую яркую надпись очень мелким шрифтом:

Подробное описание функций, которые мы использовали в коде, можно найти в предыдущем уроке про Nokia 5110 . Там же можно найти описание функций для вывода геометрических фигур.

3. Программа. Вывод изображения

Как и в случае дисплея Nokia 5110, для того чтобы вывести изображение нам необходимо его должным образом подготовить. На всякий случай, напомню алгоритм:

создаем в любом графическом редакторе черно-белую картинку с разрешением 128 x 64 точки; сохраняем в формате BMP с 256 цветами (так умеет делать mspaint); конвертируем картинку в массив байт с помощью онлайн сервиса: http://git.robotclass.ru/tools/bmptobin.html

Осталось вставить полученный массив данных в программу:

#include <SPI.h> #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13 Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS); const unsigned char PROGMEM logoBmp[] = { 0x0,0x0,0x0,0x0,0x3,0xf0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x7,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x7,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x7,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0xe,0x3f,0xff,0x38,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x1f,0xff,0xff,0xfc,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x3f,0xff,0xff,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x3f,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x7f,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x7f,0xff,0xff,0xff,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x3f,0xf8,0x7,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x3f,0xe0,0x3,0xfe,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x7f,0xf0,0x0,0x3f,0xc0,0x0,0xff,0x0,0xff,0xe0,0x0,0x1f,0xf8,0x7,0xff,0xfe, 0x7f,0xfe,0x0,0x7f,0x80,0x0,0xff,0x0,0xff,0xf8,0x0,0x7f,0xfe,0x7,0xff,0xfe, 0x7f,0xff,0x0,0x7f,0x0,0x0,0x7f,0x0,0xff,0xfc,0x1,0xff,0xff,0x7,0xff,0xfe, 0x7f,0xff,0x81,0xff,0x0,0x0,0x3f,0xe0,0xff,0xfe,0x3,0xff,0xff,0x87,0xff,0xfe, 0x7c,0x3f,0x83,0xff,0x0,0x0,0x3f,0xf0,0xf8,0x7f,0x7,0xf8,0x1f,0xc0,0x1f,0x80, 0x7c,0xf,0x83,0xfe,0x0,0x0,0x3f,0xf0,0xf8,0x3f,0x7,0xe0,0x7,0xe0,0x1f,0x80, 0x7c,0xf,0x83,0xfe,0x0,0x0,0x3f,0xf0,0xf8,0x3f,0xf,0xc0,0x7,0xe0,0x1f,0x80, 0x7c,0xf,0x83,0xfe,0x0,0x0,0x3f,0xf0,0xf8,0x3f,0xf,0x80,0x3,0xf0,0x1f,0x80, 0x7c,0x1f,0x83,0xfe,0x0,0x0,0x3f,0xf0,0xf8,0x3e,0x1f,0x80,0x3,0xf0,0x1f,0x80, 0x7c,0x3f,0x83,0xfe,0x0,0x0,0x3f,0xf0,0xf8,0xfe,0x1f,0x80,0x1,0xf0,0x1f,0x80, 0x7f,0xff,0x1,0xff,0x0,0x0,0x3f,0xe0,0xff,0xfc,0x1f,0x0,0x1,0xf0,0x1f,0x80, 0x7f,0xfe,0x0,0x7f,0x0,0x0,0x3f,0x80,0xff,0xfc,0x1f,0x0,0x1,0xf0,0x1f,0x80, 0x7f,0xfc,0x0,0x7f,0x80,0x0,0x7f,0x0,0xff,0xfe,0x1f,0x0,0x1,0xf0,0x1f,0x80, 0x7f,0xf0,0x0,0x3f,0x80,0x0,0xff,0x0,0xff,0xff,0x1f,0x0,0x1,0xf0,0x1f,0x80, 0x7d,0xf8,0x0,0x3f,0xc0,0x1,0xff,0x0,0xf8,0x3f,0x9f,0x80,0x1,0xf0,0x1f,0x80, 0x7c,0xfc,0x0,0x1f,0xf0,0x3,0xfe,0x0,0xf8,0xf,0x9f,0x80,0x1,0xf0,0x1f,0x80, 0x7c,0xfc,0x0,0x3f,0xfc,0xf,0xfe,0x0,0xf8,0xf,0x8f,0x80,0x3,0xf0,0x1f,0x80, 0x7c,0x7e,0x0,0x7f,0xff,0xff,0xff,0x0,0xf8,0xf,0x8f,0xc0,0x3,0xe0,0x1f,0x80, 0x7c,0x3f,0x0,0x7f,0xff,0xff,0xff,0x0,0xf8,0x1f,0x8f,0xe0,0x7,0xe0,0x1f,0x80, 0x7c,0x3f,0x0,0x3f,0xff,0xff,0xff,0x0,0xf8,0x1f,0x87,0xf0,0x1f,0xc0,0x1f,0x80, 0x7c,0x1f,0x80,0x1f,0xff,0xff,0xfe,0x0,0xff,0xff,0x3,0xff,0xff,0x80,0x1f,0x80, 0x7c,0xf,0xc0,0xf,0xff,0xff,0xfc,0x0,0xff,0xfe,0x1,0xff,0xff,0x80,0x1f,0x80, 0x7c,0x7,0xe0,0x6,0x3f,0xfe,0x38,0x0,0xff,0xfc,0x0,0xff,0xfe,0x0,0x1f,0x80, 0x7c,0x7,0xe0,0x0,0x7,0xf8,0x0,0x0,0xff,0xf0,0x0,0x3f,0xf8,0x0,0x1f,0x80, 0x0,0x0,0x0,0x0,0x7,0xf8,0x0,0x0,0x0,0x0,0x0,0x7,0xc0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x7,0xf8,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0, 0x0,0x0,0x0,0x0,0x3,0xf0,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,0x7c,0x0,0x0,0x0,0x0,0x0,0x0,0xf,0x0,0x1,0xe0,0x0,0x0,0x0,0x0, 0x3,0xff,0xc1,0xf0,0x0,0x3,0xe0,0x0,0x7f,0xf0,0xf,0xfe,0x0,0x0,0x0,0x0, 0x7,0xff,0xc1,0xf0,0x0,0x7,0xe0,0x0,0xff,0xf0,0x1f,0xfe,0x0,0x0,0x0,0x0, 0xf,0xff,0xc1,0xf0,0x0,0x7,0xf0,0x1,0xff,0xf0,0x3f,0xfe,0x0,0x0,0x0,0x0, 0x1f,0xff,0xc1,0xf0,0x0,0x7,0xf0,0x1,0xff,0xf0,0x3f,0xfe,0x0,0x0,0x0,0x0, 0x3f,0x80,0xc1,0xf0,0x0,0xf,0xf0,0x3,0xf0,0x30,0x7e,0xe,0x0,0x0,0x0,0x0, 0x7e,0x0,0x1,0xf0,0x0,0xf,0xf8,0x3,0xe0,0x0,0x7c,0x0,0x0,0x0,0x0,0x0, 0x7e,0x0,0x1,0xf0,0x0,0x1f,0xf8,0x3,0xe0,0x0,0x7c,0x0,0x0,0x0,0x0,0x0, 0x7c,0x0,0x1,0xf0,0x0,0x1f,0xfc,0x3,0xf0,0x0,0x7e,0x0,0x0,0x0,0x0,0x0, 0xfc,0x0,0x1,0xf0,0x0,0x1f,0x7c,0x3,0xfc,0x0,0x7f,0x80,0x0,0x0,0x0,0x0, 0xf8,0x0,0x1,0xf0,0x0,0x3e,0x7c,0x1,0xff,0x0,0x3f,0xe0,0x0,0x0,0x0,0x0, 0xf8,0x0,0x1,0xf0,0x0,0x3e,0x3e,0x0,0xff,0xc0,0x1f,0xf8,0x0,0x0,0x0,0x0, 0xf8,0x0,0x1,0xf0,0x0,0x3e,0x3e,0x0,0x7f,0xe0,0xf,0xfc,0x0,0x0,0x0,0x0, 0xf8,0x0,0x1,0xf0,0x0,0x7f,0xff,0x0,0x1f,0xf0,0x3,0xfe,0x0,0x0,0x0,0x0, 0xf8,0x0,0x1,0xf0,0x0,0x7f,0xff,0x0,0x7,0xf8,0x0,0xff,0x0,0x0,0x0,0x0, 0xfc,0x0,0x1,0xf0,0x0,0xff,0xff,0x0,0x1,0xf8,0x0,0x3f,0x0,0x0,0x0,0x0, 0xfc,0x0,0x1,0xf0,0x0,0xff,0xff,0x80,0x0,0xf8,0x0,0x1f,0x0,0x0,0x0,0x0, 0x7e,0x0,0x1,0xf0,0x0,0xff,0xff,0x82,0x0,0xf8,0x40,0x1f,0x0,0x0,0x0,0x0, 0x7f,0x0,0x41,0xf0,0x1,0xf8,0xf,0xc3,0x80,0xf8,0x70,0x1f,0x0,0x0,0x0,0x0, 0x3f,0x83,0xc1,0xf0,0x1,0xf0,0x7,0xc3,0xe1,0xf8,0x7c,0x3f,0x0,0x0,0x0,0x0, 0x1f,0xff,0xc1,0xff,0xe3,0xf0,0x7,0xc3,0xff,0xf0,0x7f,0xfe,0x0,0x0,0x0,0x0, 0xf,0xff,0xc1,0xff,0xe3,0xe0,0x7,0xe3,0xff,0xf0,0x7f,0xfe,0x0,0x0,0x0,0x0, 0x7,0xff,0xc1,0xff,0xe3,0xe0,0x3,0xe1,0xff,0xe0,0x3f,0xfc,0x0,0x0,0x0,0x0 }; void setup() { // инициализация и очистка дисплея display.begin(SSD1306_SWITCHCAPVCC); display.clearDisplay(); display.display(); delay(1000); // отрисовка изображения display.drawBitmap(0, 0, logoBmp, 128, 64, WHITE); display.display(); } void loop() { }

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

Итак, OLED дисплей побежден. Готовимся к новым урокам, к новым знаниям!

Задания

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

Собрать на базе акселерометра и OLED дисплея строительный электронный уровень. Ставим прибор на тестируемую поверхность, и он показывает в какую сторону и насколько градусов она наклонена. Факт наклона можно отобразить окружностью, смещенной относительно центра в виде перекрестья. Самые продвинутые могут сделать игру «змейка». Для игры потребуется дисплей, Ардуино Уно (или любя другая), 4 тактовые кнопки и зуммер.

Реклама

Календарь

Архивы

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

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

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

Антенна для автомагнитолы – как подключить своими руками? + Видео
1 Какую антенну выбрать для своего автомобиля? На сегодняшний день различают два вида автомобильных антенн: Внешние (штыревые или телескопические ТВ). В данном случае речь идет о пассивном устройстве,

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

Обработка днища автомобиля антикором своими руками
Несущий элемент каждого автомобиля – это, конечно же, кузов и его днище, которое выполняет функцию так называемой платформы, на которой располагаются основные элементы авто. Именно поэтому при приобретении

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

Автомобильные антенны, как сделать автомобильную антенну своими руками. Как самостоятельно сделать антенну для автомобиля. Делаем автомобильную антенну своими руками.
На сегодняшний день автомобильные антенны имеют различное назначение. В боевое время они ловят связь, а в мирное — навигационную информацию и каналы вещания. Ввиду простоты конструкции автомобильную

Доработка авто своими руками: стеклопластик для тюнинга
Когда говорят о тюнинге, первая ассоциация, которая приходит в голову – стеклопластик. Почему этот материал так распространён и особенно применим к современным авто? На эти и другие вопросы мы попытаемся

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

© 2013
Powered www.avtodrom-tv.ru © 2016
rss