Подключение Nokia 5110 к Arduino: текст, графика, русский шрифт
В этом руководстве разберём подключение легендарного монохромного дисплея Nokia 5110 (84×48 пикселей) к Arduino. Научимся выводить текст (включая русский), рисовать графику, выводить битмапы и регулировать контраст/подсветку. Используем библиотеки Adafruit_GFX и Adafruit_PCD8544 — самые надёжные и удобные для этого экрана.
Особенности дисплея Nokia 5110
Nokia 5110 — графический LCD-дисплей с разрешением 84×48 точек, контроллером PCD8544. Работает от 3,3 В, потребляет минимум энергии, идеален для батарейных проектов: термометров, метеостанций, пультов, логгеров данных. Подсветка регулируется, шрифты масштабируемые, графика поддерживается полностью.
Схема подключения к 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 кОм
Важно: многие модули имеют красную или синюю плату. На красной подсветка включается подачей +3,3 В на LIGHT. На синей — BL подключается к GND (активная низким уровнем). Всегда проверяйте у продавца.
Базовый скетч — вывод текста
#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;
}
Преобразует кириллицу в однобайтовую кодировку 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 секунды перед обновлением.
Графика: круги, прямоугольники, битмапы
Библиотека 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);
}
}
Затем анимированно заполняет круг белым цветом, постепенно увеличивая радиус на каждом шаге.
Для вывода логотипа конвертируйте изображение 84×48 в массив через LCD Assistant или Image2cpp, затем:
display.drawBitmap(0, 0, myLogo, 84, 48, BLACK);
Заключение
Nokia 5110 — отличный бюджетный дисплей для вывода информации в проектах Arduino. Главные правила: питание 3,3 В, правильная контрастность (40–60), русифицированный шрифт и аккуратная работа с подсветкой. После освоения вы сможете создавать часы, метеостанции, меню устройств и многое другое.