Как подключить nokia 5110 к arduino

Варианты подключения дисплея Nokia 5110 к Arduino и схемы

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

С обратной стороны дисплея в два ряда расположены 8 маркированных контактов, соединенных между собой параллельно.

8 контактов Nokia, которые расположены в 2 ряда.

Их обозначения с пояснениями приведены в таблице:

Номер

Обозначение

Направление

Комментарий

1

VCC

вход

Питание от 2,7 до 3,3 В

2

GND

вход

Питание, земля

3

SCE

вход

Выбор чипа по 0

4

RST

вход

Перезагрузка по 0

5

D/C

вход

Выбор: режим команд по 0, данных по 1

6

DN(MOSI)

вход

Последовательный ввод данных

7

SCLK

вход

Тактовая частота

8

LED

вход

Питание подсветки LED 3,3 В

Особенности питания Нокиа 5110

На плате LCD Нокиа 5110 имеются 2 коннектора для подачи электропитания:

  1. Пин под номером 1 служит для подачи напряжения в пределах от 2,7 до 3,3 В на микросхемы платы, потребляющие ток силой до 7 мА.

  2. Пин под номером 8 подает напряжение 3,3 В на 4 светодиода белого свечения, размещенные по углам экрана. Их задача — обеспечивать подсветку. При подаче напряжения на этот пин нужно помнить, что в цепи отсутствуют резисторы, ограничивающие ток. При подаче 3,3 В ток потребления подсветки может достигать 100 мА, потому следует заранее продумать варианты его ограничения.

Коннекторы 8 и 1 предназначены для подачи электропитания.

Интерфейс управления

При управлении дисплеем используется последовательный протокол, подобный SPI. Для преобразования поступающих сигналов и команд используется встроенная микросхема Philips PCD8544.

Управление осуществляется набором сигналов, подаваемых на коннекторы:

  • SCLK — временные метки;

  • DN — данные, входящие последовательно, выбор чипа (SCE) активируется низким уровнем;

  • SCE производит выбор чипа по низкому уровню;

  • D/C — сигнал, разрешающий отображение поступающей информации.

Полный набор команд описан в руководстве пользователя микросхемы PCD8544 в разделе Instructions. Имеются сигналы очистки дисплея, инверсии светимости пикселей, отключения питания и других.

Подготовка дисплея 5110 к подключению

До работы со скетчами следует подготовить «сборку» и определиться с соединением с Arduino. Понадобятся 8 коннекторов прямого типа или с загнутыми на 90 градусов ножками. Также нужно приготовить монтажную плату, «рельсу» с прямыми коннекторами или напаять переходники непосредственно к дисплею, расположить дисплей Nokia 5110 на монтажной плате.

Варианты подключения Нокиа 5110 к Arduino

Способ подключения LCD к Arduino затем можно применить в отношении других микроконтроллеров. Для высокой скорости передачи данных пины SCLK и DN(MOSI) выводятся на SPI Arduino. Коннекторы SCE, RST и D/C подключаются ко всем цифровым коннекторам микроплаты. Выход от светодиода соединяется с пином Arduino, поддерживающим ШИМ, что позволяет регулировать яркость подсветки. Питание дисплея 5110 нельзя напрямую соединять со стандартным выходом «Ардуино» из-за его 5-вольтовой логики.

Прямое соединение с Arduino

Подключение устройства к Arduino.

Пины подключаются так:

Пины дисплея

Пины «Ардуино»

Примечание

VCC

VCC 3,3 В

Только 3-вольтовая плата

GND

GND

 

SCE

7

Любой цифровой коннектор

RST

6

Любой цифровой коннектор

D/C

5

Любой цифровой коннектор

MOSI

11

Только этот коннектор

SCLK

13

Только этот коннектор

LED

9

Любой ШИМ-выход, ограничивающий R=330 Ом

