Arduino nokia 5110 не работает

Подключаем экран Nokia 5110 к Ардуино

В этом уроке мы соединим плату Ардуино и экран Nokia 5110, а затем выведем на дисплей данные датчика DHT22.

Комплектующие

Мы собираемся связать ЖК-дисплей Nokia 5110 и Arduino. Вы изучите интерфейс Nokia 5110 Arduino с помощью двух примеров.

Во-первых, мы просто покажем некоторые данные на экране, а во втором примере мы будем читать с датчика температуры и влажности DHT22 показатели и покажем их на ЖК-экране Nokia 5110.

Nokia 5110 LCD — отличный выбор для отображения данных. Это дешевле обычных ЖК и его очень легко использовать с микроконтроллерами. Вам просто нужно подключить несколько проводов и всё готово к работе.

Для подключения Nokia 5110 к Ардуино нам нужны будут сам экран с микроконтроллером и еще ряд деталей.

  • Arduino UNO × 1
  • Nokia 5110 LCD × 1
  • Многооборотный прецизионный потенциометр — 1 кОм (25 витков) × 1
  • Резистор 10 кОм × 4
  • Резистор 1 кОм × 1
  • Резистор 330 Ом × 1
  • Перемычки × 1
  • Макет (универсальный) × 1

Дополнительно нам понадобится программное обеспечение в виде Arduino IDE, с которым вы скорее всего знакомы.

Распиновка Nokia 5110

Выводы Nokia 5110 LCD выглядит следующим образом:

RST: пин сброса
SCE: пин выбора чипа
D/C: (Данные / Команда): это вывод выбора режима. LOW означает командный режим, а HIGH означает режим данных.
DN (Data Pin): последовательные данные на входе
SCLK: последовательный тактовый сигнал
VCC: входное напряжение от 2,7 до 3,3 В
Светодиод: этот светодиод является подсветкой. Входное напряжение 3,3 В
GND: земля

Пример №1

В первом примере мы просто отобразим данные на ЖК-дисплее Nokia 5110. Принципиальная схема для соединения Nokia 5110 и Arduino показана ниже.

Схема соединения

Для работы Nokia 5110 LCD требуется 3,3 В, поэтому нам придется использовать резисторы для преобразования 5 В в 3,3 В. Если вы будете работать с Nokia 5110 без резисторов, экран будет работать, но срок службы ЖК-дисплея сократится.

  • Подключите контакт 1 (контакт RST) к контакту 6 Arduino через резистор 10 кОм.
  • Подключите контакт 2 (контакт SCE) к контакту 7 Arduino через резистор 1 кОм.
  • Подсоедините контакт 3 (контакт D/C) к контакту 5 Arduino через резистор 10 кОм.
  • Подсоедините контакт 4 (DIN контакт) к контакту 4 Arduino через резистор 10 кОм.
  • Подсоедините контакт 5 (контакт CLK) к контакту 3 Arduino через резистор 10 кОм.
  • Подсоедините контакт 6 (контакт VCC) к контакту 3,3 В Arduino.
  • Подсоедините контакт 7 (светодиодный контакт) к среднему контакту потенциометра 1 кОм через резистор 330 Ом и подключите два других контакта к VCC и заземлению.
  • Подсоедините контакт 8 (контакт GND) к заземлению Arduino.

Подключенный потенциометр используется для увеличения или уменьшения подсветки ЖК-дисплея. Вы можете подключить его к 3,3 В, если хотите, чтобы подсветка всегда была сильной, или вы можете подключить его к заземлению, если вы не хотите иметь подсветку.

Скачайте библиотеку Nokia 5110 ниже.

Сам код первого примера:

Прежде всего, мы подключаем библиотеку для Nokia 5110 LCD. Библиотека будет включать все команды, которые нам потребуются для ЖК-дисплея Nokia 5110. Затем мы объявили переменную с именем «lcd» типа PCD8544.
#include

Затем в функции setup (настройка) мы установили разрешение для Nokia 5110 LCD. ЖК-дисплей Nokia5110 имеет разрешение 84х48, поэтому мы установили разрешение 84х48 в Arduino IDE.

Затем в функции loop (цикл) мы сначала установили курсор на первую строку и напечатали «Добро пожаловать!» (WELCOME). Затем мы перешли ко второй строке и напечатали «в» (to), а затем в третьей строке мы напечатали «ArduinoPlus.ru».

Пример №2

Во втором примере мы подключим датчик температуры и влажности DHT22 к Arduino и с помощью DHT22 будем считывать температуру, влажность и тепловой индекс. Затем мы покажем эти данные на ЖК-дисплее Nokia 5110. Принципиальная схема интерфейса Nokia 5110, Arduino и DHT22 приведена ниже.

Читайте также:  Как можно работать не по профессии

Схема соединения

Соединения ЖК-дисплея Nokia 5110 с Arduino описаны в первом примере. Соедините контакты датчика DHT22 с Arduino, как показано на схеме выше:

  • Контакт 1 DHT22 на 5В Arduino.
  • Контакт 2 DHT22 к контакту 8 Arduino.
  • Контакт 4 DHT22 к контакту заземления Arduino.

Если вы хотите узнать больше о взаимодействии DHT с Arduino, прочитайте наш урок Датчик температуры и влажности DHT22.

Скачайте библиотеки Nokia 5110 и DHT ниже.

Код для второго примера ниже:

Прежде всего, мы включили библиотеки для Nokia 5110 LCD и датчика температуры и влажности DHT22. После этого мы инициализировали контакт 8 для DHT22 (DHTPIN 8) и определили тип датчика DHT. Также доступны другие модели датчиков DHT, но мы использовали DHT22 из-за его высокой точности. Затем мы объявили переменную «lcd» типа PCD8544 для ЖК-дисплея и переменную «dht» типа DHT для датчика DHT22.

Затем в функции настройки setup мы установили разрешение для Nokia 5110 LCD. ЖК-дисплей Nokia5110 имеет разрешение 84х48, поэтому мы установили разрешение 84х48 в Arduino IDE. После этого мы начали получать данные с датчика DHT22 с помощью команды dht.begin().

В функции цикла loop мы читаем значения влажности, температуры и индекса тепла из DHT22 и сохраняем в переменных. В конце мы напечатали их на ЖК-экране Nokia 5110.

На этом урок можно считать завершенным. Теперь вы вкратце понимаете как подключать дисплеи от Nokia к Arduino.

Источник

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

В данной статье мы научимся работать с графическими LCD дисплеями на примере экрана Nokia 5110. Это довольно популярный дисплей, выделяющийся низкой стоимостью и возможностью выводить в удобном виде не только текстовые, но и графические данные (графики, изображения и т.д.). Разрешение экрана Nokia 5110 – 48×84 точки. Мы узнаем, как подключать дисплей Нокиа к Ардуино и приведем пример скетча для работы с ним.

Подключение дисплея 5110 к Ардуино

Для начала давайте рассмотрим подключение данного дисплея к Arduino и разберемся с интерфейсом передачи данных. На плате дисплея имеются 8 выводов:

  • RST — Reset (сброс);
  • CE — Chip Select (выбор устройства);
  • DC — Data/Command select (выбор режима);
  • DIn — Data In (данные);
  • Clk — Clock (тактирующий сигнал);
  • Vcc — питание 3.3В;
  • BL — Backlight (подсветка) 3.3В;
  • GND — земля.

Соединение

Как вы уже могли заметить, питание дисплея (Vcc) должно осуществляться напряжением не выше 3.3В, то же напряжение является максимальным и для подсветки дисплея (BL). Тем не менее, логические выводы толерантны к 5В логике, используемой Arduino. Но все же рекомендуется подключать логические выводы через резисторы 10 кОм, тем самым вы сможете продлить срок службы дисплея.

Также стоит отметить, что существуют версии дисплеев (как правило с красной платой) с выводом LIGHT вместо BL. В таком случае включение подсветки осуществляется подключением данного вывода к минусу питания (GND).

Пин RST (активный LOW) отвечает за перезагрузку дисплея, а с помощью пина CE (активный LOW) контроллеру дисплея сообщается что обмен данными происходит именно с ним. Вход DC отвечает за режим ввода – ввод данных, либо ввод команд (LOW – данные, HIGH – команды). Вход Clk позволяет контроллеру дисплея определять скорость передачи данных, а через пин DIn происходит непосредственно передача данных в контроллер дисплея.

Скетч и библиотека для работы с дисплеем

Для работы с данным дисплеем существует множество библиотек, мы же будем использовать весьма простую и функциональную библиотеку , доступную по адресу http://www.rinkydinkelectronics.com/library.php?id=44. Данная библиотека позволяет работать с дисплеем с помощью 14 простых функций:

Функция Назначение
LCD5110(SCK, MOSI, DC, RST, CS) Объявление дисплея с указанием пинов подключения.
InitLCD([contrast]) Инициализация дисплея с опциональным указанием контрастности (0-127), по умолчанию используется значение 70.
setContrast(contrast) Изменение контрастности (0-127).
enableSleep() Переводит экран в спящий режим.
disableSleep() Выводит экран из спящего режима.
clrScr() Очищает экран.
clrRow(row, [start], [end]) Очищает выбраную строку (номер row), от позиции start до end (опционально).
invert(true), invert(false) Включает и выключает инверсию содержимого LCD экрана.
print(string, x, y) Выводит строку символов (string) с заданными координатами (x, y); вместо x-координаты можно использовать LEFT, CENTER и RIGHT; высота стандартного шрифта 8 точек, поэтому строки должны идти с интервалами через 8.
printNumI(num, x, y, [length], [filler]) Выводит целое число (num) на экран на заданной позиции (x, y); опционально: length – количество символов, резервируемых для числа; filler – символ для заполнения «пустот», если число меньше желаемой длины length (по умолчанию это пробел ” “).
printNumF(num, dec, x, y, [divider], [length], [filler]) Выводит число (num) с плавающей запятой; dec – число знаков после запятой; опционально: divider – знак десятичного разделителя, по умолчанию точка “.”, length и filler – по аналогии с предыдущей функцией.
setFont(name) Выбирает шрифт; встроенные шрифты – SmallFont, MediumNumbers и BigNumbers.
invertText(true), invertText(false) Инвертирует текст, выведенный с помощью функций print, printNumI и printNumF (вкл./выкл.).
drawBitmap(x, y, data, sx, sy) Выводит картинку на экран по необходимым координатам (x, y); data – массив, содержащий картинку; sx и sy – ширина и высота рисунка.
Читайте также:  Как настроить картинку для рабочего стола

Рассмотрим работу с дисплеем с помощью данной библиотеки на примере простого скетча:

После того как мы рассмотрели базовые функции библиотеки, остановимся более подробно на функции drawBitmap и рассмотрим особенности вывода изображений на экран.

Для начала нам понадобится интересующее изображение в формате .bmp.

Далее необходимо скачать программу Image Generate от Alex_EXE по адресу https://alex-exe.ru/programm/image-generate/. В окне программы устанавливаем необходимое разрешение нашего изображения на дисплее (должно быть меньше, чем 84 пикселя по горизонтали и 48 по вертикали), нажимаем «установить новый размер».

Нажимаем «установить новый размер»

После этого нажимаем «Картинка», «Открыть», выбираем наш файл, жмем «преобразовать».

Жмем «преобразовать»

Нажимаем «Применить»

Теперь жмем на кнопку «Массив» и копируем появившийся массив в новый скетч.

Теперь жмем на кнопку «Массив» и копируем появившийся массив в новый скетч

Выводы

Таким образом, мы подробно рассмотрели базовые возможности работы с дисплеем Nokia 5110 с помощью библиотеки LCD5110_Basic, научились быстро и просто выводить собственные изображения на экран и разобрали нюансы, связанные с подключением дисплея к платформе Arduino.

Источник

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

Сегодня я расскажу как подключать дисплей от некогда очень известного телефона НОКИА – 5110.
Мы научимся выводить текст и рисовать различную графику.
Вот примеры того, что будет в этом уроке.
Для подключения к Ардуино была написана библиотека, а для отображения кириллицы создан русификатор.
Он переводит UTF-8 в Windows-1251. Вот его мы и сможем увидеть на экране.
Нам потребуется две библиотеки от компании Adafruit

  1. Adafruit_GFX
  2. Вторая, Adafruit_PCD8544

Скачать можно с гитхаба или по ссылке в описании к видео.
Nokia-5110 – это Монохромный дисплей. Разрешение этого дисплея 84×48 точек.

Для подключения у него 8 посадочных мест, как сверху, так и снизу. Это сделано для удобства расположения дисплея в устройствах.


В комплекте так же идут штырьки для распайки.
На этом экране можно выводить как графику, так и просто текст или цифры. Очень простое подключение к платам Ардуино.


Важно не забыть, что питание дисплея 3,3 вольта. НЕ 5 ВОЛЬТ.
Тоже относится и для питания подсветки дисплея.

Подключение оставшихся выводов так же рассчитано на питание 3,3 вольта.
Я уже давно использую такие дисплеи и у меня на канале есть несколько видео где показаны разные устройства с выводом информации на Nokia-5110.
Подключаю напрямую к выводам Ардуино, БЕЗ РЕЗИСТОРОВ, и всё работает уже долгое время. Как будете делать вы я не знаю.
Можете подключать через дополнительные резисторы, или использовать преобразователи, которые получая на вход 5 вольт преобразуют его в 3,3 вольта.

Есть различные варианты дисплеев. Например, отличаются по цветам платы. Если у вас красная плата, и вывод обозначается как LIGHT — то он подключается к + 3,3 вольта.
Если синяя, и вывод обозначается как BL — то он подключается к земле.
Но лучше уточнить у продавца. Всегда могут быть исключения.

Читайте также:  Whatsapp не работает наушники

Так же я всегда устанавливаю подстроечный резистор на 10 кОм, чтобы регулировать яркость дисплея вручную. Вывод подсветки подключается к центральному контакту резистора, а два крайних – это +3,3 и GND.

