Arduino IDE
Пусть, самая первая наша программа просто закрасит экран одним цветом. Начнём с подключения всех необходимых библиотек.
Используем библиотеку Adafruit_SSD1306, которую можно скачать и установить с github или с помощью менеджера библиотек в Arduino IDE.
Сначала подключаем библиотеку для работы с контроллером SSD1306:
#include <Adafruit_SSD1306.h>
Затем создаём объект класса Adafruit_SSD1306:
Adafruit_SSD1306 display;
Далее все операции с модулем будут доступны через программный объект с именем display.
Для инициализации дисплея используем метод begin. Первым аргументом указываем загадочную константу-флаг SSD1306_SWITCHCAPVCC, а вторым — адрес дисплея на шине I2C. Наш дисплей имеет адрес 0x3C.
Непосредственно закрашивание экрана осуществляется методом 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.
