Технология дисплеев постоянно совершенствуется, начиная со времен ЖК-дисплея 16x2 и до устройств сегодняшнего дня, таких как дисплеи E-paper и OLED, мы стараемся сделать их еще лучше, с большим количеством цветов и меньшим энергопотреблением, помимо других дополнительных функций. Это делает их идеальным компонентом для пользовательского интерфейса в электронных проектах.
Монохромные OLED-дисплеи являются продуктом такого прогресса, но, несмотря на то, что они имеют низкое энергопотребление, достаточно яркие и простые в использовании, они все-таки монохромные, что означает, что эти экраны имеют один или несколько цветов. Поэтому цветной OLED-дисплей выглядит среди них блестящей жемчужиной, которая будет сиять в проектах с Arduino.
В сегодняшнем уроке мы будем использовать цветной OLED-дисплей 0,95 дюйма, SSD1331. Этот дисплей, как и все другие OLED-дисплеи, имеет низкое энергопотребление (потребляет всего 25 мА, когда все пиксели включены) и предлагает уровни яркости, превышающие доступные для ЖК-дисплеев. Он имеет разрешение 96 × 64 пикселей и может отображать более 65000 различных цветов. Он связывается через SPI, что означает, что, кроме VCC и GND, он будет использовать 5 выводов Arduino GPIO.
Чтобы продемонстрировать, как использовать этот дисплей в ваших проектах, мы создадим простой скетч, на котором будет отображаться кнопка подписки YouTube. Код будет объяснен, поэтому вам будет легко его модифицировать и адаптировать к потребностям ваших проектов.
Схема подключения для этого примера довольно проста, поскольку включает в себя только дисплей OLED и Arduino. Подключите OLED-дисплей к Arduino, как показано на следующей схеме.
Код этого проекта сильно зависит от библиотеки драйвера Adafruit SSD1331 OLED для Arduino. Библиотека была создана специально для использования с дисплеями, основанными на драйвере дисплея SSD1331. Мы создадим демонстрационный скетч для этого урока и подробно расскажем о функциях, чтобы вы могли узнать, как адаптировать все это для использования в ваших собственных проектах. В дополнение к библиотеке SSD1221 OLED мы также будем использовать библиотеку Adafruit GFX вместе с библиотекой Arduino SPI.
Как обычно, мы начнем с включения библиотек, которые будут использоваться в нашем скетче. После этого мы объявляем выводы Arduino, к которым подключены выводы OLED, а также объявляем переменные для хранения некоторых цветов, которые мы будем использовать.
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1331.h>
#include <SPI.h>
#define sclk 13
#define mosi 11
#define cs 10
#define rst 9
#define dc 8
// Задание цветов
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
Далее мы создаем объект библиотеки Adafruit SSD1331 с выводами DC, CS и RST в качестве аргументов.
Adafruit_SSD1331 display = Adafruit_SSD1331(cs, dc, rst);
Следующая функция void setup(). Мы используем функцию display.begin(), чтобы начать связь с дисплеем. После этого мы используем функцию display.fillScreen() для создания и переключения между несколькими фонами для отображения. Для отображения текста мы используем функцию display.print() с display.setTextColor() и display.setTextSize(), чтобы соответственно установить его цвет и размер шрифта. Все эти функции были использованы для создания кнопки подписки на Youtube.
void setup() {
display.begin();
display.fillScreen(RED);
delay(300);
display.fillScreen(GREEN);
delay(300);
display.fillScreen(BLUE);
delay(300);
display.fillScreen(BLACK);
delay(1000);
display.setCursor(20,5);
display.setTextColor(WHITE);
display.setTextSize(2);
display.print("Hello");
display.setCursor(8,25);
display.setTextColor(RED);
display.setTextSize(2);
display.print("YouTUBE");
display.fillRect(10,40, 75, 20, RED);
display.setCursor(20,47);
display.setTextColor(WHITE);
display.setTextSize(1);
display.print("Subscribe");
display.drawRect(0,0,96,64,WHITE);
delay(1000);
}
Далее идет функция void loop() для организации бесконечного цикла. Код под функцией цикла похож на код функции setup(). Мы создали два блока, один с черным фоном, а другой с красным фоном, используя функцию display.fillRect(). Затем мы написали текст «subscribe» на него, используя функцию display.setCursor() для позиционирования текста.
void loop()
{
display.fillRect(10,40, 75, 20, BLACK);
delay(1000);
display.fillRect(10,40, 75, 20, RED);
display.setCursor(20,47);
display.setTextColor(WHITE);
display.setTextSize(1);
display.print("Subscribe");
delay(1000);
}
Как мы видим код программы довольно прост. Весь код для Arduino показан далее.
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1331.h>
#include <SPI.h>
#define sclk 13
#define mosi 11
#define cs 10
#define rst 9
#define dc 8
// Задание цветов
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
Adafruit_SSD1331 display = Adafruit_SSD1331(cs, dc, rst);
void setup() {
display.begin();
display.fillScreen(RED);
delay(300);
display.fillScreen(GREEN);
delay(300);
display.fillScreen(BLUE);
delay(300);
display.fillScreen(BLACK);
delay(1000);
display.setCursor(20,5);
display.setTextColor(WHITE);
display.setTextSize(2);
display.print("Hello");
display.setCursor(8,25);
display.setTextColor(RED);
display.setTextSize(2);
display.print("YouTUBE");
display.fillRect(10,40, 75, 20, RED);
display.setCursor(20,47);
display.setTextColor(WHITE);
display.setTextSize(1);
display.print("Subscribe");
display.drawRect(0,0,96,64,WHITE);
delay(1000);
}
void loop()
{
display.fillRect(10,40, 75, 20, BLACK);
delay(1000);
display.fillRect(10,40, 75, 20, RED);
display.setCursor(20,47);
display.setTextColor(WHITE);
display.setTextSize(1);
display.print("Subscribe");
delay(1000);
}
В библиотеке SSD1331 Arduino есть несколько других функций, которые могут оказаться полезными для ваших проектов. Вы можете проверить все функции и их использование, прочитав про них в документации библиотеки.
Скопируйте код и загрузите его на Arduino Uno. Убедитесь, что все подключено, как описано в разделе схемы. Если вы выполните правильные шаги, вы увидите, что ваш экран покажет картинку, как показано ниже.
© digitrode.ru