Теперь давайте попробуем загрузить скетч из примера библиотеки и посмотрим, как он работает. Это довольно сложный пример для того, чтобы обучаться.
Я в своих примерах показываю, как сделать проще.

Рассмотрим первый скетч.
Скачать его можно по ссылке в описании к видео.
Я прокомментировал каждую строчку кода на нашем ВЕЛИКОМ и МОГУЧЕМ, что бы было понятно что и для чего.

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

void setup() <
display.begin();
display.setContrast(50); // установка контраста
display.clearDisplay();
>

void loop() <
display.setTextSize(1); // размер шрифта 1
display.setTextColor(BLACK); // цвет текста темный
display.println(«Hello, world!»); // отображаем надпись
display.setTextSize(2); // увеличиваем шрифт на 1
display.println(random(1,10000)); // выводим число от 1 до 10000
display.setTextSize(3);
display.print(random(1,10000));
display.display();
delay(1000); // задержка в секунду
display.clearDisplay(); // очищаем дисплей
>

Теперь попробуем вывести русский текст.
Загружаем скетч-2

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

void setup() <
display.begin();
display.cp437(true);
display.setContrast(50); // установка контраста
display.clearDisplay();
>

void loop() <
display.clearDisplay();
// Рисуем квадрат
display.drawRect(0, 0, 84, 48, BLACK); // отступ — Слева Сверху Ширина Высота

display.setTextSize(2); // размер шрифта 2
display.setTextColor(BLACK); // цвет текста чёрный
display.setCursor(8,5); // Устанавливаем курсор в то место откуда будем писать Лево-Верх
display.println(utf8rus(«Привет»));
display.setTextSize(2); // размер шрифта 2
display.setTextColor(BLACK); // цвет текста чёрный
display.setCursor(8,25);
display.println(utf8rus(«народ!»));

display.display();
delay(1000); // задержка в секунду
display.clearDisplay(); // очищаем дисплей
>

/* Функция перевода UTF-8 to Windows-1251 */
String utf8rus(String source)
<
int i,k;
String target;
unsigned char n;
char m[2] = < '0', '\0' >;

k = source.length(); i = 0;

if (n >= 0xC0) <
switch (n) <
case 0xD0: <
n = source[i]; i++;
if (n == 0x81) < n = 0xA8; break; >
if (n >= 0x90 && n = 0x80 && n

Теперь попробуем вывести русский текст.

И-и-и-и-и, ничего у нас не получилось.
Вместо русских букв получаются кракозябры.

Но не переживайте. Сейчас исправим.
Скопируем файл glcdfont.c в папку с библиотеками Ардуино.

Обычно это находится по адресу
Admin — Documents — Arduino – libraries — Adafruit-GFX-Library
копируем туда файл glcdfont.c с заменой

В setup добавляем строчку

void setup() <
display.begin();
display.cp437(true);

И в самый конец, после функции loop() копируем функцию перевода UTF-8 в Windows-1251

/* Функция перевода UTF-8 to Windows-1251 */
String utf8rus(String source)

И,… вуаля, теперь можно работать с русским шрифтом.

Нарисуем окружность.
Заполним весь экран кругами.
Раньше мы всегда писали чётными чернилами, а что если белыми?
Посмотрим?

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

void setup() <
// инициализация и очистка дисплея
display.begin();
display.clearDisplay();
display.display();

display.setContrast(50); // установка контраста
delay(1000);
>

// окружность в центре
display.clearDisplay();
display.drawCircle(display.width()/2, display.height()/2, 20, BLACK);
display.display();
delay(5000);
display.clearDisplay();

for (int16_t i=0; i

for (int16_t i=0; i

В видео рассмотрены примеры как нарисовать квадрат, треугольник,окружность. Также я показываю как вывести на экран дисплея свой рисунок, это может быть логотип или что-нибудь другое.

Дисплей Nokia 5110 имеет разрешение 84×48 точек. Поэтому и картинки должны быть не больше этого размера. В принципе здесь нет ничего нового.
Как делать массивы из картинок .bmp, я подробно рассказывал в видео про матрицу 16*16. Если не смотрели, то обязательно посмотрите.
Здесь нас интересует только 2 строчки.

static const unsigned char PROGMEM leoBmp[]

Где мы пишем название нашего массива

2. где мы его вызываем.
Цифры – это размер картинки.

display.drawBitmap(0, 0, leoBmp, 84, 48, BLACK);

А теперь выведем какой-нибудь логотип.
Например, льва.

Смотрите в видео.

Не забываем подписываться на канал, если вам интересно что я делаю.
Ставим лайк и оставляем комментарии – этим вы покажете мне, что я не просто так делаю обучающие уроки.
До встречи.

Источник

Оцените статью