Arduino IDE

Пусть, самая первая наша программа просто закрасит экран одним цветом. Начнём с подключения всех необходимых библиотек.

Используем библиотеку Adafruit_SSD1306, которую можно скачать и установить с github или с помощью менеджера библиотек в Arduino IDE.

Сначала подключаем библиотеку для работы с контроллером SSD1306:

#include <Adafruit_SSD1306.h>

Затем создаём объект класса Adafruit_SSD1306:

Adafruit_SSD1306 display;

Далее все операции с модулем будут доступны через программный объект с именем display.

Для инициализации дисплея используем метод begin. Первым аргументом указываем загадочную константу-флаг SSD1306_SWITCHCAPVCC, а вторым — адрес дисплея на шине I2C. Наш дисплей имеет адрес 0x3C.

OLED дисплеи для зажигания пикселей используют достаточно высокое напряжение: 7-9 Вольт. Константа SSD1306_SWITCHCAPVCC сообщает дисплею, что он должен использовать внутренний преобразователь напряжения, чтобы поднять напряжение с 3,3В до требуемого значения. Предполагается, что в некоторых дисплеях есть отдельный высоковольтный вход и этот флаг там не потребуется.

Непосредственно закрашивание экрана осуществляется методом fillScreen. Единственный аргумент метода — цвет закраски.

После любой операции по выводу изображения на экран, необходимо вызвать метод display. Только после этого изображения загрузится в память дисплея и отобразится на экране.

Вся программа целиком:

#include <Adafruit_SSD1306.h>

#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(128, 32, &Wire);

void setup() {
  // ожидание инициализации дисплея
  delay(500);

  display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS);

  display.fillScreen(SSD1306_WHITE); // закрашивание цветом
  display.display();
}

void loop() {
}

Результат работы программы: экран дисплея полностью закрашивается белым или голубым цветом.

Рисуем точки, отрезки и прямоугольники

Для вывода точки используем метод drawPixel:

drawPixel(x, y, color) # x и у - координаты точки, color - цвет

Отрезок рисуем с помощью drawLine:

drawLine(x1, y1, x2, y2, color) # x1 и y1 - начальная точка отрезка, x2 и y2 - конечная, color - цвет

Прямоугольник выводится методом drawRect:

drawRect(x, y, w, h, color) # x и y - верхний левый угол прямоугольника, w и h - его ширина и высота, color - цвет 

Для окружности используем drawCircle:

drawCircle(x, y, radius, color) # x и y - координаты центра, radius - радиус окружности, color - цвет
#include <Adafruit_SSD1306.h>

#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(128, 32, &Wire);

void setup() {
    // ожидание включения дисплея
    delay(500);

    // инициализация дисплея
    display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS);

    display.clearDisplay(); // очистка экрана
    display.drawPixel(10,10,SSD1306_WHITE); // пиксель
    display.drawLine(0,31,127,0,SSD1306_WHITE); // линия
    display.drawRect(5,5,117,21,SSD1306_WHITE); // прямоугольник
    display.drawCircle(64,16,15,SSD1306_WHITE); // окружность
    display.display(); // вывод буфера в память дисплея
}

void loop() {
}

Результат работы программы: на экране дисплея отображается прямоугольник, диагональная линия, окружность и точка.

Вывод текста

В следующей программе выведем на OLED текстовую строку — RobotClass.

#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

#define SCREEN_ADDRESS 0x3C
Adafruit_SSD1306 display(128, 32, &Wire);

void setup() {
    // ожидание инициализации дисплея
    delay(500);

    display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS);

    display.clearDisplay(); // очистка экрана
    display.setTextSize(2); // размер шрифта
    display.setTextColor(SSD1306_WHITE); // цвет текста
    display.setCursor(0,10); // координаты верхнего левого угла текстового блока
    display.println(F("RobotClass"));
    display.display();
}

void loop() {
}

Результат работы программы: на экране дисплея отображается строка RobotClass.


Изменено: