Подключение Nokia 5110 к Arduino: текст, графика, русский шрифт

В этом руководстве разберём подключение легендарного монохромного дисплея Nokia 5110 (84×48 пикселей) к Arduino. Научимся выводить текст (включая русский), рисовать графику, выводить битмапы и регулировать контраст/подсветку. Используем библиотеки Adafruit_GFX и Adafruit_PCD8544 — самые надёжные и удобные для этого экрана.

Подключение Nokia 5110 к Arduino с выводом текста и графики

Особенности дисплея Nokia 5110

Nokia 5110 — графический LCD-дисплей с разрешением 84×48 точек, контроллером PCD8544. Работает от 3,3 В, потребляет минимум энергии, идеален для батарейных проектов: термометров, метеостанций, пультов, логгеров данных. Подсветка регулируется, шрифты масштабируемые, графика поддерживается полностью.

Внешний вид дисплея Nokia 5110 с контактами

Схема подключения к Arduino

Подключение использует SPI-интерфейс (аппаратный или программный). Питание строго 3,3 В!

  • VCC → 3,3 В Arduino
  • GND → GND
  • CLK (SCLK) → D7
  • DIN (MOSI) → D6
  • DC → D5
  • CE (CS) → D4
  • RST → D3
  • BL (подсветка) → 3,3 В или через подстроечный резистор 10 кОм
Схема подключения Nokia 5110 к Arduino Uno

Важно: многие модули имеют красную или синюю плату. На красной подсветка включается подачей +3,3 В на LIGHT. На синей — BL подключается к GND (активная низким уровнем). Всегда проверяйте у продавца.

Разные версии платы Nokia 5110: красная и синяя

Базовый скетч — вывод текста

#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>

Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);

void setup() {
  display.begin();
  display.setContrast(50);      // 0–127, подбирайте под освещение
  display.clearDisplay();
}

void loop() {
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(BLACK);
  display.setCursor(0, 0);
  display.println("Hello, world!");
  display.setTextSize(2);
  display.println(random(10000));
  display.display();
  delay(1500);
}
Инициализирует дисплей и задаёт контраст.
Каждые 1,5 секунды очищает экран.
Показывает текст «Hello, world!» в маленьком шрифте.
Выводит случайное число (0–9999) крупным шрифтом.
Обновляет дисплей командой display.display().

Русский текст на Nokia 5110

Для кириллицы замените файл glcdfont.c в библиотеке Adafruit_GFX на русифицированный (скачайте готовый). Добавьте функцию конвертации UTF-8 → Windows-1251:

String utf8rus(String source) {
  String target;
  unsigned char n;
  char m[2] = {'0','\0'};
  int i = 0, k = source.length();
  while (i < k) {
    n = source[i++]; 
    if (n >= 0xC0) {
      switch (n) {
        case 0xD0: n = source[i++] + 0x30; break;
        case 0xD1: n = source[i++] + 0x70; break;
      }
    }
    m[0] = n; target += String(m);
  }
  return target;
}
Принимает строку в UTF-8 (source) с русскими буквами.
Преобразует кириллицу в однобайтовую кодировку Windows-1251 (или близкую).
Возвращает новую строку (target), которую можно выводить на LCD или OLED, которые не понимают UTF-8.
Игнорирует все символы вне диапазона кириллицы, оставляя их без изменений.
void loop() {
  display.clearDisplay();
  display.drawRect(0, 0, 84, 48, BLACK);
  display.setTextSize(2);
  display.setCursor(8, 5);
  display.println(utf8rus("Привет"));
  display.setCursor(8, 25);
  display.println(utf8rus("народ!"));
  display.display();
  delay(2000);
}
Очищает экран и рисует прямоугольник по краям дисплея.
Выводит две строки русскими буквами, преобразованными через utf8rus().
Отображает текст на дисплее и ждёт 2 секунды перед обновлением.
Русский текст на дисплее Nokia 5110

Графика: круги, прямоугольники, битмапы

Библиотека GFX позволяет рисовать примитивы и выводить битмапы в PROGMEM.

void loop() {
  display.clearDisplay();
  // Один круг
  display.drawCircle(42, 24, 20, BLACK);
  display.display();
  delay(3000);

  // Анимация заполнения
  for (int r = 0; r < 24; r += 2) {
    display.fillCircle(42, 24, r, WHITE);
    display.display();
    delay(200);
  }
}
Рисует пустой круг по центру экрана и показывает его 3 секунды.
Затем анимированно заполняет круг белым цветом, постепенно увеличивая радиус на каждом шаге.

Для вывода логотипа конвертируйте изображение 84×48 в массив через LCD Assistant или Image2cpp, затем:


display.drawBitmap(0, 0, myLogo, 84, 48, BLACK);
Пример вывода логотипа льва на Nokia 5110 Пример анимированного логотипа на дисплее Nokia 5110

Заключение

Nokia 5110 — отличный бюджетный дисплей для вывода информации в проектах Arduino. Главные правила: питание 3,3 В, правильная контрастность (40–60), русифицированный шрифт и аккуратная работа с подсветкой. После освоения вы сможете создавать часы, метеостанции, меню устройств и многое другое.

FAQ-NOKIA 5110 подключение

Можно ли питать Nokia 5110 от 5 В?

Нет, только 3,3 В. Подача 5 В быстро выведет дисплей из строя.

Почему экран белый или ничего не видно?

Отрегулируйте контраст в display.setContrast(40–60). Также проверьте питание 3,3 В и правильность подключения.

Как сделать русский текст без замены шрифта?

Нельзя. Нужно заменить glcdfont.c в библиотеке Adafruit_GFX на версию с кириллицей.

Подсветка не работает — что делать?

На красной плате подайте +3,3 В на LIGHT. На синей — GND на BL. Используйте подстроечный резистор для регулировки.

Сколько памяти занимает библиотека GFX?

На Uno остаётся достаточно места для простых проектов. Для сложных используйте Nano Every или ESP8266.

Можно ли использовать Nokia 5110 без подсветки?

Да, но в темноте ничего не видно. Подсветка сильно улучшает читаемость.

Как вывести свою картинку на дисплей?

Конвертируйте BMP 84×48 в массив PROGMEM через Image2cpp или LCD Assistant, затем вызовите drawBitmap().