Дополнительной защитой станут резисторы между пинами передачи данных от Arduino к экрану. При использовании Arduino Uno или иных 5-вольтовых плат можно применять резисторы на 10 и 1 кОм. Первые устанавливаются между пинами SCLK, DN, D/C и RST, а вторые между пинами SCE и 7. Резистор 330 Ом используется между коннектором светодиода и 9-ым пином.

Преобразователи уровня

Решить вопрос разного питающего напряжения можно с помощью преобразователей уровня. Для этого можно применить модули Bi-Directional Logic Level Converter либо TXB0104. Трудность состоит в том, что дисплей имеет 5 входов, а преобразователи обеспечивают только 4 контакта. Выход можно найти, если на RST подать высокий уровень через резистор на 10 кОм. Недостаток этого способа — невозможность перезагрузки дисплея при сохранении всех прочих функций.

Модуль «Bi-Directional Logic Level Converter».

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

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

Функция Назначение
LCD5110(SCK, MOSI, DC, RST, CS) Объявление дисплея с указанием пинов подключения.
InitLCD() Инициализация дисплея с опциональным указанием контрастности (0-127), по умолчанию используется значение 70.
setContrast(contrast) Изменение контрастности (0-127).
enableSleep() Переводит экран в спящий режим.
disableSleep() Выводит экран из спящего режима.
clrScr() Очищает экран.
clrRow(row, , ) Очищает выбраную строку (номер 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, , ) Выводит целое число (num) на экран на заданной позиции (x, y); опционально: length – количество символов, резервируемых для числа; filler – символ для заполнения «пустот», если число меньше желаемой длины length (по умолчанию это пробел ” “).
printNumF(num, dec, x, y, , , ) Выводит число (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 по вертикали), нажимаем «установить новый размер».

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

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

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

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

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

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

2Библиотека для работы с LCD дисплеем Nokia 5110

Для работы с этим LCD экраном написано много библиотек. Предлагаю воспользоваться вот этой библиотекой. Скачаем и разархивируем скачанный файл в директорию Arduino IDE/libraries/.

Библиотека поддерживает следующие возможности.

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

Дизайн

С чего же начать обзор телефона Nokia 5110? Конечно же, с описания его внешнего вида. Корпус легендарной модели выполнен из пластика. Имеет типичную форму, как для аппаратов того времени. Верхняя часть округлая, к низу плавно переходит в прямоугольник. На удивление, выглядит телефон не очень массивно. В высоту корпус достигает 132 мм, в ширину – 47,5 мм. А вот толщина этой модели рекордно большая – 31 мм. Молодежь даже не сможет представить, что их мобильный гаджет будет таким толстым. Ведь в настоящее время уже 10 мм считается недопустимым параметром.

Есть и еще один элемент, который сильно удивит подрастающее поколение. Речь идет об антенне. В этой модели она внешняя, довольно сильно выступает за верхний торец корпуса.

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

Под экраном находится клавиатура. Она состоит из панели управления и цифрового блока. Что касается первой, то расположение кнопок выглядит довольно оригинально: с левой стороны – клавиша сброса, с правой – стрелки, посередине – меню. Цифровой блок типичный. Он состоит из четырех горизонтальных рядов и трех вертикальных. Кнопки округлой формы, нажимаются легко.

Основные принципы создания игры

Перед началом создания данного проекта удостоверьтесь в том, что вы уже освоили подключение к плате Arduino дисплея Nokia 5110 и джойстика. Поскольку дисплей Nokia 5110 не может похвастаться приличным разрешением ограничимся разрешением 84х48 пикселов для нашей игры.

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

Теперь необходимо определиться с объектами в нашей игре. Первым объектом будет наш космический корабль, а вторым – вражеский космический корабль. Поскольку дисплей Nokia 5110 может отображать растровые изображения (bitmap images), то мы можем использовать это чтобы отображать на его экране эти два объекта космических кораблей.

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

Технические характеристики дисплея Nokia 5110

Перед подключением дисплея и программированием Arduino давайте рассмотрим общую информацию о нем.

Распиновка

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

Как уже было сказано, пины параллельно соединены между собой. Информация о назначении каждого коннектора приведена ниже.

