OLED-экранчики на базе SSD1306 / SSD1309 / SH1106 пользуются большой популярностью как в DIY сообществе, так и индустрии, благодаря своей яркости, широкому углу обзора и небольшой цене. Но при этом они способны выводить только бинарное изображение . В качестве альтернативы, лишенной этого досадного недостатка, можно предложить экранчики на базе контроллера SSD1351. По большому счету, они полостью аналогичны экранчикам на базе SSD1306, но выводят изображение в 16-и битном цвете.

Дисплеи на базе SSD1351 часто продаются в виде модулей с SPI-подобным интерфейсом, диагональю 1.5″ и разрешением 128 x 128 пикселей. Распиновка модулей совместима с распиновкой аналогичных модулей на базе SSD1306. Цена устройства составляет около 12$, что сопоставимо с ценой дисплеев на базе SSD1306 с такой же диагональю. Еще я видел варианты дисплеев 1.27″ 128 x 96 и 0.95″ 96 x 64. Однако почему-то цена таких урезанных модулей выше, чем цена полноразмерного модуля. Поэтому я не думаю, что когда-нибудь стану использовать их в своих проектах. Купить экранчики можно на eBay. Также они доступны в магазине Adafruit, но там они стоят заметно дороже.

Если вы используете Arduino, советую обратить внимание на библиотеку Adafruit SSD1351 . Данная библиотека просто работает, поэтому не будем на ней подробно останавливаться. Я же в последнее время предпочитаю микроконтроллеры STM32. Беглое гугление не выявило готовой библиотеки под это семейство МК, поэтому пришлось написать свою.

Оказалось, что SSD1351 использует протокол, крайне похожий на протокол SSD1306, ST7735 и ILI9341 , только коды команд немного другие, и отличается последовательность команд, необходимая для инициализации устройства. Поскольку ранее я уже писал библиотеки для всех этих экранчиков, а также имел перед глазами код Adafruit SSD1351, написать и отладить еще одну библиотеку заняло от силы два часа. Она имеет интерфейс, аналогичный интерфейсу предыдущих библиотек, и тоже основана на HAL:

void SSD1351_Init ( void ) ;
void SSD1351_DrawPixel ( uint16_t x , uint16_t y , uint16_t color ) ;
void SSD1351_WriteString ( uint16_t x , uint16_t y , const char * str ,
FontDef font , uint16_t color , uint16_t bgcolor ) ;
void SSD1351_FillRectangle ( uint16_t x , uint16_t y ,
uint16_t w , uint16_t h , uint16_t color ) ;
void SSD1351_FillScreen ( uint16_t color ) ;
void SSD1351_DrawImage ( uint16_t x , uint16_t y ,
uint16_t w , uint16_t h , const uint16_t * data ) ;
void SSD1351_InvertColors ( bool invert ) ;

Пример вывода текста:

Исходники библиотеки с примером ее использования вы найдете на GitHub .

Лично я нахожу OLED-экранчики на базе SSD1351 крайне приятными в использовании. И хотя TFT-экранчики на базе ST7735 предложат то же разрешение и количество цветов за существенно меньшие деньги (~4$), они конструктивно менее надежны, уязвимы к нажатиям и их крайне нежелательно отмывать в ультразвуковой ванне. Если вы не планируете серийное производство и хотите, чтобы ваше устройство надежно служило в течение многих лет, при прочих равных я бы отдал предпочтение SSD1351.

admin

Share
Published by
admin

Recent Posts

Лучшие дистрибутивы Linux

Если говорить о том, какие лучшие дистрибутивы Linux мы знаем, то этот список может быть…

1 неделя ago

Лучшие браузеры для Ubuntu

Хотя Ubuntu и поставляется со встроенным обозревателем Firefox многие пользователи считают что это не самая…

1 неделя ago

Установка Remmina Ubuntu 16.04 или 16.10

Что такое Remmina? Remmina — это совершенно бесплатный и свободный клиент так называемого удаленного рабочего…

1 неделя ago

Плюсы Ubuntu

Как мы знаем, Ubuntu это самая популярная сборка из систем на базе ядра Linux. У…

1 неделя ago

Выбираем ноутбук для Linux

Выбор ноутбука для каждого пользователя это довольно кропотливый процесс. Люди стараются подобрать ноутбук который будет…

1 неделя ago

Установка Linux рядом с Windows 10

Если вы решили ознакомиться с операционной системой Linux более детально и задались вопросом как установить…

1 неделя ago