OLED дисплеи на сегодняшний день являются самыми совершенными типами дисплеев, и причин тому много: широкие углы обзора, низкое энергопотребление, малая толщина дисплеев и отсутствие необходимости во внешней подсветке.
Ассортимент на сегодня не очень широк, чаще всего используется радиолюбителями 0,96" OLED 126*64 точек. Размер модуля 27*27 миллиметров, размер самого дисплея 26,7*19,3 миллиметра, при этом активное рабочее поле дисплея составляет всего 10,9*21,75 миллиметра, пиксели расположены с шагом 0,17 миллиметра, размер пикселя же всего 0,154*0,154 миллиметра.Все доступные цвет представлены на картинке - белый, синий, желтый и жовто-блакитный.
Чип SSD1306 поддерживает много протоколов связи, но нам интересны те, что имеют 4 вывода и используют протокол I2C
I2C протокол передачи данных
Принцип работы I2C основан на двухпроводной схеме, которая включает в себя:
- SDA (Serial Data Line) — линия данных, по которой передаются данные.
- SCL (Serial Clock Line) — линия тактовых импульсов, которая синхронизирует передачу данных.
В схеме может быть только один мастер(ведущий), а все остальные подчиненные(ведомые). Мастер инициирует передачу данных, генерируя тактовые импульсы и управляющие сигналы, в то время как подчиненные отвечают на запросы мастера.
В интерфейсе I2C линии SDA и SCL подключены к питанию через подтягивающие резисторы, обычно находящиеся на мастерском устройстве (например, на микроконтроллере). Эти резисторы обеспечивают состояние высокого уровня на линиях данных и тактовых импульсов в отсутствие активного сигнала от мастера или ведомого устройства.
Особенности построения I2C:
- Адресация: Каждое устройство на шине I2C имеет уникальный адрес, который используется для идентификации устройств. Адрес может быть 7-битным или 10-битным.
- Скорость передачи: Стандартный режим передачи данных — до 100 кбит/с, быстрый режим — до 400 кбит/с, высокоскоростной режим — до 3,4 Мбит/с.
- Четкая синхронизация: данные принимаются всегда правильно, потому что есть синхронизация по тактовому сигналу SCL.
Библиотека Ардуино OLED_I2C
Довольно простая библиотека для среды Ардуино, была создана для упрощения использования OLED-дисплеев с разрешением 128x32 и 128x64 пикселей на базе контроллера SSD1306 с Arduino, chipKit, ESP8266 или ESP32. С новым дисплеем на SSD1315 проверил тоже работает.
Библиотека умеет выводить шрифты, графические примитивы - точки, линии, прямоугольники, овалы и т.д. Единственно нет возможности повернуть дисплей набок для вывода текста.
Устанавливается через менеджер библиотек Ардуино. Есть версии с русским и украинским шрифтами.
#include <OLED_I2C.h>OLED myOLED(SDA, SCL);extern uint8_t RusFont[]; // подключаем "Русский шрифт"void setup(){myOLED.begin(); //инициализируем дисплей}void loop(){myOLED.clrScr(); // Стираем все с экранаmyOLED.setFont(RusFont); // устанавливаем Русский шрифтmyOLED.invert(true); // Фон экрана белыйmyOLED.print("Lj,hj gj;fkjdfnm!", CENTER, 0); // Выводим надпись "Добро пожаловать!" по центруmyOLED.print("D yfi", CENTER, 18); // Выводим надпись "В наш" по центру с отступом от верха 18 пикселейmyOLED.print("Bynthytn-vfufpby", CENTER, 28); // Выводим надпись "Интернет-магазин" по центру с отступом от верха 28 пикселейmyOLED.print("JJJ RbR", CENTER, 56 ); // Выводим надпись "ООО КиК" по центру с отступом от верха 56 пикселейmyOLED.update(); // Обновляем информацию на дисплееmyOLED.clrScr(); // Стираем все с экранаdelay(3000); // Пауза 3 секундыmyOLED.invert(false); // Фон экрана черныйmyOLED.setFont(RusFont); // устанавливаем Русский шрифтmyOLED.print("Lj,hj gj;fkjdfnm!", CENTER, 0); // Выводим надпись "Добро пожаловать!" по центруmyOLED.print("Yf yfi gjhnfk", CENTER, 18); // Выводим надпись "На наш портал" по центру с отступом от верха 18 пикселейmyOLED.print("Bynthytn-vfufpby", CENTER, 28); // Выводим надпись "Интернет-магазин" по центру с отступом от верха 28 пикселейmyOLED.print("JJJ RbR", CENTER, 56 ); // Выводим надпись "ООО КиК" по центру с отступом от верха 56 пикселейmyOLED.update(); // Обновляем информацию на дисплееdelay(3000); // Пауза 3 секунды}
Русский шрифт в скетче показан абракадаброй, набирать русский текст нужно русскими буквами, переключившись на английскую раскладку!
Версия библиотеки с русским шрифтом устарела, по этому лучше просто взять недостающие шрифты из файла DefaultFonts.c и дописать их в файл с таким же именем из загруженной библиотеки. Правда нужно иметь в виду, что в случае выхода новой версии, наша измененная затрется! Хотя апдейтов не было аж с 2019 года.
В случае Arduino UNO такой дисплей можно воткнуть напрямую в плату не использую проводов! Для этого используются выводы GND, D2, D3 и D4. В скетче в функцию инициализации добавляем установку на втором выводе высокого уровня (вместо подключения к выводам 5В)
pinMode(2, OUTPUT); // Цифровой выход 2 - исходящий
digitalWrite(2, HIGH); // Присваиваем используя оператор digitalWrite порту 2 значение HIGH, это значит на пин 2 ардуино подаст 5В
И объявление
OLED myOLED(SDA, SCL);
меняем на
myOLED(4, 3, 4); // SDA - 4pin, SCL - 3pin
Кстати в таком режиме мы можем контролировать работу всего дисплея и например включать его по команде на непродолжительное время, тем самым компенсируя главный недостаток OLED экранов - быстрое выгорание при работе.
Отправить комментарий
Отправить комментарий