Питание

Вы уже обратили внимание, что на LCD дисплее 5110 два коннектора для питания. Первый — самый важный — питание логики дисплея

В datasheet указано, что оно должно выбираться в диапазоне 2.7 — 3.3 В. В нормальном режиме работы дисплей будет потреблять от 6 до 7 мА.

Второй коннектор питания предназначен для подсветки дисплея. Если вы снимете сам дисплей с платы (это делать не обязательно, можно просто посмотреть на рисунок ниже), вы увидите, что подсветка реализована очень просто : четыре белых светодиода, которые расположены по углам платы

Обратите внимание, что токоограничивающих резисторов нет

Так что с питанием надо быть аккуратнее. Можно использовать токоограничивающий резистор при подключении пина ‘LED’ или использовать максимальное напряжение питания 3.3 В. Не забывайте, что светодиоды могут поглощать большие токи! Без ограничения, они потянут около 100 мА при напряжении питания 3.3 В.

Управляющий интерфейс

В дисплее встроен контроллер: Philips PCD8544, который преобразовывает массивный параллельный интерфейс в более удобный серийный. PCD8544 управляется помощью синхронным серийным протоколом, который подобен SPI

Обратите внимание, что есть пины счетчика времени (SCLK) и ввода серийных данных (DN), а также активный-low выбор чипа (SCE)

Выше рассмотренных серийных коннекторов установлен еще один коннектор – D/C, по которому поступает информация о том, могут ли быть отображены данные, которые передаются.

Пример №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 ниже.

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

#include <PCD8544.h>
#include "DHT.h"
#define DHTPIN 8
#define DHTTYPE DHT22
PCD8544 lcd;
DHT dht(DHTPIN, DHTTYPE);
void setup() {
   lcd.begin(84, 48);
   dht.begin();
}
void loop() {
    lcd.clear();
    float hum = dht.readHumidity();
    float temp = dht.readTemperature();         //Reading the temperature in degrees
    float fah = dht.readTemperature(true);      //Reading the temperature in fahrenheit
    if (isnan(hum) || isnan(temp) || isnan(fah)) {      //Checking if the arduino have recieved the values or not
     lcd.println("Failed to read from DHT sensor!");
     return;
}
  float heat_index = dht.computeHeatIndex(fah, hum);    //Reading the heat index in fahrenheit
  float heat_indexC = dht.convertFtoC(heat_index);      //Reading the heat index in degrees
  lcd.setCursor(0, 0);
  lcd.print("Humi: ");
  lcd.print(hum);
  lcd.print(" %\t");
  lcd.setCursor(0, 1);
  lcd.print("Temp: ");
  lcd.print(temp);
  lcd.print(" *C ");
  lcd.setCursor(0,2);
  lcd.print("Temp: ");
  lcd.print(fah);
  lcd.print(" *F\t");
  lcd.setCursor(0,3);
  lcd.print("Hi: ");
  lcd.print(heat_indexC);
  lcd.print(" *C ");
  lcd.setCursor(0,4);
  lcd.print("Hi: ");
  lcd.print(heat_index);
  lcd.println(" *F ");
  delay(2000);
 }

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

#include <PCD8544.h>
#include "DHT.h"
#define DHTPIN 8
#define DHTTYPE DHT22
PCD8544 lcd;
DHT dht(DHTPIN, DHTTYPE);

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

lcd.begin(84, 48);
dht.begin();

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

float hum = dht.readHumidity();
float temp = dht.readTemperature();
float fah = dht.readTemperature(true);
.
.
.
lcd.setCursor(0,4);
lcd.print("Hi: ");
lcd.print(heat_index);
lcd.println(" *F ");

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

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

Функция Назначение
LCD5110(SCK, MOSI, DC, RST, CS) Объявление дисплея с указанием пинов подключения.
InitLCD() Инициализация дисплея с опциональным указанием контрастности (0-127), по умолчанию используется значение 70.
setContrast(contrast) Изменение контрастности (0-127).
enableSleep() Переводит экран в спящий режим.
disableSleep() Выводит экран из спящего режима.
clrScr() Очищает экран.
clrRow(row, , ) Очищает выбраную строку (номер 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, , ) Выводит целое число (num) на экран на заданной позиции (x, y); опционально: length – количество символов, резервируемых для числа; filler – символ для заполнения «пустот», если число меньше желаемой длины length (по умолчанию это пробел ” “).
printNumF(num, dec, x, y, , , ) Выводит число (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 – ширина и высота рисунка.

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

#include <LCD5110_Basic.h>



LCD5110 LCD(7, 6, 5, 4, 3); //обьявляем дисплей с указанием пинов подключения

extern uint8_t SmallFont[]; //указываем наличие массива со шрифтом SmallFont в библиотеке

extern uint8_t MediumNumbers []; //указываем наличие массива со шрифтом MediumNumbers в библиотеке



void setup() {

     LCD.InitLCD(); //инициализируем дисплей

}



void loop() {

LCD.disableSleep(); //выводим дисплей из режима сна

LCD.clrScr(); //очищаем дисплей

LCD.setFont(SmallFont); //устанавливаем шрифт SmallFont

LCD.print(“Hello World!”, CENTER, 2); //выводим “Hello World!” на второй строчке с равнением по центру



LCD.setFont(MediumNumbers); // устанавливаем шрифт MediumNumbers

for (int i=0; i<=5; i++) {

     LCD.clrScr(); //очищаем экран

     LCD.print(i, CENTER, 20); //выводим значение i по центру 20 строчки

     delay(1000);

}



LCD.enableSleep(); //вводим дисплей в режим сна на время длительной паузы

delay(5000);

}

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

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

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

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

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

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

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

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

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

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

#include <LCD5110_Basic.h>



LCD5110 LCD(7, 6, 5, 4, 3); //обьявляем дисплей с указанием пинов подключения

static const char lcd_image_mas = {} //массив с изображением



void setup() {

     LCD.InitLCD(); //инициализируем дисплей

}



void loop() {

LCD.clrScr(); //очищаем дисплей

LCD.drawBitmap(18, 0, lcd_image_mas, 48, 48); //выводим изображение из массива размером 48х48 пикселей начиная с точки 18х0

LCD.enableSleep(); //вводим дисплей в режим сна

while(1);

}

Lcd nokia 5110 подключение к ардуино

В данной статье мы научимся работать с графическими 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? >

Функция Назначение
LCD5110(SCK, MOSI, DC, RST, CS) Объявление дисплея с указанием пинов подключения.
InitLCD() Инициализация дисплея с опциональным указанием контрастности (0-127), по умолчанию используется значение 70.
setContrast(contrast) Изменение контрастности (0-127).
enableSleep() Переводит экран в спящий режим.
disableSleep() Выводит экран из спящего режима.
clrScr() Очищает экран.
clrRow(row, , ) Очищает выбраную строку (номер 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, , ) Выводит целое число (num) на экран на заданной позиции (x, y); опционально: length – количество символов, резервируемых для числа; filler – символ для заполнения «пустот», если число меньше желаемой длины length (по умолчанию это пробел ” “).
printNumF(num, dec, x, y,, , ) Выводит число (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 – ширина и высота рисунка.

Дисплей нокиа 5110 ардуино – Вместе мастерим

11.12.2013 10:03:00

Было написано немало статей про текстовый дисплей, но в некоторых случаях его может быть недостаточно. В этой статье рассмотрим подключение простейшего графического черно-белого модуля-дисплея Nokia 5110 к Arduino и разберем библиотеку от Adafruit.

Компоненты для повторения (купить в Китае):

В широком распространении можно найти два варианта исполнения модулей: на синей и красной плате. Оба модуля имеют восемь выводов

Предназначение:

RST — Вывод для перезагрузки контроллера дисплея.

CE — Состояние данного вывода разрешает или запрещает ввод данных в контроллер дисплея DC — Вывод выбора режима ввода данных — Данные/Команды DIN — Вход данных последовательного интерфейса SPI CLK — Тактирующий вывод для последовательного интерфейса SPI VCC — Питание контроллера дисплея 2.7 — 3.3Вольт BL ( LIGHT ) — Подсветка GND — GND

Внутри дисплея находится контроллер PCD8544. Его питание должно лежать в пределах 2.7- 3.3В (максимум 3.3В,при подаче 5Вольт на вывод VCC дисплей может выйти из строя).

Сигнальные же выводы толерантны к 5В и подключаются к любым цифровым выводам Arduino. Для того чтобы работал наш скетч подключите его по схеме:

Nokia 5110 модуль Arduino
RST D7
CE D6
DC D5
Din D4
CLK D3
VCC 3.3В
GND GND

При использовании синего модуля , подсветка дисплея “BL” активизируется подачей 3.3 либо 5В

При использовании красного модуля , подсветка дисплея “LIGHT” активизируется подачей минуса(GND)

Библиотека необходимая для работы с модулем Adafruit_GFX_Library​

Её необходимо распаковать и добавить в папку “libraries” в папке с Arduino IDE. Не забывайте перезагрузить среду, если на момент добавления IDEшка была открыта.

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

В данной статье мы научимся работать с графическими LCD дисплеями на примере экрана Nokia 5110.

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

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

Fonts

There are 9 fonts.
By default only Font 1 is commented in and ready to go.
So to use a non-default Font (2-9), two steps.

  1. Comment in the respective define at top of library header file NOKIA5110_TEXT.h in the FONT DEFINE SECTION.
  2. Call LCDFont function and pass it number of respective font.

Only include what fonts you want in order to keep program size as small as possible.
Each font is a header file, NOKIA5110_FONT_X.h where X is number of Font(1-9)
Some fonts do not have lowercase letters and others are numbers only.
For fonts 1-6 Each character is a byte of pixels in height(Y). One pixel of empty space on each side
is added by code (padding). So a 5×8 (XxY) pixel character is in reality 7×8.
Each of the six rowblock is one byte height.

Total characters = (Screen Width/Character width + padding) X (Screen height/Character height).

Font table

Font num Font name Pixel size total characters Note
1 Default 5×8 (84/5+2) * (48/8) = 72 ——
2 Thick 7×8 (84/7+2) * (48/8) = 54 no lowercase letters
3 Aurebesh 5×8 (84/5+2) * (48/8) = 72 ——
4 Seven segment 4×8 (84/4+2) * (48/8) = 84 ——
5 Wide 8×8 (84/8+2) * (48/8) = 48 no lowercase letters
6 Tiny 3×8 (84/3+2) * (48/8) = 96 ——
7 Large 12×16 (84/12) * (48/16) = 21 no lowercase letters
8 Huge 16×24 (84/16) * (48/24) = 10 Numbers + : . only
9 Mega 16×32 (84/16) * (48/32) = 5 Numbers + : . only

Overview

  • Name : NOKIA5110_TEXT
  • Title : Library for Nokia 5110 LCD (PCD8544 controller) for the Arduino eco-system
  • Description :
  1. Arduino library.
  2. Inverse, Bias and contrast control.
  3. ASCII strings and character text display.
  4. Nine different ASCII text fonts.
  5. Sleep mode.
  6. Designed to be light weight, low memory footprint. see memory section.
  7. Custom characters and bitmap supported
  8. No graphics buffer to reduce memory footprint but
    basic graphics patterns can be created using custom characters, pixels, block patterns , lines.
  • Author: Gavin Lyons

  • Arduino IDE: 1.8.10

  • Functions: Detailed information on the functions can be found in comments in the library .h header file and a concise list of them in keywords.txt and they are 5 example files.

  • Memory usage data results can be found in the extras folder. MemoryTestResults.md.

  • Tested on following MCUs.

  1. Arduino UNO & NANO v3
  2. ESP8266
  3. ESP32
  4. STM32 «blue pill»
Добавить комментарий

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

Adblock
detector