Цветной OLED-дисплей
OLED-дисплеи, которые мы часто используем в DIY-проектах, как правило монохромные. Это значит, что они имеют только один цвет точки. Цвет точек может быть голубым, белым или даже жёлтым.
На самом деле, бывают и цветные OLED-дисплеи. Собственно, в телефонах цветные OLED применяются уже давно. А в последнее время появились даже прототипы телевизоров на основе OLED-матрицы.
В этой статье я расскажу о цветном OLED-дисплее, который подходит именно для DIY-проектов на основе Arduino или Raspberry Pi. Внешне такой дисплей мало отличается от своего монохромного собрата.
Этот дисплей имеет разрешение 96×64. Поддерживает интерфейсы SPI и I2C. Чтобы отличить его от монохромной версии, достаточно посмотреть на обратную сторону.
Примечание
Здесь имеется индуктивность на 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!
Лучше выбрать какое-то простое название, например test.bmp.
Пример программы для вывода BMP-картинки с SD-карты на OLED-дисплей можно открыть через меню Arduino IDE: «Файл/Примеры/Adafruit SSD1331 OLED Driver Library for Arduino».
В коде необходимо изменить имя файла, который мы будем открывать. В примере указан файл violet.bmp, замените его на нужный:
bmpDraw("violet.bmp", 0, 0);
Загружаем программу на Arduino и смотрим результат.
Совет
Если картинка не появилась, рекомендую открыть «Монитор порта». Вероятно, не читается флешка или файл не подходящего формата.