Библиотека Adafruit GFX
- В менеджере библиотек
- Adafruit GFX Library by Adafruit
- Версия
- 1.12.6 · всего 99 версий, первая — 1.0.0
- Платы
- любые — автор не ограничивал
- Зависимости
- Adafruit BusIO — менеджер предложит поставить вместе
Архивы — копии из официального индекса Arduino, контрольная сумма совпадает. Сверено 18.09.2026.
Графика для дисплеев Adafruit и совместимых: текст, линии, фигуры, картинки, шрифты. Работает поверх драйвера экрана — SSD1306, SH1106, ST7735, ILI9341.
GFX сама с экраном не разговаривает: это набор команд рисования, общий для всех драйверов. Класс драйвера — Adafruit_SSD1306, Adafruit_ST7735, Adafruit_ILI9341 — наследует GFX, поэтому drawLine() или print() пишутся одинаково для любого экрана. Меняется только объект и строка его создания.
Координаты — в точках от левого верхнего угла: x вправо, y вниз. Цвет — 16-битное число: у монохромного OLED это SSD1306_WHITE и SSD1306_BLACK, у цветных экранов — формат RGB565, например 0xF800 — красный.
Отдельно GFX обычно не ставят: менеджер предлагает её как зависимость драйвера. Но ищут её почти вдвое чаще, чем драйвер SSD1306, — потому что именно в ней живут шрифты и вопрос «как вывести русский текст».
Как скачать и установить
- Через менеджер — самый простой путь. В Arduino IDE: Инструменты → Управлять библиотеками (Ctrl+Shift+I). Введите
Adafruit GFX Libraryи найдите в списке строку «Adafruit GFX Library by Adafruit» — одноимённых библиотек бывает несколько, отличаются они автором. Нажмите «Установить», и на вопрос про зависимости — «Установить всё». - Конкретная версия — если в чужом проекте указана не последняя. В той же карточке менеджера рядом с кнопкой есть выпадающий список версий: выберите нужную и нажмите «Установить».
- Из архива — если нет интернета на рабочем компьютере или менеджер не открывается. Скачайте ZIP выше, затем Скетч → Подключить библиотеку → Добавить .ZIP библиотеку и укажите файл. Распаковывать не нужно.
Файл Adafruit_GFX.h отдельно не скачивают: он внутри библиотеки и появляется после установки. Если среда пишет Adafruit_GFX.h: No such file or directory — библиотека не установлена или установлена не та. Как устроен менеджер и куда складываются файлы — в общей статье про библиотеки.
Строка подключения:
#include <Adafruit_SSD1306.h> // драйвер вашего дисплея
#include <Adafruit_GFX.h>Создание объекта — обычно до setup():
Adafruit_SSD1306 display(128, 64, &Wire, -1); // объект драйвера — он и есть GFX
// все методы ниже вызываются у него: display.drawLine(...)Методы
Только то, что нужно в обычном скетче. Сигнатуры сверены с версией 1.12.6.
drawPixel(int16_t x, int16_t y, uint16_t color)- Одна точка.
drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color)- Линия между двумя точками.
drawFastHLine(int16_t x, int16_t y, int16_t w, uint16_t color) / drawFastVLine(int16_t x, int16_t y, int16_t h, uint16_t color)- Горизонтальная и вертикальная линия — заметно быстрее drawLine().
drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color) / fillRect(...)- Прямоугольник контуром или заливкой: угол, ширина, высота.
drawRoundRect(int16_t x, int16_t y, int16_t w, int16_t h, int16_t r, uint16_t color) / fillRoundRect(...)- Прямоугольник со скруглёнными углами радиуса r.
drawCircle(int16_t x, int16_t y, int16_t r, uint16_t color) / fillCircle(...)- Окружность и круг: центр и радиус.
drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color) / fillTriangle(...)- Треугольник по трём вершинам.
fillScreen(uint16_t color)- Залить весь экран одним цветом.
drawBitmap(int16_t x, int16_t y, const uint8_t bitmap[], int16_t w, int16_t h, uint16_t color)- Монохромная картинка из массива в PROGMEM: бит на точку, строка дополняется до целого байта.
setCursor(int16_t x, int16_t y)- Куда печатать. Для встроенного шрифта — левый верхний угол символа, для шрифтов из Fonts/ — базовая линия.
setTextSize(uint8_t s)- Увеличение шрифта: 1 — встроенные 6×8 точек, 2 — вдвое крупнее.
setTextColor(uint16_t c) / setTextColor(uint16_t c, uint16_t bg)- Цвет текста; второй вариант ещё и закрашивает фон под буквами — только у встроенного шрифта.
setTextWrap(bool w)- Переносить ли длинную строку на следующую. false — строка уходит за край.
print(...) / println(...)- Вывести текст или число, как в Serial.
setFont(const GFXfont *f)- Шрифт из папки Fonts/ библиотеки: setFont(&FreeSans9pt7b). setFont() без аргумента — вернуть встроенный.
getTextBounds(const char *str, int16_t x, int16_t y, int16_t *x1, int16_t *y1, uint16_t *w, uint16_t *h)- Размер надписи до вывода — для центровки и выравнивания по правому краю.
cp437(bool x)- Включить правильную таблицу символов встроенного шрифта. Без неё часть символов после 176-го сдвинута на один.
setRotation(uint8_t r)- Повернуть систему координат: 0–3, по 90°.
width() / height()- Размер экрана в точках с учётом поворота.
Пример
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Fonts/FreeSans9pt7b.h>
Adafruit_SSD1306 display(128, 64, &Wire, -1);
// строка по центру экрана по горизонтали
void printCentered(const char *text, int16_t y) {
int16_t x1, y1;
uint16_t w, h;
display.getTextBounds(text, 0, y, &x1, &y1, &w, &h);
display.setCursor((display.width() - w) / 2 - x1, y);
display.print(text);
}
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
display.setTextColor(SSD1306_WHITE);
display.setFont(&FreeSans9pt7b); // курсор — на базовой линии, поэтому y = 20, а не 0
printCentered("Niro", 20);
display.setFont(); // обратно встроенный 6×8
display.drawRoundRect(0, 28, 128, 36, 6, SSD1306_WHITE);
display.fillCircle(24, 46, 10, SSD1306_WHITE);
display.fillTriangle(52, 56, 64, 36, 76, 56, SSD1306_WHITE);
display.drawLine(90, 36, 116, 56, SSD1306_WHITE);
display.display();
}
void loop() {}Пример на OLED SSD1306, но всё, кроме строки создания объекта и begin(), без изменений работает на любом дисплее с драйвером на GFX.
На чём попадаются
Вместо русских букв — кракозябры
Встроенный шрифт — таблица символов CP437, кириллицы в ней нет, а строки в скетче записаны в UTF-8. Проще всего библиотека U8g2_for_Adafruit_GFX: она рисует кириллические шрифты U8g2 поверх любого дисплея на GFX. Второй путь — свой шрифт: конвертер fontconvert лежит в папке библиотеки и делает GFXfont из TTF. Распространённая замена файла glcdfont.c на русифицированный работает, но слетает при каждом обновлении библиотеки.
Текст со шрифтом из Fonts/ уехал вверх и обрезан
У этих шрифтов курсор — базовая линия, а не верхний угол: setCursor(0, 0) рисует строку выше экрана. Ставьте y не меньше высоты шрифта — для 9pt это около 13.
Цифры наслаиваются друг на друга
setTextColor(c) рисует только сами буквы, старые не стираются. У встроенного шрифта поможет setTextColor(цвет, фон); у шрифтов из Fonts/ фона нет вовсе — затирайте место fillRect() перед выводом.
Вместо значка градуса другой символ
Без cp437(true) символы после 176-го сдвинуты на один. Включите её в setup() и выводите градус как print((char)248).