Измерение освещенности на arduino и вывод на дисплей nokia 5110

Графический LCD дисплей 84×48 – Nokia 5110 и Arduino

Измерение освещенности на arduino и вывод на дисплей nokia 5110

Помните те времена, когда мобильные телефоны были “дубовые”, у них была отдельная кнопочная клавиатура и маленький монохромный жидкокристаллический дисплей?

Теперь этот рынок принадлежит всяким iPhone, Galaxy и т.п., но дисплеи находят себе новое применение: diy-проекты!

Черно-белый дисплей 84х48 пикселей, который мы будем рассматривать, использовался в телефонах Nokia 3310. Основное их преимущество – легкость в управлении. Подобный дисплей отлично впишется в ваш проект для интерактивного обмена информацией с пользователем.

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

Необходимые материалы

  • Arduino или ее клон.
  • Коннекторы.
  • Монтажная плата.

Ссылки для заказа необходимого оборудования из Китая

  • КУПИТЬ Arduino Uno R3;
  • КУПИТЬ экран nokia 5110;
  • КУПИТЬ Breadboard;

Технические характеристики дисплея 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, по которому поступает информация о том, могут ли быть отображены данные, которые передаются.

Для перечня команд, ознакомьтесь с разделом “Instructions” из даташита PCD8544 (страница 11). Есть команды, которые очищают дисплей, инвертируют пиксели, отключают питание и т.п.

Сборка и подключение дисплея 5110

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

Сборка

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

LCD дисплей от Nokia 5110, установленный на мини-монтажной плате:

Можно и напрямую запаять переходники к дисплею.

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

В данном примере мы подключим LCD дисплей к Arduino. Подобную методику можно легко адаптировать к другим платам и микроконтроллерам.

Для подключения пинов передачи данных – SCLK и DN(MOSI) – мы используем SPI пины Arduino, которые обеспечивают быструю передачу данных. Выбор чипа (SCE), перезагрузка (RST), и пин данные/управление (D/C) могут быть подключены к любому цифровому пину.

Выход от светодиода подключается к пину на Arduino, который поддерживает ШИМ-модуляцию. Благодаря этому возможна гибкая настройка яркости подсветки.

К сожалению, максимальное напряжение питания дисплея 5110 может достигать 3.6 вольт, так что подключать напрямую к стандартному выходу 5 V на Arduino нельзя. Напряжение надо настраивать. Соответственно, появляется не колько вариантов подключения.

Прямое подключение к Arduino

Самый простой вариант подключения к Arduino напрямую. В этом случае надо использовать платы Arduino Pro 3.3V/8MHz или 3.3V Arduino Pro Mini. Вариант, предложенный ниже работает с платами Arduino 5V. Это рабочий вариант, но срок работы дисплея может несколько сократиться.

Пины подключаются следующим образом:

Хороший и недорогой вариант для обеспечения дополнительной защиты – установка резисторов между пинами пинами передачи данных от Arduino к LCD 5110. Если вы используете Arduino Uno (или подобную 5-ти вольтовую плату), можно использовать резисторы номиналом 10 кОм и 1 кОм. Схема подключения дисплея с использованием резисторов приведена на рисунке ниже:

Подключение такое же как и в первом примере, но в каждой цепи сигнала установлен резистор. Резисторы на 10 кОм установлены между пинами SCLK, DN, D/C и RST. Резистор номиналом 1 кОм – между пинами SCE и пином 7. Ну и 330 Ом остается между пином 9 и пином со светодиодом. and pin 7.

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

Третий вариант подключения – с использованием преобразователей уровня для переключения между 5 и 3.3 В. Для этих целей можно использовать модули Bi-Directional Logic Level Converter или TXB0104.

К сожалению, на дисплее пять входов для сигнала 3.3 В, а на преобразователях уровня – четыре. Можно оставить выход RTS в состоянии high (подключив его с использованием резистора на 10 кОм). В результате вы лишаетесь возможности управления перезагрузкой дисплея, но все остальные функции будут доступны.

Первый пример скетча для Arduino: LCD Demo

После благополучного подключения можно переходить к загрузке скетча и отображения данных на дисплее!

Программа для Arduino

Ниже приведена ссылка, по которой вы можете скачать скетч для управления LCD. Копируйте код в Arduino IDE и загружайте на плату:

Ардуино: графический ЖК дисплей Nokia 5110

Измерение освещенности на arduino и вывод на дисплей nokia 5110

Символьный дисплей, который мы уже изучили ранее, открыл перед нами большие возможности в плане вывода информации в «человеческом» виде. Можно выводить текстовые сообщения, значения различных параметров, показания датчиков. Если.

захотеть, можно даже отобразить на символьном дисплее «псевдографику».

Но что, если нам требуется ещё больший уровень информативности? Если для понимания процесса нам нужен, например, график? Что, если мы хотим отобразить состояние робота не сигналом светодиода, а картинкой? Изобразить эмоцию?

Поможет нам в этом деле графический дисплей, а именно Nokia 5110 (или 3310). Этот вид дисплеев широко распространен в мире учебных микроэлектронных платформ, таких как Ардуино. Он легко подключается, и легко управляется даже слабыми микроконтроллерами.

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

