СОДЕРЖАНИЕ ►
Дисплей Nokia 5510 представляет собой графический ЖК-дисплей, который первоначально был разработан для экранов культовых сотовых телефонов Nokia 5510. Но теперь экран Нокиа 5110 можно легко использовать в проектах с платой Ардуино. Рассмотрим подключение дисплея Nokia 5110 к Arduino, как отображать текст и цифры, а также выводить на экране монохромное растровое изображение.

Дисплей Nokia 5110 характеристики, распиновка
Все необходимые функции дисплея упакованы в небольшой контроллер Philips PCD8544, который работает при очень низком напряжении. Чип PCD8544 более экономичный, точный и надежный, чем контроллер у LCD 1602 дисплея. Модуль Nokia 5510 имеет 8 разъемов (см. картинку ниже) для подключения, рабочее напряжение дисплея и подсветка экрана находится в диапазоне 2,7 – 3,3 Вольта.

Характеристики дисплея Nokia 5110 (datasheet)
- Рабочее напряжение: 2.7 — 3.3 В
- Микросхема: PCD8544
- Интерфейс: SPI
- Размер экрана: 84 х 48
- Тип: TFT
- Цвет: монохромный
- Частота тактирования: до 4 Мгц
- Время сброса: 100 нс
Экран Нокиа 5110 подключается к микроконтроллеру Arduino по протоколу SPI, но используется только односторонняя связь, поскольку дисплею не надо отправлять какие-либо данные на Ардуино. В скетче будет использоваться программная реализация шины SPI, поэтому есть возможность использовать любые контакты GPIO Arduino для взаимодействия микроконтроллера с ЖК-дисплеем Nokia 5110.
- контакт RST используется для сброса
- контакт LIGHT предназначен для подсветки
- контакты VCC и GND используются для питания модуля
- контакты CE, DIN и CLK используются для управления экраном
- контакт DC используется для указания, будет ли следующая передаваемая информация командой или данными
Подключение дисплея Nokia 5110 к Arduino
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega
- display Nokia 5110 84х48
- провода «папа-мама»
- библиотеки Adafruit_PCD8544.h и Adafruit_GFX.h

| LCD Nokia 5110 | Arduino Uno | Arduino Nano | Arduino Mega |
| RST | 7 | 7 | 7 |
| CE | 6 | 6 | 6 |
| DC | 5 | 5 | 5 |
| Din | 4 | 4 | 4 |
| Clk | 3 | 3 | 3 |
| VCC | 5V | 5V | 5V |
| BL | 5V | 5V | 5V |
| GND | GND | GND | GND |
Скетч для вывода текста на дисплее Nokia 5110
#include "SPI.h" #include "Adafruit_GFX.h" #include "Adafruit_PCD8544.h" // указываем пины подключения дисплея Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 6, 7); void setup() { display.begin(); display.setContrast(20); // контрастность экрана от 0 до 100 display.setTextSize(1); // размер текста (1 - минимальное значение) display.clearDisplay(); // очистка экрана дисплея } void loop() { display.setTextColor(BLACK); // цвет текста display.setCursor(5, 0); // положение текста по оси X и Y display.println("Hello, World"); display.display(); // функция для вывода текста на экране delay(1000); display.clearDisplay(); display.setTextColor(WHITE, BLACK); // инверсия цвета display.setCursor(6, 20); display.println(" Nokia 5110 "); display.display(); delay(1000); display.clearDisplay(); }
Пояснения к коду:
- функция
display.setCursor(10, 10);имеет два аргумента: первый — это координата X (увеличивается вправо), второй аргумент — координата Y (увеличивается вниз); - в функции
display.setTextColor(WHITE, BLACK);первый аргумент отвечает за цвет текста, а второй аргумент за цвет экрана.
Как вывести изображение на дисплей Nokia 5110
Чтобы вывести на экране Нокиа 5110 изображение, его необходимо создать в формате BMP с разрешением 84 х 48. Можно скачать картинку с Интернета или взять из нашего примера в котором мы используем изображение Эйнштейна (картинка размещена выше). На первом этапе необходимо готовую картинку загрузить на следующий сайт:
http://javl.github.io/image2cpp/

На втором этапе можно указать различные настройки (инвертировать изображение, растянуть или перевернуть картинку, выбрать фон и т.д.). На сайте доступен предварительный просмотр, как будет отображаться загруженная картинка на монохромном LCD дисплее Nokia 5110 — смотри скриншот ниже.

На последнем этапе нажмите на кнопку «Generate code» и в нижнем окошке скопируйте массив. Копировать следует только массив, остальные строчки кода нам не нужны. Далее этот код вставьте в скетч. Обращайте внимание на имя массива (оно создается на сайте автоматически из имени файла) а также на разрешение картинки.

Скетч для отображения картинки на Nokia 5110 Arduino
#include "SPI.h" #include "Adafruit_GFX.h" #include "Adafruit_PCD8544.h" // указываем пины подключения дисплея Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 6, 7); // 'einshtein', 84x48px const unsigned char epd_bitmap_einshtein [] PROGMEM = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x43, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x46, 0xc1, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x80, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3e, 0x03, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x7e, 0x10, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x5c, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x07, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x41, 0x94, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x10, 0xca, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfc, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x0e, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x1a, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x04, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0x00, 0x80, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xab, 0x00, 0x68, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xa8, 0x00, 0x04, 0x01, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x29, 0x00, 0x00, 0x01, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x6a, 0x00, 0x70, 0x14, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x6b, 0xa0, 0xe0, 0x0a, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x71, 0xe0, 0x70, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x52, 0x20, 0x60, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x54, 0x20, 0x80, 0x06, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x40, 0x30, 0x0b, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x40, 0x00, 0x0a, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x44, 0x00, 0x22, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x01, 0x20, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0xc5, 0x00, 0x38, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x60, 0x40, 0x20, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x60, 0x02, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x41, 0x11, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0xfb, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x89, 0x81, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x81, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x81, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x42, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; void setup() { display.begin(); display.setContrast(20); // контрастность экрана от 0 до 100 display.clearDisplay(); // очистка экрана дисплея // вывод картинки display.drawBitmap(0, 0, epd_bitmap_einshtein, 84, 48, BLACK); display.display(); } void loop() { }
Пояснения к коду:
- при выводе картинки на экран Nokia PCD8544 учитывайте имя массива и разрешение картинки.
Заключение. При выводе переменных или информации с датчиков на дисплей в команде display.println(x); не следует ставить кавычки. Т.е. правила такие же как, при работе с монитором порта Arduino IDE. Если вы выполните все действия, которые подробно описаны в этом обзоре, то у вас появится такая же текстовая и графическая информация на экране, как на анимации в начале этой записи.










Опечатка (программная реализацию).
Спасибо, исправили
У меня ардуино вообще перестало работать с интернетом. Ни какие примеры не работают, даже ваша метеостанция. Где-то 2 месяца назад всё работало. Что делать? Хотел получать погоду и интернета.Низнаю с чем это связано.
текст на дисплее виден даже на солнце, часто использую