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

OLED-дисплеи, которые мы часто используем в DIY проектах, как правило монохромные. Это значит, что они имеют только один цвет точки. Цвет точек может быть голубым, белым или даже желтым. В одном из уроков на RobotClass говорится как раз об одном из таких дисплеев ( Ардуино: графический OLED дисплей ).

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

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

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

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

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

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

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

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

OLED дисплей 96×64 GND VCC SCL SDA RST DC CS
Ардуино Уно GND +5V 13 11 9 8 10

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

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

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

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

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

#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
Ардуино Уно 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);

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

Цветной OLED и Ардуино


Изменено: