Рубрики
Схемы на Arduino

Подключение ЖК дисплея Nokia 5110 к Arduino

Я думаю многие посетители нашего сайта помнят те времена, когда кнопочные телефоны Nokia были самыми лучшими в мире и считались эталоном надежности. Поэтому даже само название “Nokia 5110” способно вызвать глубокую ностальгию у тех, кто помнит те времена. На самом деле жидкокристаллический (ЖК) дисплей Nokia 5110 изначально использовался в качестве экрана в телефонах Nokia в те далекие времена. Это монохромный дисплей размером 84×48 пикселов, который способен отображать алфавитно-цифровую информацию, а также несложную графику.

По сегодняшним меркам этот дисплей уже не является конкурентом новым поколениям ЖК дисплеев и выглядит на их фоне достаточно блекло. Однако ему еще можно найти применение в несложных проектах, поэтому в данной статье мы и рассмотрим его подключение к плате Arduino. Но кроме Arduino его еще можно успешно подключать и к другим типам современных микроконтроллеров.

Необходимые компоненты

  1. Плата Arduino (любой версии) (купить на AliExpress).
  2. ЖК дисплей Nokia 5110 (купить на AliExpress).
  3. Соединительные провода.

Реклама: ООО «АЛИБАБА.КОМ (РУ)» ИНН: 7703380158

Общая характеристика ЖК дисплея Nokia 5110

Существует два типа подобных ЖК дисплеев – у первого типа ламели для пайки располагаются с обоих сторон дисплея, а у второго типа они располагаются только с обратной стороны дисплея. Мы использовали дисплей 2-го типа, но принципы подключения и использования обоих типов этих дисплеев одинаковы, поэтому совершенно неважно какой из этих типов дисплеев вы приобретете.

Как уже упоминалось, графический ЖК дисплей Nokia 5110 имеет 84 пикселя по горизонтали и 48 пикселей по вертикали. Общий размер дисплея — 1.72’ x 1.72’. Дисплей имеет 6 входных контактов которые можно подключить к любому микроконтроллеру по протоколу SPI. Микросхема дисплея, которая отвечает за взаимодействие с микроконтроллером – это микросхема контроллера дисплея Philips PCD8544, даташит на которую можно найти по этой ссылке. Однако, поскольку мы используем плату Arduino, нам нет нужды беспокоиться о даташите этой микросхемы и принципах ее работы поскольку все низкоуровневое взаимодействие с ней мы будем осуществлять с помощью специальных библиотек для Arduino.

Работа схемы

Схема подключения ЖК дисплея Nokia 5110 к плате Arduino представлена на следующем рисунке.

Модуль дисплея имеет 6 контактов, которые мы будем использовать для осуществления связи по протоколу SPI с платой Arduino. Дисплей запитывается от контакта 3.3V платы Arduino. И все контакты дисплея работают в логике 3.3V, поэтому, в идеале желательно использовать делители напряжения для подключения контактов дисплея к контактам платы Arduino, которые работают в логике 5V. Но у нас этот дисплей заработал при прямом подключении его контактов к плате Arduino, поэтому мы и приводим схему его подключения без делителей напряжения.

После сборки конструкции на макетной плате у вас должна получиться примерно следующая картина:

Исходный код программы для Arduino

Вначале выполните следующие шаги.

Шаг 1. Откройте Arduino IDE на вашем компьютере и выберете в ней именно ту плату Arduino, которую вы собираетесь подключать к компьютеру.

Шаг 2. Скачайте библиотеку для работы с дисплеем Nokia 5110 с сервиса GitHub. Библиотека разработана компанией Adafruit.

Шаг 3. После скачивания Zip файла с библиотекой выберите пункт меню Sketch -> Include Library -> Add .ZIP library и укажите путь к скачанному Zip файлу библиотеки.

Примечание: также желательно скачать Adafruit GFX Graphics core (библиотеку для работы с графическим ядром) по ссылке https://github.com/adafruit/Adafruit-GFX-Library и установить ее аналогичным образом. Данная библиотека позволит вам рисовать на экране дисплея круги, прямоугольники и другие графические объекты.

Шаг 4. Теперь откройте пример работы с данной библиотекой по адресу File -> Examples -> Adafruit PCD Nokia 5110 LCD Library -> pcdtest и загрузите его в плату Arduino.

Шаг 5. После загрузки программы в плату нажмите кнопку сброса (reset) на плате Arduino и посмотрите как эта тестовая программа будет рисовать различные графические объекты на экране дисплея. Этот процесс показан на видео, приведенном в конце статьи.