Дисплей монохромный, имеет разрешение 84×48 точек. Как правило, дисплеи Nokia 5110, предназначенные для таких как мы с вами энтузиастов, поставляются на плате в паре с контроллером PCD8544 и штыревым разъемом. У такого дисплейного модуля есть всего 8 ног:

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

Схема подключения к Ардуино:

ЖК дисплей Nokia 5110
RST
CE
DC
DIn
Clk
Vcc
BL
Gnd

Ардуино Уно
7
6
5
4
3
+5V
+5V
GND

2. Программа. Вывод текста

Для управления дисплеем нам потребуется библиотека «Adafruit_GFX_Library», которую можно скачать с официального сайта Adafruit:

https://github.com/adafruit/Adafruit-GFX-Library/archive/master.zip

Устанавливаем библиотеку в Arduino IDE, и пробуем вывести на наш дисплей простой текст «Hello world!»:

#include #include Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 6, 7); void setup() { // инициализация и очистка дисплея display.begin(); display.clearDisplay(); display.display(); display.setContrast(50); // установка контраста delay(1000); display.setTextSize(1); // установка размера шрифта display.setTextColor(BLACK); // установка цвета текста display.setCursor(0,0); // установка позиции курсора display.println(“Hello, world!”); display.display(); } void loop() { }

Как видим, все достаточно просто. Функция setContrast — определяет контраст дисплея. Это сродни тому, как если бы мы крутим потенциометр контраста в схеме символьного дисплея. Если после запуска программы у нас на дисплее ничего не видно, или видно плохо — варьируем значение контраста.

Задаем размер шрифта функцией setTextSize. Если указываем 1, то каждая буква шрифта будет размером 5×7 пикселей. Размер 2 увеличит символы ровно в два раза по высоте и ширине.

Следующая полезная функция — setTextColor. У нас есть всего два цвета — черный и белый. Для них определены две константы: BLACK и WHITE.

Наконец, setCursor(x, y) устанавливает курсор в заданные координаты x и y, так же как в программе символьного дисплея.

Непосредственно, сам вывод текста осуществляется уже знакомой функцией println.

Если все сделать правильно, получим такую картинку:

3. Программа. Вывод геометрии

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

За отрисовку окружности отвечает функция drawCircle. Пример вызова функции для окружности с центром в точке {20,20}, радиусом 5 пикселей и черным цветом:

drawCircle(20, 20, 5, BLACK);

Теперь попробуем прямоугольник с координатами верхнего левого угла {10,10}, нижнего правого {20,20}, и цветом BLACK (черный, то бишь).

drawRect(10, 10, 20, 20, BLACK);

Функция drawRoundRect — нарисует прямоугольник со скругленными углами. Также у этих двух функций есть варианты со сплошной заливкой внутренней части фигуры: fillRect и fillRoundRect.

У треугольника следует задать все три пары координат:

drawTriangle(10, 10, 20, 10, 20, 20, BLACK);

И у него тоже есть вариант с заливкой — fillTriangle.

Наконец, просто отрезок из точки {0,0} к точке {20,20}:

drawLine(0, 0, 20, 20, BLACK);

И самое простое, что можно нарисовать — один пиксель:

drawPixel(10, 10, BLACK);

А вот как будет выглядеть программа, если мы захотим нарисовать некоторые из этих фигур, по-очереди:

#include #include Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 6, 7); void setup() { // инициализация и очистка дисплея display.begin(); display.clearDisplay(); display.display(); display.setContrast(50); // установка контраста delay(1000); } void loop() { // пиксел display.clearDisplay(); display.drawPixel(10, 10, BLACK); display.display(); delay(1000); // линия display.clearDisplay(); display.drawLine(0, 0, 50, 30, BLACK); display.display(); delay(1000); // прямоугольник display.clearDisplay(); display.drawRect(0, 0, 10, 10, BLACK); display.display(); delay(1000); // прямоугольник залитый display.clearDisplay(); display.fillRect(0, 0, 10, 10, BLACK); display.display(); delay(1000); // треугольник display.clearDisplay(); display.drawTriangle(0, 0, 40, 40, 30, 20, BLACK); display.display(); delay(1000); // окружность в центре display.clearDisplay(); display.drawCircle(display.width()/2, display.height()/2, 10, BLACK); display.display(); delay(1000); }

5. Программа. Подготовка изображений

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

Чтобы отобразить на дисплее картинку, нам потребуется привести её к нужному размеру и формату. Как уже упоминалось, дисплей Nokia 5110 имеет разрешение 84×48 точек. Значит и наша картинка должна быть точно таким же размером.

Уменьшить и обрезать картинку до требуемых размеров можно в самом простом редакторе mspaint. Там же нужно сохранить картинку в формате BMP с 256 цветами.

Следующий шаг — конвертировать bmp файл в массив нулей и единиц, который мы и вставим в программу для Arduino. Для конвертации воспользуемся онлайн сервисом на нашем сайте: http://git.robotclass.ru/tools/bmptobin.html

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

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

#include #include Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 6, 7); const unsigned char PROGMEM smileBmp[] = { 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x80, 0x0, 0x0, 0x3c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0x7e, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0xc0, 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x79, 0xc0, 0x0, 0x0, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x71, 0xc0, 0x0, 0x1, 0xef, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x73, 0xc0, 0x0, 0x1, 0xc7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x73, 0xc0, 0x0, 0x1, 0xc7, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x80, 0x0, 0x1, 0xef, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0x0, 0x0, 0x0, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3f, 0x0, 0x0, 0x0, 0xfc, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1e, 0x0, 0x0, 0x0, 0x78, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1c, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1f, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xf0, 0x0, 0x0, 0x0, 0x1, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0x0, 0x0, 0x0, 0xff, 0xf0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x7f, 0xfc, 0x0, 0x7, 0xff, 0xe0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xf, 0xff, 0xff, 0xff, 0xfe, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x1, 0xff, 0xff, 0xff, 0x80, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x3, 0xff, 0xf8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0 }; void setup() { // инициализация и очистка дисплея display.begin(); display.clearDisplay(); display.display(); // установка контраста display.setContrast(50); delay(1000); // отрисовка изображения display.drawBitmap(0, 0, smileBmp, 84, 44, BLACK); display.display(); } void loop() { }

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

Вот и все на сегодня! В следующем уроке на тему Nokia 5110 мы попробуем анимировать изображение на дисплее. Попробуем даже сделать небольшую игру!

Как подключить LCD дисплей для Nokia 5110 к Arduino

Измерение освещенности на arduino и вывод на дисплей nokia 5110

Разбираемся с подключением жидкокристаллического монохромного дисплея с разрешением 84×48 точек от Nokia 5110 к Arduino.

  • Arduino;
  • ЖК дисплей для Nokia 5110/3310;
  • соединительные провода.

Подключим ЖК экран от Nokia 5110 к Arduino по приведённой схеме.

Схема подключения ЖК экрана Nokia 5110 к Arduino

Пин ArduinoПин экрана Nokia 5110НазваниеФункция

3,3 V
1
Vcc
Питание экрана, от 2,7 до 3,3 В

GND
2
GND
Земля

3
3
SCE
Enable, активный LOW

4
4
Reset
Reset, активный LOW

5
5
D/C
Выбор «Данные/команда»:”0″ – данные, “1” – команда

6
6
SDN
Вход данных

7
7
SCLK
Вход тактовых импульсов

3,3 V
8
LED
Светодиодная подсветка экрана

Будьте внимательны, некоторые модификации экрана (китайские копии), имеют другую нумерацию выводов. Также на некоторых модификациях экрана вывод подсветки подключается к GND, а не Vcc.

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

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

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

ФункцияНазначение

LCD5110(SCK, MOSI, DC, RST, CS)
объявление ЖК экрана с указанием соответствия пинам Arduino;

InitLCD([contrast])
инициализация дисплея 5110 с опциональным указанием контрастности (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)
выводит строку символов с заданными координатами; вместо x-координаты можно использовать LEFT, CENTER и RIGHT; высота стандартного шрифта 8 точек, поэтому строки должны идти с интервалами через 8;

printNumI(num, x, y, [length], [filler])
вывести целое число на экран на заданной позиции (x, y); length – желаемая длина числа; filler – символ для заполнения «пустот», если число меньше желаемой длины; по умолчанию это пустой пробел ” “;

printNumF(num, dec, x, y, [divider], [length], [filler])
вывести число с плавающей запятой; dec – число знаков после запятой; divider – знак десятичного разделителя, по умолчанию точка “.”;

setFont(name)
выбрать шрифт; встроенные шрифты называются SmallFont и TinyFont; вы можете определить свои шрифты в скетче;

invertText(true), invertText(false)
инверсия текста вкл./выкл.;

drawBitmap(x, y, data, sx, sy)
вывести картинку на экран по координатам x и y; data – массив, содержащий картинку; sx и sy – ширина и высота рисунка.

3Скетч для вывода текста на ЖК экран Nokia 5110

Напишем такой скетч.

#include // подключаем библиотеку LCD5110 myGLCD(7,6,5,4,3); // объявляем номера пинов LCD extern uint8_t SmallFont[]; // малый шрифт (из библиотеки) extern uint8_t MediumNumbers[]; // средний шрифт для цифр (из библиотеки) int seconds = 0; // счётчик секунд void setup() { myGLCD.InitLCD(); // инициализация LCD дисплея } void loop() { myGLCD.clrScr(); // очистка экрана myGLCD.setFont(SmallFont); // задаём размер шрифта myGLCD.print(“Hello,”, LEFT, 0); // выводим на строке 0, равнение по левому краю myGLCD.print(“SolTau.ru :-)”, CENTER, 16); // выводим в строке 16 myGLCD.setFont(MediumNumbers); // задаём размер шрифта myGLCD.print(String(seconds), CENTER, 34); // выводим в строке 34 seconds += 1; // инкрементируем счётчик delay (1000); // задержка 1 сек }

Сначала подключаем библиотеку, затем объявляем экземпляр класса LCD5110 с назначением выводов. В процедуре setup() инициализируем ЖК экран. В процедуре loop() очищаем экран и пишем маленьким шрифтом произвольный текст, под ним – средним шрифтом выводим счётчик секунд.

Вывод текстовых данных на LCD экран Nokia 5110 с помощью Arduino

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

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

Воспользуемся онлайн-инструментом для преобразования изображения в массив битов. Скачаем полученный файл с расширением “*.

c” и добавим его к проекту через меню: Эскиз Добавить файл… или просто поместим файл в директорию скетча, а затем перезагрузим среду разработки Arduino IDE.

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

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

#include 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 с помощью ArduinoLCD экран Nokia 5110 и Arduino

NOKIA 5110 ARDUINO

Измерение освещенности на arduino и вывод на дисплей nokia 5110

На мой взгляд наиболее интересный дисплей, для подключения к ARDUINO, это дисплей от сотового телефона NOKIA 5110. 

Дисплей графический. Разрешение 48*84 пикселя. Выводить на него можно графическую или текстовую информацию. При этом шрифт и размер букв можно сделать любой. Он получил широкое распространение. Имеет необходимые библиотеки для работы и выпускается в виде готового модуля со стандартным разъемом и встроенной подсветкой.

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

Я буду рассматривать вариант у которого подсветка уже имеет токоограничивающие резисторы

 Перемычка JP1 включает подсветку освобождая один провод

 Подключаем модуль по следующей схеме

//     5110     ARDUINO

//  Pin 1 – RST  – Pin 12

//  Pin 2 – CE   – Pin 11

//  Pin 3 – DC   – Pin 10

//  Pin 4 – DIN  – Pin 9

//  Pin 5 – CLK  – Pin 8

//  Pin 6      –       3.3V     

//  Pin 7 – LIGHT -GND

//  Pin 8      –       GND   

 Для работы потребуется библиотека из архива, работает с Arduino 1.0

Основные функции

1. Текст

myGLCD.print(“PROBA”, CENTER, 0);

Выводит надпись PROBA начиная с “0” строки по центру (варианты LEFT, CENTER, RIGHT). Если указать номер строки например 44, то мы увидим только верхнюю половину букв. Для вывода цифровых переменных используется функция

myGLCD.printNumI(DHT11.humidity, CENTER, 20);

2. Линии

myGLCD.drawLine(0, 0, 83, 47);

Рисует диагональ

3. Прямоугольник

myGLCD.drawRect(26, 16, 58, 30);

Рисует прямоугольник в центре экрана длиной 32 и высотой 14 пикселей. Команда drawRoundRect рисует прямоугольник с закругленными краями

4. Окружность

myGLCD.drawCircle(41, 23, 28);

Рисует окружность в центре экрана (41, 23) радиусом 28, поэтому мы увидим две дуги слева и справа, верх и низ “за кадром”. Пиксели не квадратные, они вытянуты вверх. Поэтому и огружность вытянута по вертикали. 

5. Очистка экрана

myGLCD.clrScr();

6. Вывод картинки

extern uint8_t video[];

myGLCD.drawBitmap(0, 0, video, 84, 48);

Картинка кодируется в массив из 84*48=504 чисел. Каждое число отвечает за колонку из 8 пикселей. Для примера число (HEX) = 143 (DEC) = 10001111 (BIN) будет выглядеть на экране следующим образом (Ж-пиксель горит, . – пиксель погашен)

Ж

Ж

Ж

Ж

.

.

.

Ж

В примере массив video записан так

uint8_t video[] PROGMEM={

0x00,0x00,0x00,0x00,0x00,0xFC,0x08,0x30,0x08,0xFC,0x00,0x78,0x84,0x84,0x84,

0x48,0x00,0x7C,0x80,0x80,0x80,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x80,0xC0,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,0xFC,0x24,0x24,0x24,0xD8,0x00,0x78,0x84,0x84,0x84,0x48,

0x00,0xF0,0x28,0x24,0x28,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x04,0x04,

0x84,0x84,0x84,0x84,0x04,0x84,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,

0x04,0x04,0xFC,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,

0x1F,0x00,0x00,0x1F,0x04,0x0A,0x11,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,0x04,0x04,0x04,

0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x04,

0x04,0xFC,0x00,0x00,0x00,0x00,0xFF,0x00,0x23,0x24,0x24,0x24,0x18,0x00,0x3E,

0x00,0x3E,0x04,0x02,0x3C,0x00,0x1C,0x22,0x22,0x22,0x00,0xFF,0x04,0x04,0x04,

0x04,0x04,0x04,0x04,0x04,0x1F,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11,

0x11,0x11,0x11,0x1F,0x04,0x04,0x04,0x04,0x04,0x04,0xFC,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,

0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,

0x00,0xE0,0x00,0x20,0x20,0xA0,0x60,0x00,0xC0,0x20,0x20,0xC0,0x00,0x00,0x00,

0x00,0x00,0x00,0x70,0xFF,0x70,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0xFF,

0x00,0x7C,0x80,0x00,0x80,0x7C,0x00,0x04,0xFC,0x04,0x00,0xFC,0x04,0x04,0x04,

0xF8,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0xC0,0x00,

0x00,0x00,0xC0,0x00,0x40,0xC0,0x40,0x00,0xC0,0x40,0x40,0x40,0x80,0x00,0xFF,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x81,0x81,0x8F,0x80,0x80,0x8F,0x80,

0x80,0x80,0x87,0x88,0x88,0x87,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,0x01,0x00,0x00,

0x00,0x01,0x01,0x01,0x00,0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0xFF,0x00,

0x00,0x00,0x00,0x1F,0x00,0x00,0x00,0x07,0x08,0x10,0x08,0x07,0x00,0x10,0x1F,

0x10,0x00,0x1F,0x10,0x10,0x10,0x0F,0x00,0x1F,0x02,0x02,0x02,0x02,0x02,0x02,

0x02,0x02,0x0F,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,

0x0F,0x02,0x02,0x02,0x02,0x02,0x02,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,

и выводит на экран кусочек схемы подключения ARDUINO к ТВ

Кодировал картинку в массив при помощи самостоятельно написанного макроса для EXCEL. Просто и доступно практически каждому. (можно посмотреть в архиве)

Пока архив не создан предлагаю ознакомится с примером использования практически всех функций

//     5110    ARDUINO

//  Pin 1 – RST  – Pin 12

//  Pin 2 – CE   – Pin 11

//  Pin 3 – DC   – Pin 10

//  Pin 4 – DIN  – Pin 9

//  Pin 5 – CLK  – Pin 8

//  Pin 6 – 3.3V     

//  Pin 7 – GND

//  Pin 8 – GND    

//

#include

LCD5110 myGLCD(8,9,10,12,11);

extern uint8_t SmallFont[];

extern uint8_t arduino_logo[];

extern unsigned char TinyFont[];

extern uint8_t The_End[];

extern uint8_t pacman1[];

extern uint8_t pacman2[];

extern uint8_t pacman3[];

extern uint8_t pill[];

float y;

uint8_t* bm;

int pacy;

void setup()

{

  myGLCD.InitLCD(); // в качестве параметра можно указать контрастность (0-127), по умолчанию 79

  myGLCD.setFont(TinyFont);

  randomSeed(analogRead(7));

}

void loop()

{

  myGLCD.clrScr();

  myGLCD.drawBitmap(0, 0, arduino_logo, 84, 48);

  myGLCD.update();

  delay(2000);

  myGLCD.clrScr();

  myGLCD.print(“LCD5110_Graph”, CENTER, 0);

  myGLCD.print(“DEMO”, CENTER, 20);

  myGLCD.drawRect(28, 18, 56, 28);

  for (int i=0; i

Как подключить LCD дисплей для Nokia 5110 к Arduino

Измерение освещенности на arduino и вывод на дисплей nokia 5110

Вам понадобится

  • – Arduino;
  • – ЖК дисплей для Nokia 5110/3310;
  • – соединительные провода.

Инструкция

Подключим ЖК экран от Nokia 5110 к Arduino по приведённой схеме.

Для работы с этим LCD экраном написано много библиотек. Предлагаю воспользоваться этой: http://www.rinkydinkelectronics.com/library.php?id=44 (скачивание файла LCD5110_Basic.zip).

Для установки разархивируем файл в директорию Arduino IDE/libraries/.Библиотека поддерживает следующие возможности.

LCD5110(SCK, MOSI, DC, RST, CS); – объявление ЖК экрана с указанием соответствия пинам Arduino;

InitLCD([contrast]); – инициализация дисплея 5110 с опциональным указанием контрастности (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); – выводит строку символов с заданными координатами; вместо x-координаты можно использовать LEFT, CENTER и RIGHT; высота стандартного шрифта 8 точек, поэтому строки должны идти с интервалами через 8;
printNumI(num, x, y, [length], [filler]); – вывести целое число на экран на заданной позиции (x, y); length – желаемая длина числа; filler – символ для заполнения “пустот”, если число меньше желаемой длины; по умолчанию это пустой пробел ” “;
printNumF(num, dec, x, y, [divider], [length], [filler]); – вывести число с плавающей запятой; dec – число знаков после запятой; divider – знак десятичного разделителя, по умолчанию точка “.”;
setFont(name); – выбрать шрифт; встроенные шрифты называются SmallFont и TinyFont; вы можете определить свои шрифты в скетче;
invertText(true); и invertText(false); – инверсия текста вкл./выкл.;
drawBitmap(x, y, data, sx, sy); – вывести картинку на экран по координатам x и y; data – массив, содержащий картинку; sx и sy – ширина и высота рисунка.

Напишем такой скетч. Сначала подключаем библиотеку, затем объявляем экземпляр класса LCD5110 с назначением выводов.
В процедуре setup() инициализируем ЖК экран.
В процедуре loop() очищаем экран и пишем маленьким шрифтом произвольный текст, под ним – средним шрифтом выводим счётчик секунд.

Давайте выведем на экран картинку. Для этого подготовим монохромное изображение, которое хотим вывести на экран Nokia 5110. Помните, что разрешение экрана 48 на 84 точки, и картинка должна быть не больше. На странице http://www.rinkydinkelectronics.

com/t_imageconverter_mono.php преобразуем изображение в массив битов. Скачаем полученный файл с расширением “*.c” и добавим его к проекту через меню: Эскиз -> Добавить файл…

или просто поместим файл в директорию скетча, а затем перезагрузим среду разработки Arduino IDE.

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

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

  • Спецификация на LCD дисплей для Nokia 5110
  • Подготовка массива бит из файла изображения
  • Купить дисплей Nokia 5110 LCD с белой подсветкой по цене 85 грн

Записки программиста

Измерение освещенности на arduino и вывод на дисплей nokia 5110

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

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

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

Примечание: Другие посты по теме экранчиков — Научился выводить текст на ЖК-индикатор из Arduino, Об использовании экранчиков 1602 с I2C-адаптером, Работаем с LCD на базе HD44780 без библиотек, и Цифровой термометр из ЖК-матрицы, TMP36 и Arduino.

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

Экранчик от Nokia 5110 являются очень распространенным самостоятельным модулем для радиолюбителей и стоит где-то от 2 до 5$, в зависимости от магазина. В России модуль можно купить, например, на tpai.ru, arduino-kit.ru, amperkot.ru, compacttool.ru, chipster.ru или electromicro.ru.

Ну и, конечно же, по самой низкой цене экранчики продаются на AliExpress, но придется подождать месяц или два, пока они придут из Китая.

Как это часто бывает в мире Arduino, для модуля уже существуют готовые библиотеки, и не одна. Мне понравилась библиотека LCD5110, выложенная на сайте rinkydinkelectronics.com. У этой библиотеки есть две версии. Первая называется LCD5110_Basic.

Она попроще и способна выводить только текст шрифтами разного размера. Есть возможность создания собственных шрифтов. Вторая версия называется LCD5110_Graph.

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

В рамках этого поста будет использована LCD5110_Basic. Обе библиотеки прекрасно документированы и имеют множество примеров использования, так что при необходимости в LCD5110_Graph вы без труда разберетесь самостоятельно. Стоит однако отметить, что чтобы LCD5110_Basic компилировалась без warning’ов, мне пришлось внести пару небольших правок в ее код.

Итак, пример использования библиотеки:

#include

extern uint8_t BigNumbers[];

extern uint8_t MediumNumbers[];
extern uint8_t SmallFont[];

/* SCK / CLK, MOSI / DIN, DC, RST, CS */

LCD5110 lcd(2, 3, 4, 6, 5);

void setup()

{
  lcd.InitLCD();
}

int ctr = 0;

void loop()
{
  lcd.clrScr();

  lcd.setFont(BigNumbers);

  lcd.printNumI(ctr, RIGHT, 0);

  lcd.setFont(MediumNumbers);

  lcd.printNumF(12.34, 2, RIGHT, 24);

  lcd.setFont(SmallFont);

  lcd.print(“Line 1”, 0, 8*0);
  lcd.print(“Line 2”, 0, 8*1);
  lcd.print(“Line 3”, 0, 8*2);
  lcd.print(“L 4”,    0, 8*3);
  lcd.print(“L 5”,    0, 8*4);
  lcd.print(“0123456789ABCD”, 0, 8*5);

  ctr += 5;

  if(ctr >= 1000)
    ctr = 0;

  delay(500);

}

Как это выглядит в действии:

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

Соответственно, пины VCC (питание) и BL (подсветка) подключаем к 3.3 В, GND подключаем к земле, остальные пять пинов подключаем к цифровым пинам Arduino.

Номера пинов передаем конструктору класса LCD5110 в соответствии с комментариями в приведенном коде.

Просто, не правда ли? Полную версию исходников к этой заметке вы найдете в этом репозитории на GitHub. Дополнения и вопросы, как всегда, всячески приветствуются.

Дополнение: Автор библиотеки для работы с экранчиком от Nokia 5110 также является автором библиотеки OLED_I2C, предназначенной для работы с не менее популярными OLED-экранчиками с I2C-интерфейсом. Пример использования OLED_I2C вы найдете в посте Используем джойстик от Sega Genesis в проектах на Arduino. Как можно было ожидать, эти две библиотеки имеют похожий интерфейс.

Библиотека LCD5110_Graph

Измерение освещенности на arduino и вывод на дисплей nokia 5110

Размер символа: 6 х 8 пикселей

Размер символа: 12 х 16 пикселей

Размер символа: 14 х 24 пикселей

LCD5110(SCK, MOSI, DC, RST, CS);

Инициализация библиотеки с указанием выводов (пинов) подключения к Arduino

Параметры:

   SCK (CLK): Тактирующий вывод для последовательного интерфейса SPI

   MOSI (Din): Вход данных последовательного интерфейса SPI 

   DC (DC):  Вывод выбора режима ввода данных – Данные/Команды

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

   CS (CE): Состояние данного вывода разрешает или запрещает ввод данных в контроллер дисплея

Пример: LCD5110 myGLCD(3, 4, 5, 6, 7); // Инициализация библиотеки с указанием пинов подключения к Arduino

Примечания: В скобках подписаны выводы так же как они подписаны на дисплее.

InitLCD([contrast]);

Инициализация дисплея

Параметры:

contrast:

Указание значения контраста дисплея (0-127). По умолчанию 70

Пример: myGLCD.InitLCD(); // Инициализация дисплея

Примечания: Данная функция выполняет сброс и очистку дисплея.

setContrast(contrast);

Установка контрастности дисплея

Параметры:

contrast: Указание значения контраста дисплея (0-127)

Пример: myGLCD.setContrast(70); // Установка значения контраста, равным 70 (значение  по умолчанию)

enableSleep();

Перевод дисплея в режим ожидания.

Параметры: нет

Пример: myGLCD.enableSleep(); // Перевод дисплея в режим ожидания

Примечания: Перевод дисплея в режим ожидания не отключает подсветку, т.к. подсветка управляется аппаратно.

disableSleep();

Вывод дисплея из режима ожидания

Параметры: нет

Пример: myGLCD.disableSleep(); // Вывод дисплея из режима ожидания

Примечания: При выходе из режима ожидания происходит очистка экрана. Выход из режима ожидания не включает подсветку, т.к. подсветка управляется аппаратно.

update();

Копирование содержимого буфера экрана на экран.

Параметры: нет

Пример: myGLCD.update();  // Копирование содержимого буфера экрана на экран

Примечания: Необходимо выполнять команду update() после каждого обновления буфера экрана.

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

clrScr();

Очистка буфера экрана.

Параметры: нет

Пример: myGLCD.clrScr();  // Очистка буфера экрана

fillScr();

Заполнение буфера экрана.

Параметры: нет

Пример: myGLCD.fillScr();  // Заполнение буфера экрана

invert(mode);

Инвертировать изображение на экране

Параметры:

mode – true – инверсное изображение

              false – нормальное изображение

Пример: myGLCD.invert(true); // Изображение на экране инвертное

setPixel(x, y);

Включение указанного пикселя в буфере экрана,

Параметры: 

     х: координата пикселя по горизонтали

     y: координата пикселя по вертикали

Пример: myGLCD.setPixel (0,0); // Включить верхний левый пиксель (в буфере экрана)

clrPixel(x,y);

Выключение указанного пикселя в буфере экрана,

Параметры: 

     х: координата пикселя по горизонтали

     y: координата пикселя по вертикали

Пример: myGLCD.clrPixel(0,0); // Выключить верхний левый пиксель (в буфере экрана)

invPixel(x,y);

Инвертировать состояние указанного пикселя в буфере экрана

Параметры: 

     х: координата пикселя по горизонтали

     y: координата пикселя по вертикали

Пример: myGLCD.invPixel(0, 0); // Инвертировать верхний левый пиксель (в буфере экрана)

print(st, x, y);

Распечатать строку в указанных координатах

Можно использовать как литералы LEFT, CENTER и RIGHT, так и числовые координаты, чтобы выровнять строку на экране.

Параметры:

     st: строка для печати

     x: координата верхнего левого угла первого символа по горизонтали

     y: координата верхнего левого угла первого символа по вертикали

Пример: myGLCD.print(“Hello World”,CENTER,0); // Печать строки “Hello World” по центру в верхней части экрана

Примечания: координата по вертикали должна быть кратной 8-ми пикселям. Только 0, 8, 16, 24, 32 и 40 могут быть использованы в качестве координат по вертикали.

Строка для печати может быть либо массив символов или строковый объект

printNumI(num, x, y[, length[, filler]]);

Распечатать целое число в указанных координатах.

Можно использовать как литералы LEFT, CENTER и RIGHT, так и числовые координаты, чтобы выровнять строку с числом на экране.

Параметры:

     num: Число для вывода на экран (от -2147483648 до 2147483647). Допускаются только ЦЕЛЫЕ числа

     x: координата верхнего левого угла первой цифры/знака по горизонтали

     y: координата верхнего левого угла первой цифры/знака по вертикали

     length: минимальное количество цифр / символов (включая знак) для отображения на экране

     filler: Символ для заполнения, чтобы получить минимальную длину.Символ будет вставлен перед номером, но после знака. Умолчанию '' ” (пробел).

Пример: myGLCD.printNumI(num,CENTER,0); // Печать значения переменной “num” по центру в верхней части экрана

Примечания: координата по вертикали должна быть кратной 8-ми пикселям. Только 0, 8, 16, 24, 32 и 40 могут быть использованы в качестве координат по вертикали.

printNumF(num, dec, x, y[, divider[, length[, filler]]]);

Распечатать число с плавающей точкой в указанных координатах.

Можно использовать как литералы LEFT, CENTER и RIGHT, так и числовые координаты, чтобы выровнять строку с числом на экране.

Параметры:

     num: Число для вывода на экран

     Dec: количество цифр после запятой (в дробной части) (допустимые значения 1-5). Число 0 не поддерживается, для этого используйте printNumI ()

     x: координата верхнего левого угла первой цифры/знака по горизонтали

     y: координата верхнего левого угла первой цифры/знака по вертикали

     divider: Одиночный символ для использования в качестве десятичной точки. По умолчанию '.'

     length: минимальное количество цифр / символов (включая знак) для отображения на экране

     filler: Символ для заполнения, чтобы получить минимальную длину.Символ будет вставлен перед номером, но после знака. Умолчанию '' ” (пробел).

Пример: myGLCD.printNumF(num, 3, CENTER,0); // Печать значения переменной “num” с 3-мя знаками после запятой по центру в верхней части экрана

Примечания: Поддерживаемые диапазон зависит от количества цифр в дробной части.

Диапазон приблизительный +/- 2 * (10 в степени 9) – для десятичной системы.

Координата по вертикали должна быть кратной 8-ми пикселям. Только 0, 8, 16, 24, 32 и 40 могут быть использованы в качестве координат по вертикали.

invertText(mode);

Инвертировать текст на экране

Параметры:

     mode – true – инверсное изображение

                  false – нормальное изображение

Пример: myGLCD.invertText(true); // Изображение текста инвертное

Примечания: функция SetFont() отключает инвертный режим

setFont(fontname);

Выбор шрифта для использования совместно с Print(), printNumI() и printNumF()

Параметры:

     fontname: Имя массива, содержащий шрифт, для использования

Пример: myGLCD.setFont(SmallFont); // Выбор шрифт под названием SmallFont

Примечания: Перед использованием необходимо объявить массив со шрифтом  в качестве внешнего или включить его в свой скетч.

drawLine(x1, y1, x2, y2);

Рисование линии между двумя точками в буфере экрана

Параметры: 

     x1: координата начальной точки по горизонтали

     y1: координата начальной точки по вертикали

     x2: координата конечной точки по горизонтали

     y2: координата конечной точки по вертикали

Пример: myGLCD.drawLine(0,0,83,47); // Рисуем линию от верхнего левого в нижний правый угол

clrLine(x1, y1, x2, y2);

Стирание линии между двумя точками в буфере экрана.

Параметры: 

     x1: координата начальной точки по горизонтали

     y1: координата начальной точки по вертикали

     x2: координата конечной точки по горизонтали

     y2: координата конечной точки по вертикали

Пример: myGLCD.clrLine(0,0,83,47) // Стираем линию от верхнего левого в нижний правый угол

drawRect(x1, y1, x2, y2);

Рисование прямоугольника между двумя точками в буфере экрана.

Параметры:

     x1: координата начального угла по горизонтали

     y1: координата начального угла по вертикали

     х2: координата конечного угла по горизонтали

     y2: координата конечного угла по вертикали

Пример: myGLCD.drawRect (42,24,83,47); // Рисуем прямоугольник в правом нижнем углу экрана

clrRect(x1, y1, x2, y2);

Стирание прямоугольника между двумя точками в буфере экрана.

Параметры:

     x1: координата начального угла по горизонтали

     y1: координата начального угла по вертикали

     х2: координата конечного угла по горизонтали

     y2: координата конечного угла по вертикали

Пример: myGLCD.clrRect(42,24,83,47); // Стираем прямоугольник в правом нижнем углу экрана

drawRoundRect(x1, y1, x2, y2);

Нарисовать прямоугольник со слегка закругленными углами между двумя точками в экранном буфере.

Минимальный размер прямоугольника составляет 5 пикселей в любых направлениях. Если размер меньше рекомендуемого прямоугольник не будет нарисован.

Параметры:

     x1: координата начального угла по горизонтали

     y1: координата начального угла по вертикали

     х2: координата конечного угла по горизонтали

     y2: координата конечного угла по вертикали

Пример: myGLCD.drawRoundRect(0,0,41,23); // Нарисовать прямоугольник с закругленными углами в левом верхнем углу экрана

clrRoundRect(x1, y1, x2, y2);

Стереть прямоугольник со слегка закругленными углами между двумя точками в экранном буфере.

Минимальный размер прямоугольника составляет 5 пикселей в любых направлениях. Если размер меньше рекомендуемого прямоугольник не будет удален/стерт.

Параметры:

     x1: координата начального угла по горизонтали

     y1: координата начального угла по вертикали

     х2: координата конечного угла по горизонтали

     y2: координата конечного угла по вертикали

Пример: myGLCD.clrRoundRect(0,0,41,23); // Стереть прямоугольник с закругленными углами в левом верхнем углу экрана

drawCircle(x, y, radius);

Нарисовать круг с заданным радиусом в буфере экрана.

Параметры:

     х: координата центра окружности по горизонтали

     y: координата центра окружности по вертикали

     radius: радиус окружности в пикселях

Пример: myGLCD.DrawCircle (41,23,20); // Рисуем круг в центре экрана с радиусом 20 пикселей

clrCircle(x, y, radius);

Стереть круг с заданным радиусом в буфере экрана.

Параметры:

     х: координата центра окружности по горизонтали

     y: координата центра окружности по вертикали

     radius: радиус окружности в пикселях

Пример: myGLCD.clrCircle(41,23,20); // Рисуем круг в центре экрана с радиусом 20 пикселей

Оцените статью
Просто о технологиях
Добавить комментарии

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: