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

Преимущества и недостатки

Конечно же, как и любой другой мобильный телефон, Nokia 5110 имеет как достоинства, так и недостатки. Рассмотрим их.

Преимущества:

  • Качество приема сигнала сотового оператора. Абонент остается на связи даже в тех местах, где другие телефоны уже не ловят сеть.
  • Простота и удобство пользования. Для освоения меню и элементов управления достаточно нескольких минут.
  • Качество и надежность. Телефон отлично переносит любые механические нагрузки.
  • Длительный срок автономной работы.
  • Программные сбои и зависания данной модели нехарактерны.
  • Удобная клавиатура, крупный размер кнопок.
  • Внушительный вес для некоторых пользователей может показаться недостатком, однако именно он позволяет всегда чувствовать телефон, что практически исключает вероятность потери аппарата.
  • Русифицированное меню.

Недостатки:

  • Ограниченный функционал. Использовать телефон можно только для осуществления звонков и отправления/приема сообщений.
  • Нет возможности скачивать и устанавливать мелодии.
  • Маленький черно-белый дисплей.
  • Поддержка только одной сим-карты.

Пример программы

Когда у нас уже все готово, время загрузить пример программы и начать пользоваться нашим дисплеем. Для этого из вкладки «Файл», затем «Примеры», выбираем имя скаченного примера для дисплея и выбираем “pcdtest”.

Здесь небольшое замечание, о котором следует упомянуть. Загружая библиотеку GFX, мы не найдем ее в IDE (нет примеров в Examples). Она требуется только для работы некоторых Adafruit библиотек.

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

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

Здесь также следует отметить, что после каждого использования функции рисования мы должны вызвать функцию display(), которая выводит на экран то, что мы написали в программе.

Список всех доступных функций библиотеки GFX вместе с их объяснением и изображениями образцов можно найти на сайте learn.adafruit.com.

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

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

Однако вышеперечисленные возможности относятся только для рисования графики. Что делать, если мы хотим отобразить текст? Нет ничего проще, GFX позволяет отобразить текст и символы в двух размерах, а так же в нормальном и в виде негатива.

Мы должны признать, что Adafruit в очередной раз показал класс. Опубликованные библиотеки просты в использовании, не говоря уже об отличном описании. Тестовая программа также является достаточно легкой для понимания и анализа. Думаю, никто не должен иметь проблем с первым запуском дисплея и адаптацией его в соответствии со своими потребностями.

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

Сравним возможности LCD от Nokia 5510 и обычного LCD 2*16. Здесь мы видим одни плюсы. Мы можем отобразить, помимо текста также простые растровые изображения. Для подключения используется меньше проводов, а контраст мы можем регулировать программно.

Исследование[править]

  1. Попробуйте изменить код для вывода на дисплей иного изображения. Указание: воспользуйтесь программой из пакета ImageMagick, подобно:

    $ convert -ordered-dither c5x5b,2 -resize 82x46 \
          -bordercolor white -border 1x1 \
          -transpose \
          Wikimedia_Community_Logo_optimized.svg \
          community_logo_xp.xbm 
    
  2. Указанное в вывода изображения условие возможности для «битового массива» в целом несколько более строго, нежели действительно необходимо. Исправьте это условие (в форме перед последним вызовом ) так, чтобы ошибка на этапе сборки диагностировалась для изображений с шириной вне диапазона (41 ÷ 48) пикселей, и удостоверьтесь в правильности работы такого варианта кода используя изображения:

    1. соответствующее новому (но не старому) условию;
    2. не соответствующее ни одному из этих условий.
  3. Предложенный код вывода изображения предполагает, что ширина транспонированного изображения в пикселях (или, что то же, — высота исходного) равна высоте самого дисплея. Несложно дополнить код возможностью вывода изображений меньшего размера одним из следующих двух способов:

    1. дополнением нулями до нужной высоты — подобно тому, как в функции ширина каждого глифа увеличивается на font_glyph_spacing пикселей;
    2. пропуском позиций видеопамяти, не покрываемых изображением, — через периодическую переустановку координат командами дисплея , .

    Реализуйте оба подхода и включите в код подходящее изображение. Сравните объемы результирующего кода. Убедитесь в том, что результат работы программы в обоих случаях совершенно одинаков (если дисплей, конечно, действительно «пуст» перед началом работы кода.)

  4. В знакогенератора, функция не обрабатывает никаких управляющих кодов, включая код разрыва строки (ASCII LF, 10.) Поэтому, чтобы обеспечить «читаемый» результат, каждая строка включенного в код примера текста дополнена до ширины дисплея (14 символов.)

    Обработку кода разрыва строки можно опять-таки выполнить одним из двух способов:

    1. дополняя выводимую строку нулями до полной ширины;
    2. переустанавливая текущие координаты соответствующими командами дисплея.

    Ясно, что в обоих случаях потребуется следить за текущей позицией по-горизонтали (которая, в свою очередь, может считаться как в символах, так и в пикселях.) Может показаться, кроме того, что во втором случае требуется учитывать также позицию по-вертикали, однако в данном знакогенераторе присутствует особенность, делающая это необязательным.

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

  5. Функция выводит на дисплей текст, хранящийся во flash-памяти МК, что подходит прежде всего для не меняющихся в процессе работы программы сообщений. Реализуйте функцию , выводящую текст, хранящийся в ОЗУ. Удостоверьтесь в правильности работы функции, объявив в коде буфер подходящего размера и заполнив его функцией , подобно:

       char buf12];
       sprintf_P (buf, sizeof (buf),
                  PSTR (" \316\362\342\345\362: %d "), 42);
       pcd8544_draw_text (buf);
    

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

Существует два типа подобных ЖК дисплеев – у первого типа ламели для пайки располагаются с обоих сторон дисплея, а у второго типа они располагаются только с обратной стороны дисплея

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

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

}

Варианты подключения дисплея 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».

Подключение дисплея 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 происходит непосредственно передача данных в контроллер дисплея.

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

Nokia 5110 LCD Display Module Pinout

Before diving into hookup and example code, let’s first take a look at its Pinout.

RST pin resets the display. It’s an active low pin meaning; you can reset the display by pulling it low. You can also connect this pin to the Arduino reset so that it will reset the screen automatically.

CE(Chip Enable) pin is used to select one of many connected devices sharing same SPI bus. It’s an active low pin as well.

D/C(Data/Command) pin tells the display whether the data it’s receiving is a command or displayable data.

DIN is a serial data pin for SPI interface.

CLK is a serial clock pin for SPI interface.

VCC pin supplies power for the LCD which we connect to the 3.3V volts pin on the Arduino.

BL(Backlight) pin controls the backlight of the display. To control its brightness, you can add a potentiometer or connect this pin to any PWM-capable Arduino pin.

GND should be connected to the ground of Arduino

Test it out

By now I have explained how the LCD 5110 actually works in detail and how to use SPI library along with all the Arduino functions that for handling the operation of the LCD module. It is time to test it out. The simply prints 3 lines of string (with both normal and inverse mode) and an e-Tinkers logo image at 5-second intervals each.

void loop()
{
  cursor(2, 2);  
  printStr("Hello World!!");
  cursor(4, 2);
  printStr("e-tinkers.com");
  inverse(ON);
  cursor(6,1);
  printStr("** Nov 2017 **");
  inverse(OFF);
  delay(5000);

  backlight(ON);
  printImage(eTinkersLogo);
  delay(5000);
  backlight(OFF);
  clear();
}

4Скетч для вывода изображения на ЖК экран Nokia 5110

Давайте к тексту на экране добавим картинку. Для этого подготовим монохромное изображение, которое хотим вывести на экран Nokia 5110. Помните, что разрешение экрана Nokia 5110 составляет 48 на 84 точек, и картинка должна быть не больше. Воспользуемся онлайн-инструментом для преобразования изображения в массив битов. Скачаем полученный файл с расширением «*.c» и добавим его к проекту через меню: Эскиз Добавить файл… или просто поместим файл в директорию скетча, а затем перезагрузим среду разработки Arduino IDE.

Добавление файла к проекту Arduino

Дополним наш скетч работой с изображением.

#include <LCD5110_Basic.h> 

LCD5110 myGLCD(7,6,5,4,3);  

extern uint8_t SmallFont[]; 
extern uint8_t MediumNumbers[]; 
extern uint8_t mysymb[]; // массив из точек изображения

int seconds = 0; 

void setup() {
  myGLCD.InitLCD(); 
}

void loop() {
  myGLCD.clrScr(); // очистка экрана
  myGLCD.drawBitmap(CENTER, 0, mysymb, 48, 48); // выводим изображение
  delay (1000); // задержка 1 сек

  myGLCD.clrScr();  
  myGLCD.setFont(SmallFont); 
  myGLCD.print("Hello,", LEFT, 0);    
  myGLCD.print("SolTau.ru :-)", CENTER, 16); 
  myGLCD.setFont(MediumNumbers);  
  myGLCD.print(String(seconds), CENTER, 34);   
  delay (1000); 
  seconds += 1; 
}

Теперь нужно в коде программы объявить массив с данными изображения (у меня в коде это строка extern uint8_t mysymb[];, а в файле изображения массив называется mysymb[]), а затем используем функцию drawBitmap() для вывода изображения в нужном месте экрана.

Загрузим скетч в Arduino. Теперь текст сменяется картинкой, и счётчик каждый раз увеличивает своё значение.

Вывод изображения на ЖК экран Nokia 5110 с помощью Arduino

Оцените статью:
Оставить комментарий