Вы при желании можете подробно изучить текст этого примера чтобы понять как он работает, однако мы идем дальше и постараемся изобразить лого «CircuitDigest» на экране ЖК дисплея. Аналогичным образом вы можете отобразить на экране дисплея любое другое подходящее изображение.

Откройте требуемое изображение в редакторе Paint (или любом другом аналогичном) и измените размер изображения. Максимальный размер изображения для этого дисплея — 84×48 пикселей.

После изменения размера изображения сохраните его в черно-белом формате используя соответствующую опцию редактора Paint. Для отображения этого побитового (растрового) изображения (файл в формате .bmp) на экране ЖК дисплея необходимо преобразовать это изображение в код. Подобный декодер можно скачать по данной ссылке. После скачивания извлеките файл из архива и кликните на “BitmapEncoder” чтобы запустить приложение. Откройте ваше растровое изображение в этом декодере и преобразуйте его в код. Вы можете непосредственно скопировать полученный код в массив в программе для Arduino. Пример подобного кода приведен на следующем рисунке.

Как вы можете видеть, массив в нашем примере начинается со значений 48, 48 – это размер нашего изображения. Нам не следует добавлять эти значения в массив программы для Arduino. Поэтому удаляем эти 2 значения и используем оставшуюся часть в качестве массива для нашей программы. В результате для нашего массива мы получим следующий массив:

Теперь нам нужно очистить старое изображение на дисплее и отобразить на нем изображение с помощью кода из нашего массива, это можно сделать с помощью следующих строчек кода:

Команда display.drawBitmap(20, 0,  Logo, 48, 48, 1) задает позицию, размер и цвет нашего растрового (побитового) изображения. Ее синтаксис выглядит следующим образом:

Длина и ширина изображения могут быть получены из первых двух элементов массива после конвертирования изображения в код как было показано ранее. После запуска кода программы (приведен в конце статьи) мы увидим на экране дисплея следующее изображение:

Также на дисплее можно отображать и обычный текст как показано на следующем рисунке.

Далее приведен полный текст программы.

Видео, демонстрирующее работу схемы

7 ответов к “Подключение ЖК дисплея Nokia 5110 к Arduino”

Программа по выводу фотографий на экран дисплея не заработала до тех пор, пока не удалил подключение библиотеки ‘Nokia5110.h’, (Эту библиотеку я довольно долго искал, потом нашёл и скачал с github.com). Поставил спереди ‘#include ‘ 2 слэша, (косых черты) и фотографии стали выводиться на экран, а до этого компилятор Ардуино ругался вот так:
no matching function for call to ‘Adafruit_PCD8544::Adafruit_PCD8544(int, int, int, int, int)’
нет соответствующей функции для вызова Adafruit_PCD8544 :: Adafruit_PCD8544 (int, int, int, int, int)

Андрей, честно говоря, не знаю почему у вас приключилась такая проблема, но на некоторых других сайтах, на которых рассматривается подключение подобного дисплея к плате Ардуино, действительно не используется в программе подключение библиотеки Nokia5110.h. Но я рад что у вас получилось эту проблему разрешить и спасибо за ценный комментарий — надеюсь, он поможет другим пользователям, у которых будет наблюдаться аналогичная проблема

Здравствуйте. Уже больше месяца пытаюсь загрузить программу в ардуино, описанную в шаге 4 «pcdtest». Как исправить ошибку при компиляции?
Arduino: 1.8.13 (Windows 10), Плата:»Arduino Uno»

In file included from C:\Program Files (x86)\Arduino\libraries\Adafruit-GFX-Library-master\Adafruit_GrayOLED.cpp:20:0:

C:\Program Files (x86)\Arduino\libraries\Adafruit-GFX-Library-master\Adafruit_GrayOLED.h:30:10: fatal error: Adafruit_I2CDevice.h: No such file or directory

#include

^~~~~~~~~~~~~~~~~~~~~~

compilation terminated.

exit status 1

Ошибка компиляции для платы Arduino Uno.

Добрый вечер. Сложно так сразу сказать. А код программы из нашей статьи у вас работает? С компиляцией других программ нет проблем?

Здравсвуйте,скажите пожалуйста как с помощью этой библиотеки выводить на зкран строку.

Здравствуйте, Иван. Откройте указанный в статье текст примера File -> Examples -> Adafruit PCD Nokia 5110 LCD Library -> pcdtest.
Также код этого примера можно посмотреть по ссылке: https://github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library/blob/master/examples/pcdtest/pcdtest.ino
Посмотрите, в нем строки с 328 по 350 отвечают как раз за вывод текста: сначала выводится обычный текст с помощью команды display.println(«Hello, world!»), а далее в коде примера с помощью команды display.setRotation(1) меняется еще ориентация выводимого на экран текста (если вас интересует эта возможность).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *