Цветной OLED-дисплей

OLED-дисплеи, которые мы часто используем в DIY-проектах, как правило монохромные. Это значит, что они имеют только один цвет точки. Цвет точек может быть голубым, белым или даже жёлтым.

На самом деле, бывают и цветные OLED-дисплеи. Собственно, в телефонах цветные OLED применяются уже давно. А в последнее время появились даже прототипы телевизоров на основе OLED-матрицы.

В этой статье я расскажу о цветном OLED-дисплее, который подходит именно для DIY-проектов на основе Arduino или Raspberry Pi. Внешне такой дисплей мало отличается от своего монохромного собрата.

Цветной OLED-дисплей

Этот дисплей имеет разрешение 96×64. Поддерживает интерфейсы SPI и I2C. Чтобы отличить его от монохромной версии, достаточно посмотреть на обратную сторону.

Обратная сторона цветного OLED-дисплея

Примечание

Здесь имеется индуктивность на 100 мкГн.

1. Подключение цветного OLED к Arduino

Будем подключать дисплей по SPI-шине. Точно так же, как мы это делали для монохромного OLED. Схема подключения:

OLED-дисплей 96×64

GND

VCC

SCL

SDA

RST

DC

CS

Arduino Uno

GND

+5V

13

11

9

8

10

Совет

Следует отметить, что мы можем подключить дисплей к любым другим цифровым выводам Arduino, но для быстрой работы рекомендуется всё же использовать аппаратный SPI.

2. Программа для цветного OLED-дисплея

Дисплей работает под управлением контроллера SSD1331, поэтому нам необходимо установить соответствующую библиотеку. Рекомендую это сделать с помощью менеджера библиотек в Arduino IDE. Для этого зайдём в раздел меню «Скетч/Подключить библиотеку/Управлять библиотеками» и в строке поиска введём «SSD1331». Выбираем библиотеку от Adafruit и жмём «Установить».

Также нам понадобится библиотека для работы с графикой, установим её точно таким же способом. Будем искать по фразе «Adafruit GFX Library».

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

#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF

#define sclk 13
#define mosi 11
#define cs 10
#define rst 9
#define dc 8

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1331.h>
#include <SPI.h>

Adafruit_SSD1331 display = Adafruit_SSD1331(cs, dc, mosi, sclk, rst);

void setup(void) {
    display.begin(); // инициализация дисплея
    display.fillScreen(BLACK); // заливка черным цветом
    lcdTestPattern();
}

void loop() {
}

void lcdTestPattern(void){
    uint32_t i,j;
    display.goTo(0, 0);
    for(i=0;i<64;i++){
        for(j=0;j<96;j++){
            if(i>55){display.writeData(WHITE>>8);display.writeData(WHITE);}
            else if(i>47){display.writeData(BLUE>>8);display.writeData(BLUE);}
            else if(i>39){display.writeData(GREEN>>8);display.writeData(GREEN);}
            else if(i>31){display.writeData(CYAN>>8);display.writeData(CYAN);}
            else if(i>23){display.writeData(RED>>8);display.writeData(RED);}
            else if(i>15){display.writeData(MAGENTA>>8);display.writeData(MAGENTA);}
            else if(i>7){display.writeData(YELLOW>>8);display.writeData(YELLOW);}
            else {display.writeData(BLACK>>8);display.writeData(BLACK);}
        }
    }
}

3. Программа для вывода BMP-файла на OLED-дисплей

Следующий шаг — вывод цветного BMP-файла. Разумеется, цветной файл занимает больше места, чем монохромный, поэтому для его хранения воспользуемся SD-картой. Подключим к нашей схеме модуль чтения micro-SD-карт.

Модуль micro-SD-карты

GND

VCC

SCK

MISO

MOSI

CS

Arduino Uno

GND

+5V

13

12

11

4

Создаём в обычном редакторе Paint цветную картинку размером 96×64 и сохраняем её на SD-карту в формате BMP.

Важно

Нужен именно 24-разрядный BMP!

Подготовка файла для цветного OLED

Лучше выбрать какое-то простое название, например test.bmp.

Пример программы для вывода BMP-картинки с SD-карты на OLED-дисплей можно открыть через меню Arduino IDE: «Файл/Примеры/Adafruit SSD1331 OLED Driver Library for Arduino».

В коде необходимо изменить имя файла, который мы будем открывать. В примере указан файл violet.bmp, замените его на нужный:

bmpDraw("violet.bmp", 0, 0);

Загружаем программу на Arduino и смотрим результат.

Совет

Если картинка не появилась, рекомендую открыть «Монитор порта». Вероятно, не читается флешка или файл не подходящего формата.

Цветной OLED и Arduino — результат