Текстовой дисплей для удаленной связи с офисом на базе arduino uno

Основы взаимодействия Ардуино и дисплея LCD

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

Эти ЖК-дисплеи используются для отображения информации от микроконтроллера или любого подключенного к нему датчика. Например, можно создать систему контроля температуры, которая отображает данный показатель на Arduino.

Можно сконструировать собственный спидометр, который отображает скорость на экране.

Вам точно пригодится: Генератор Символов LCD

В этом учебном пособии по Ардуино LCD вы найдете интерфейс с символами Arduino LCD i2c. Вы можете использовать информацию из этого текста для создания собственных проектов на основе ЖК-монитора.

Суть соединения дисплея с Ардуино

Display для Аrduino – это одно из самых простых устройств, которое можно использовать для отображения результатов проектов. Однако есть два различных типа данного устройства: графические и символьные. В этой статье используется персональный экран, так как он легче всего работает. Кроме того, в зависимости от размера экрана, существуют разные типы:

  • 16×2 символьный – 16 колонок и 2 строки;
  • 20×4 символов – 20 колонок и 4 строки.

Они также доступны в разных цветах:

  1. Зеленые с черными символами.
  2. Синие с белыми символами.
  3. Красные с черными символами.

Тем не менее, зеленые и синие экраны являются наиболее распространенными. Другие цвета встречаются редко. В этом уроке используется Аrduino display с синим символом 20×4. Микропроцессор взаимодействует с экраном через четыре линии передачи данных. Мы задействуем цифровые контакты на микроконтроллере, чтобы взаимодействовать с дисплеем и отображать на нем то, что мы хотим.

Подсветка на ЖК-дисплее активируется, когда дается питание 5 В от микроконтроллера до 15 на мониторе и заземляющим штырем 16. Кроме того, для регулировки контрастности сенсорного дисплея для Ардуино нужен потенциометр 10K.

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

Для создания дисплея для Ардуино понадобится следующее оборудование:

  1. Микроконтроллер Ардуино или Genuino.
  2. ЖК-экран, совместимый с драйвером Hitachi HD44780.
  3. Штыревые разъемы для припаивания к выводам ЖК-дисплея.
  4. Потенциометр 10 кОм.
  5. 220 Ом резистор.
  6. Соединительные провода.
  7. Макет.

ЖК-мониторы, совместимые с Hitachi; ими можно управлять в двух режимах: 4-битном или 8-битном. Для 4-битного режима требуется семь выводов ввода/вывода от Arduino LCD, а для 8-разрядного режима требуется 11 контактов. Для отображения текста на экране вы можете делать все в 4-битном режиме, поэтому пример показывает, как управлять 2×16 ЖК-дисплеем в 4-битном режиме.

Теперь мы можем попробовать отобразить что-то на дисплее через Arduino ssd1306. Прежде чем вы это сделаете, вам необходимо загрузить библиотеку Arduino по ссылке – LiquidCrystal.

Затем нужно извлечь папку «LiquidCrystal» из файла загрузки. А после скопируйте и вставьте папку «LiquidCrystal» в каталог микропроцессора, пример конечной директории результатов должен выглядеть так: arduino-1.

0.5librariesLiquidCrystal.

Код LiquidCrystal Ардуино

Затем откройте свою среду разработки и перейдите к:

Файл → Примеры → LiquidCrystal → HelloWorld

Загрузите код в микроконтроллер. Пользователь увидит следующую информацию:

ЖК-дисплей Ардуино

Обратите внимание, если вы используете экран 16×2, отредактируйте lcd.begin (20,4) на lcd.begin (16,2).

Процесс сборки

Первый шаг – припаять 16-контактные штыревые разъемы на Аrduino display. Затем вы можете использовать либо 16-контактный разъем для подключения к Ардуино, либо просто использовать разъем «женщина-женщина». Если вы впервые подключаетесь к микроконтроллеру, проще всего использовать макет.

Исходные соединения для светодиодного экрана и Arduino

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

  • Подключите контакт 15 на мониторе к контакту 5V от Arduino 128х64 lcd spi.
  • Затем подключите вывод 16 на устройстве к выходу GND.

Эти контакты используются для питания подсветки ЖК-дисплея. Затем вам нужно настроить логические операции для устройства.

  • Для этого подключите вывод 1 на мониторе к выходу GND Arduino. Затем подключите контакт 2 на экране к выходу 5V Ардуино.
  • Затем вам нужно настроить потенциометр регулировки контрастности.

Возьмите потенциометр 10K и подключите первую клемму к выходу 5V Arduino, а второй – к контакту 3 и третьему терминалу к выходу GND.

Затем включите микропроцессор. Вы заметите, что подсветка на ЖК-дисплее включена. Кроме того, когда вы поворачиваете ручку на потенциометре, блоки символов на ЖК-дисплее становятся яркими/тусклыми.

Посмотрите картинку ниже, чтобы узнать, о чем я говорю.

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

https://www.youtube.com/watch?v=t9AcsxQv-5k

Регулировка контрастности на устройстве

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

Конечные соединения между Arduino, потенциометром и устройством

Начнем с подключения контрольных проводов для ЖК-дисплея. Подключите контакт 5 (RW) монитора к контакту GND от Arduino.

Этот контакт не используется и служит для чтения/записи. Затем подключите контакт 4 (RS) экрана к цифровому выходу 7 Arduino.

Штырек RS используется для указания на ЖК-дисплее, отправляем ли мы данные или команды (чтобы изменить положение курсора).

Затем подключите контакт 6 (EN) ЖК-дисплея к цифровому выходу Arduino 8. EN – это контактное гнездо на устройстве, оно используется, чтобы сообщить монитору, что данные готовы для чтения.

Затем мы должны подключить четыре вывода данных на устройстве. Подсоедините контакт 14 (DB7) экрана к цифровому выступу 12 Arduino. Затем подключите контакт 13 (DB6) монитора к цифровому выходу 11 Arduino. Затем вывод 12 на мониторе (DB5) на цифровой вывод 10, затем Вывод LCD № 11 (DB4) на цифровой вывод 9.

Вот и все, вы закончили подключать ЖК-дисплей к Arduino. Вы заметите, что между управляющими выводами и выводами данных на ЖК-дисплее есть четыре несвязанных контакта, как показано ниже.

Паяные 16-контактные разъемы

Запуск и тестирование

Попробуйте переделать код для сенсорного устройства. В принципе, для управления текстом на ЖК-дисплее есть три основные функции:

  1. begin (итоговые столбцы, общие строки). Эта функция используется внутри setup () для инициализации размера используемого дисплея. Если это 20×4, то: lcd.begin (20,4), иначе, если это 16×2, тогда: lcd.begin (16,2).
  2. setCursor (номер столбца, номер строки) – эта функция помещает курсор на устройстве в нужное положение. Любой текст, отображаемый после этой функции, начнется с указанной вами позиции. Например, используйте: lcd.setCursor (4,0), т. е. пятый столбец и первую строку (начиная с 0,0).
  3. print («текст») – эта функция используется для печати текста на ЖК-дисплее. Какая бы ни была строка внутри «», она отображается на дисплее.

Вот и все, теперь можно добавить полученное устройство к проектам.

Больше интересного ↓

Источник: https://ArduinoPlus.ru/arduino-displei/

Подключение дисплея LCD 1602 к arduino по i2c / IIC

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

Выходом в этой ситуации может стать I2C /IIC переходник, который подключает практически стандартный для Arduino экран 1602 к платам Uno, Nano или Mega всего лишь при помощи 4 пинов.

В этой статье мы посмотрим, как можно подключить LCD экран с интерфейсом I2C, какие можно использовать библиотеки, напишем короткий скетч-пример и разберем типовые ошибки.

Жк дисплей arduino lcd 1602

Жидкокристаллический дисплей (Liquid Crystal Display) LCD 1602 является хорошим выбором для вывода строк символов в различных проектах. Он стоит недорого, есть различные модификации с разными цветами подсветки, вы можете легко скачать готовые библиотеки для скетчей Ардуино.

Но самым главным недостатком этого экрана является тот факт, что дисплей имеет 16 цифровых выводов, из которых обязательными являются минимум 6. Поэтому использование этого LCD экрана без i2c добавляет серьезные ограничения для плат Arduino Uno или Nano.

Если контактов не хватает, то вам придется покупать плату Arduino Mega или же сэкономить контакты, в том числе за счет подключения дисплея через i2c.

Краткое описание пинов LCD 1602

Давайте посмотрим на выводы LCD1602 повнимательней:

Каждый из выводов имеет свое назначение:

  1. Земля GND;
  2. Питание 5 В;
  3. Установка контрастности монитора;
  4. Команда, данные;
  5. Записывание и чтение данных;
  6. Enable;

7-14. Линии данных;

  1. Плюс подсветки;
  2. Минус подсветки.

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

  • Символьный тип отображения, есть возможность загрузки символов;
  • Светодиодная подсветка;
  • Контроллер HD44780;
  • Напряжение питания 5В;
  • Формат 16х2 символов;
  • Диапазон рабочих температур от -20С до +70С, диапазон температур хранения от -30С до +80 С;
  • Угол обзора 180 градусов.

Схема подключения LCD к плате Ардуино без i2C

Стандартная схема присоединения монитора напрямую к микроконтроллеру Ардуино без I2C выглядит следующим образом.

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

Описание протокола I2C

Прежде чем обсуждать подключение дисплея к ардуино через i2c-переходник, давайте вкратце поговорим о самом протоколе i2C.

I2C / IIC(Inter-Integrated Circuit) – это протокол, изначально создававшийся для связи интегральных микросхем внутри электронного устройства. Разработка принадлежит фирме Philips.

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

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

Самая простая схема I2C может содержать одно ведущее устройство (чаще всего это микроконтроллер Ардуино) и несколько ведомых (например, дисплей LCD). Каждое устройство имеет адрес в диапазоне от 7 до 127. Двух устройств с одинаковым адресом в одной схеме быть не должно.

Плата Arduino поддерживает i2c на аппаратном уровне. Вы можете использовать пины A4 и A5 для подключения устройств по данному протоколу.

В работе I2C можно выделить несколько преимуществ:

  • Для работы требуется всего 2 линии – SDA (линия данных) и SCL (линия синхронизации).
  • Подключение большого количества ведущих приборов.
  • Уменьшение времени разработки.
  • Для управления всем набором устройств требуется только один микроконтроллер.
  • Возможное число подключаемых микросхем к одной шине ограничивается только предельной емкостью.
  • Высокая степень сохранности данных из-за специального фильтра подавляющего всплески, встроенного в схемы.
  • Простая процедура диагностики возникающих сбоев, быстрая отладка неисправностей.
  • Шина уже интегрирована в саму Arduino, поэтому не нужно разрабатывать дополнительно шинный интерфейс.

Недостатки:

  • Существует емкостное ограничение на линии – 400 пФ.
  • Трудное программирование контроллера I2C, если на шине имеется несколько различных устройств.
  • При большом количестве устройств возникает трудности локализации сбоя, если одно из них ошибочно устанавливает состояние низкого уровня.

Модуль i2c для LCD 1602 Arduino

Самый быстрый и удобный способ использования i2c дисплея в ардуино – это покупка готового экрана со встроенной поддержкой протокола. Но таких экранов не очень много истоят они не дешево.

А вот разнообразных стандартных экранов выпущено уже огромное количество.

Поэтому самым доступным и популярным сегодня вариантом является покупка и использование отдельного I2C модуля – переходника, который выглядит вот так:

С одной стороны модуля мы видим выводы i2c – земля, питание и 2 для передачи данных. С другой переходника видим разъемы внешнего питания. И, естественно, на плате есть множество ножек, с помощью которых модуль припаивается к стандартным выводам экрана.

Для подключения к плате ардуино используются i2c выходы. Если нужно, подключаем внешнее питание для подстветки. С помощью встроенного подстроечного резистора мы можем настроить настраиваемые значения контрастности J

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

Подключение ЖК экрана к Ардуино по I2C

Для подключения необходимы сама плата Ардуино, дисплей, макетная плата, соединительные провода и потенциометр.

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

Жидкокристаллический монитор с поддержкой i2c подключается к плате при помощи четырех проводов – два провода для данных, два провода для питания.

  • Вывод GND подключается к GND на плате.
  • Вывод VCC – на 5V.
  • SCL подключается к пину A5.
  • SDA подключается к пину A.

И это все! Никаких паутин проводов, в которых очень легко запутаться. При этом всю сложность реализации i2C протокола мы можем просто доверить библиотекам.

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

Для взаимодействие Arduino c LCD 1602 по шине I2C вам потребуются как минимум две библиотеки:

  • Библиотека Wire.h для работы с I2C уже имеется в стандартной программе Arduino IDE.
  • Библиотека LiquidCrystal_I2C.h, которая включает в себя большое разнообразие команд для управления монитором по шине I2C и позволяет сделать скетч проще и короче. Нужно дополнительно установить библиотеку После подключения дисплея нужно дополнительно установить библиотеку LiquidCrystal_I2C.h

Скачать LiquidCrystal_I2C.h можно по этой ссылке.

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

void setup()
{ lcd.init(); // Инициализация дисплея lcd.backlight(); // Подключение подсветки lcd.setCursor(0,0); // Установка курсора в начало первой строки lcd.print(“Hello”); // Набор текста на первой строке lcd.setCursor(0,1); // Установка курсора в начало второй строки lcd.print(“ArduinoMaster”); // Набор текста на второй строке
}
void loop()
{
}

Описание функций и методов библиотеки LiquidCrystal_I2C:

  • home() и clear() – первая функция позволяет вернуть курсор в начало экрана, вторая тоже, но при этом удаляет все, что было на мониторе до этого.
  • write(ch) – позволяет вывести одиночный символ ch на экран.
  • cursor() и noCursor() – показывает/скрывает курсор на экране.
  • blink() и noBlink() – курсор мигает/не мигает (если до этого было включено его отображение).
  • display() и noDisplay() – позволяет подключить/отключить дисплей.
  • scrollDisplayLeft() и scrollDisplayRight() – прокручивает экран на один знак влево/вправо.
  • autoscroll() и noAutoscroll() – позволяет включить/выключить режим автопрокручивания. В этом режиме каждый новый символ записывается в одном и том же месте, вытесняя ранее написанное на экране.
  • leftToRight() и rightToLeft() – Установка направление выводимого текста – слева направо или справа налево.
  • createChar(ch, bitmap) – создает символ с кодом ch (0 – 7), используя массив битовых масок bitmap для создания черных и белых точек.

Проблемы подключения i2c lcd дисплея

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

Во-первых, можно увеличить или уменьшить контрастность монитора. Часто символы просто не видны из-за режима контрастности и подсветки.

Если это не помогло, то проверьте правильность подключения контактов, подключено ли питание подсветки. Если вы использовали отдельный i2c переходник, то проверьте еще раз качество пайки контактов.

Другой часто встречающейся причиной отсутствия текста на экране может стать неправильный i2c адрес. Попробуйте сперва поменять в скетче адрес устройства с 0x27 0x20 или на 0x3F.

У разных производителей могут быть зашиты разные адреса по умолчанию.

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

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

Заключение

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

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

Источник: https://ArduinoMaster.ru/datchiki-arduino/lcd-i2c-arduino-displey-ekran/

Ардуино: вывод текста на ЖК дисплей 1602

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

Скорее всего, вашему очередному устройству тоже не помешает какой-нибудь небольшой дисплейчик

Источник: http://robotclass.ru/tutorials/arduino-lcd1602/

Тестируем дисплей 2.4” с сенсорным дисплеем с ридером microSD карт

Тестируем дисплей 2.4” с сенсорным дисплеем с ридером microSD карт, выполненный в виде шилда для Arduino Uno или Arduino Mega.

Тест графики:

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

Устанавливаем LCD шилд на плату, скачиваем библиотеку и загружаем пример «SPFD5408-graphictest»

Смотрим:

Видео теста графики

Тест сенсорной панели:

Теперь проверим работу сенсорной панели. Первое что необходимо сделать это произвести калибровку. За работу сенсорной панели отвечают четыре пина Ардуино: А2, А3, 8, 9. Загружаем скетч калибровки из библиотеки: «carduino_spfd5408_calibrate».

Стилусом нажимаем поочередно точки на экране:

В результате мы получили значения для осей X и Y. Запишем эти данные, они нам пригодятся. Заодно проверили все ли правильно работает.

Теперь можем загрузить отдельно скетч для рисования – «carduino_spfd5408_tftpaint». Перед загрузкой скетча в плату укажем наши результаты калибровки.

// Calibrate values УКАЖИТЕ ВАШИ ЗНАЧЕНИЯ ПОСЛЕ КАЛИБРОВКИ

#define TS_MINX 204

#define TS_MINY 841

#define TS_MAXX 979

#define TS_MAXY 70

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

Тест вывода полноцветной BMP картинки.

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

Сначала рассмотрим работу модуля microSD с платой Arduino Uno. Копируем файлы из папки bitmaps на microSD карту и карту устанавливаем в слот шилда. Загружаем скетч из примеров «carduino_spfd5408_tftbmp».  Проверяем.

С Arduino Mega все несколько сложнее. Дело в том, что ридер SD карт использует шину SPI, а у Меги пины SPI отличаются от UNO. У Меги для SPI выделены пины 50, 51, 52 и 53. Для работы с microSD мы можем использовать только программный SPI.

Для этого нам нужна библиотека SD. Дело в том, что в разных версиях компилятора находятся разные версии библиотеки. Заставить работать корректно удалось только с библиотекой из версии 1.0.5 Arduino IDE. Эту библиотеку можно скачать тут.

Скачиваем библиотеку и копируем в папку libraries IDE. Далее редактируем файл Sd2Card.h который находится тут: ArduinolibrariesSDutility. В этом файле указываем 1 для #define MEGA_SOFT_SPI.

Теперь загружаем «carduino_spfd5408_tftbmp» в Arduino Mega 2560

Проверяем:

Источник: http://carduino.ru/test-2_4-duyma-sensornogo-displeya-i-sd-kartoy.html

Дисплей Arduino — подключение текстового экрана

Существует большое количесвто разновидностей текстовых, или как их ещё называют знакосинтезирующих, жидкокристаллических экранов. Для работы с такими экранами существует стандартная Arduino-библиотека Liquid Crystal.

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

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

  • Текстовый экран 16×2, 20×4 или любого другого размера с впаянной штырьковой линейкой на 16 контактов;
  • Arduino Uno;
  • Breadboard для удобного подключения. После того, как всё заработает, вы при желании можете избавиться от макетной доски и впаять дисплей в свою плату или припаять провода непосредственно к его контактам;
  • Набор перемычек и/или соединительные провода.

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

Закрепите экран на breadboard и подведите к  питанию breaboard питание +5 В и землю с Arduino.

Включение подсветки дисплея:

Фоновая подсветка дисплея — это отдельный контур, не связанный с остальным. Включить её можно подав +5 В на 15-й контакт дисплея и подключив 16-й контакт к земле. Соединив эти два контакта с соответствующими дорожками, можно включить Arduino и увидеть, что дисплей засветился.

Обратите внимание, что на некоторых моделях нумерация контактов идёт не просто справа-налево от первого до шестнадцатого, а несколько более хитро.

Так, например, на экране 16×2 от Мэлт первый контакт  находится на 14-й позиций, второй на 13-й и так далее справа-налево вплоть до 14-го на первой позиции, а 15-й и 16-й расположены справа.

Нумерация около контактов дисплея поможет не запутаться.

Включение питания знакосинтезатора:

Далее необходимо подключить цепь, отвечающую за отображение символов. Для этого предназначены контакты 1, 2 и 3 на дисплее. Перед подключением отключите Arduino от питания.

Первый — это земля. Соедините его с рельсой земли. Второй — питание. Соедините его с рельсой +5 В. Третий — контрастность. Для получение максимально контрастного изображения соедините его с рельсой земли.

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

Для возможности плавной регулировки контрастности можете подать на этот контакт выходной сигнал потенциометра.

После подключения, если включить Arduino, вы можете увидеть прямоугольные знакоместа. В зависимости от комбинации цветов текста и подсветки они могут быть как яркими и хорошо заметными, так и едва заметными. Это нормально: в любом случае, текст будет смотреться отлично.

одключение шины данных:

Для коммуникации между Arduino и экраном необходимо использовать несколько линий взаимодействия:

  • 2 или 3 для командования дисплеем
  • 4 или 8 для передачи данных (кодов символов и команд)

Таким образом занятыми окажутся от 6-ти до 11-ти контактов от обоих устройств. Если вам не требуется считывать с дисплея, что подходит под большинство сценариев использования, для команд понадобится 2 линии.

Если скорость обновления данных так же не является проблемой, для передачи данных достаточно 4-х линий.

Итак, для подключения дисплея достаточно истпользовать 6 линий, 6 контактов на Arduino. Рассмотрим именно этот сценарий.

Как упоминалось, нам не за чем считывать с дисплея, мы будем в него только писать. Поэтому соединим 5-й контакт дисплея, который отвечает за выбор чтение/запись с рельсой земли. Это означает «всегда писать».

Затем, соединяем Arduino и экран нашими 6-ю линиями коммуникации. Какие именно контакты будут выбраны на Arduino не имеет значения: мы зададим их в программе, но для примера была выбрана такая конфигурация:

4-й контакт дисплея — 4-й контакт Arduino. Это линия адресного сигнала. Известная как A0 или RS.

В зависимости от того, 0 она или 1, дисплей понимает имеем ли мы на линии данных команду вроде «передвинуть курсор» или код символа для отображения. 6-й контакт дисплея — 5-й контакт Arduino. Это линия разрешения доступа к данным.

Известная, как E или Enable. Когда эта линия становится единицей, дисплей исполняет команду или выводит символ с линии данных.

11-й, 12-й, 13-й, 14-й контакт дисплея — 10-й, 11-й, 12-й, 13-й контакт Arduino соответственно. Это линии данных. Известные как DB4, DB5, DB6, DB7.

Экран подключен и готов к приёму данных. Осталось написать программу для Arduino.

Программирование дисплея Arduino

Для вывода текста с Arduino удобнее всего воспользоваться встроенной библиотекой Liquid Crystal. Для вывода приветствия и таймера, воспользуйтесь этим кодом:

/ Подключаем стандартную библиотеку LiquidCrystal #include // Инициализируем объект-экран, передаём использованные  // для подключения контакты на Arduino в порядке: // RS, E, DB4, DB5, DB6, DB7 LiquidCrystal lcd(4, 5, 10, 11, 12, 13); void setup()  { // устанавливаем размер (количество столбцов и строк) экрана lcd.begin(16, 2); // печатаем первую строку lcd.print(“Hello world!”); // устанавливаем курсор в колонку 0, строку 1. То есть на // самом деле это вторая строка, т.к. нумерация начинается с нуля lcd.setCursor(0, 1); // печатаем вторую строку lcd.print(“foo bar baz”); } void loop()  { }

Как установить криллицу?

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

Вывод русских букв не совсем тривиален: вы не можете просто написать lcd.print(«Вася»). Это связано с понятием кодировок.

Вы знаете, что каждому символу соответствует код и при компиляции программы, если строка содержит кириллицу, она будет сконвертирована в коды по таблице utf-8, cp-1251 или какой-то другой в зависимости от настроек компилятора. Экран в свою очередь, ожидает увидеть данные в собственной кодировке.

Так например, букве «Я» соответствует код B1 в шестнадцатиричной системе. Чтобы передать на экран строку «Яndex», необходимо в явном виде с помощью последовательности x## встроить в строку код символа:

lcd.print(“xB1ndex”);

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

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

Из-за этого вы не можете просто использовать символы из диапазона 0-9, a-f следом за двузначным кодом символа: это вызовет ошибку компиляции. Чтобы обойти этот момент, можно использовать тот факт, что две строки записанные рядом склеиваются. Так, если вы хотите написать «Яeee»:

lcd.print(“xB1eee”); // ошибка lcd.print(“xB1″”eee”); // правильно

Например, чтобы написать «Привет от Толтека», использовался код:

#include LiquidCrystal lcd(4, 5, 10, 11, 12, 13); void setup()  { lcd.begin(16, 2); lcd.print(” xA8x70xB8xB3x65xBF”); lcd.setCursor(0, 1); lcd.print(” x7FxBF x54x7FxBBxBFx65xBAx61″); } void loop()  { }

Источник: http://robo02.ru/2018/03/22/arduino-display-connect-a-text-screen/

Библиотека LiquidCrystal для работы с символьным LCD на Arduino

Данная библиотека позволяет платам Arduino управлять жидкокристаллическими дисплеями (LCD) на основе контроллера HD44780 (или аналогах), который используется в большинстве символьных LCD дисплеев. Библиотека работает либо в четырех, либо в восьми битном режиме (то есть используется 4 или 8 линий данных в дополнение к линиям управления RS, EN и, при необходимости, RW).

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

В приведенных ниже примерах используется плата Arduino Uno. Для подключения LCD дисплея к своей плате соедините следующие выводы:

Кроме того, соедините вывод RW LCD дисплея с землей. Крайние выводы потенциометра 10 кОм необходимо подключить к шинам +5V и GND, а средний вывод потенциометра соединить с выводом VO (вывод 3) LCD дисплея. Резистор 220 Ом используется для питания подсветки дисплея (обычно это выводы 15 и 16 LCD дисплея).

LiquidCrystal()Создает переменную типа LiquidCrystal. Дисплей может управляться с помощью 4 или 8 линий данных. В первом случае номера выводов с D0 по D3 пропускаются, а эти выводы остаются неподключенными. Вывод RW, вместо подключения к Arduino, может быть соединен с землей; если это так, то в параметрах функции он пропускается.

Синтаксис

LiquidCrystal(rs, enable, d4, d5, d6, d7) LiquidCrystal(rs, rw, enable, d4, d5, d6, d7) LiquidCrystal(rs, enable, d0, d1, d2, d3, d4, d5, d6, d7) LiquidCrystal(rs, rw, enable, d0, d1, d2, d3, d4, d5, d6, d7)

Параметры

  • rs: номер вывода платы Arduino, который подключен к выводу RS LCD дисплея;
  • rw: номер вывода платы Arduino, который подключен к выводу RW LCD дисплея (необязательно);
  • en: номер вывода платы Arduino, который подключен к выводу включения EN LCD дисплея;
  • d0, d1, d2, d3, d4, d5, d6, d7: номера выводов платы Arduino, которые подключены к соответствующим выводам LCD дисплея. d0, d1, d2 и d3 необязательны; если они пропущены, LCD будет управляться с помощью только четырех линий данных (d4, d5, d6, d7).

Пример

#include LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2); void setup() { lcd.begin(16,1); lcd.print(“hello, world!”); } void loop() {}begin()Инициализирует интерфейс связи с LCD дисплеем, и указывает размеры (ширину и высоту) дисплея. Функция begin() должна быть вызвана до любых других функций из библиотеки LCD.

Синтаксис

lcd.begin(cols, rows)

Параметры

  • lcd: переменная типа LiquidCrystal;
  • cols: количество столбцов (символов в строке) у дисплея;
  • rows: количество строк у дисплея.

clear()Очищает LCD дисплей и помещает курсор в верхний левый угол.

Синтаксис

lcd.clear()

Параметры

  • lcd: переменная типа LiquidCrystal.

home()Помещает курсор в верхний левый угол LCD дисплея. Используется для помещения курсора в место, куда будет выводиться последующий текст. Чтобы еще и очистить дисплей, используйте clear().

Синтаксис

lcd.home()

Параметры

  • lcd: переменная типа LiquidCrystal.

setCursor()Помещает курсор в заданное положение LCD дисплея. Используется для помещения курсора в место, куда будет выводиться последующий текст.

Синтаксис

lcd.setCursor(col, row)

Параметры

  • lcd: переменная типа LiquidCrystal;
  • col: столбец, в который необходимо поместить курсор (первому столбцу соответствует 0);
  • row: строка, в которую необходимо поместить курсор (первой строке соответствует 0).

write()Записывает символ на LCD дисплей.

Синтаксис

lcd.write(data)

Параметры

  • lcd: переменная типа LiquidCrystal;
  • data: символ для записи на LCD.

Возвращаемое значение

bytewrite() возвращает количество записанных байтов, хотя чтение этого количества необязательно.

Пример

#include LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2); void setup() { Serial.begin(9600); } void loop() { if (Serial.available()) { lcd.write(Serial.read()); } }print()Печатает текст на LCD дисплее.

Синтаксис

lcd.print(data) lcd.print(data, BASE)

Параметры

  • lcd: переменная типа LiquidCrystal;
  • data: данные для печати (char, byte, int, long или string);
  • BASE (необязательно): основание для печати чисел: BIN для двоичной формы (основание 2), DEC для десятичной формы (основание 10), OCT для восьмеричной формы (основание 8), HEX для шестнадцатеричной формы (основание 16).

Возвращаемое значение

byteprint() возвращает количество записанных байтов, хотя чтение этого количества необязательно.

Пример

#include LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2); void setup() { lcd.print(“hello, world!”); } void loop() {}cursor()Показывает курсор на LCD дисплее: подчеркивание (линия) в месте, куда будет записан следующий символ.

Синтаксис

lcd.cursor()

Параметры

  • lcd: переменная типа LiquidCrystal.

Пример

Смотрите пример для функции noCursor().

noCursor()Скрывает курсор на LCD дисплее.

Синтаксис

lcd.noCursor()

Параметры

  • lcd: переменная типа LiquidCrystal.

Пример

#include LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { lcd.begin(16, 2); lcd.print(“hello, world!”); } void loop() { // Выключить курсор: lcd.noCursor(); delay(500); // Включить курсор: lcd.cursor(); delay(500); }blink()Показывает на LCD дисплее мигающий курсор. Если используется в комбинации с cursor(), то результат будет зависеть от конкретного дисплея.

Синтаксис

lcd.blink()

Параметры

  • lcd: переменная типа LiquidCrystal.

Пример

Смотрите пример для функции noBlink().

noBlink()Выключает мигающий курсор на LCD дисплее.

Синтаксис

lcd.noBlink()

Параметры

  • lcd: переменная типа LiquidCrystal.

Пример

#include LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { lcd.begin(16, 2); lcd.print(“hello, world!”); } void loop() { // Выключить мигающий курсор: lcd.noBlink(); delay(3000); // Включить мигающий курсор: lcd.blink(); delay(3000); }display()Включает LCD дисплей после того, как он был выключен функцией noDisplay(). Она восстанавливает текст (и курсор), который был на дисплее.

Синтаксис

lcd.display()

Параметры

  • lcd: переменная типа LiquidCrystal.

Пример

Смотрите пример для функции noDisplay().

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

Синтаксис

lcd.noDisplay()

Параметры

  • lcd: переменная типа LiquidCrystal.

Пример

#include LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { lcd.begin(16, 2); lcd.print(“hello, world!”); } void loop() { // Выключить дисплей: lcd.noDisplay(); delay(500); // Включить дисплей: lcd.display(); delay(500); }scrollDisplayLeft()Прокручивает содержимое дисплея (текст и курсор) на одну позицию влево.

Синтаксис

lcd.scrollDisplayLeft()

Параметры

  • lcd: переменная типа LiquidCrystal.

Пример

Смотрите пример для функции scrollDisplayRight().

scrollDisplayRight()Прокручивает содержимое дисплея (текст и курсор) на одну позицию вправо.

Синтаксис

lcd.scrollDisplayRight()

Параметры

  • lcd: переменная типа LiquidCrystal.

Пример

#include LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { lcd.begin(16, 2); lcd.print(“hello, world!”); delay(1000); } void loop() { // прокрутить на 13 позиций (длина строки) влево, // чтобы переместить контент за пределы дисплея влево: for (int positionCounter = 0; positionCounter < 13; positionCounter++) { // прокрутить на одну позицию влево: lcd.scrollDisplayLeft(); // немного подождать: delay(150); } // прокрутить на 29 позиций (длина строки + длина дисплея) вправо, // чтобы переместить контент за пределы дисплея вправо: for (int positionCounter = 0; positionCounter < 29; positionCounter++) { // прокрутить на одну позицию вправо: lcd.scrollDisplayRight(); // немного подождать: delay(150); } // прокрутить на 16 позиций (длина дисплея + длина строки) влево, // чтобы переместить контент снова в центр: for (int positionCounter = 0; positionCounter < 16; positionCounter++) { // прокрутить на одну позицию влево: lcd.scrollDisplayLeft(); // немного подождать: delay(150); } // задержка в конце полного цикла: delay(1000); }autoscroll()Включает автоматическую прокрутку на LCD дисплее. Это приводит к тому, что каждый символ, выводимый на дисплей, передвигает предыдущие символы на одну позицию. Если направление текста задано слева-направо (по умолчанию), дисплей прокручивает влево; если направление текста задано справа-налево, дисплей прокручивает вправо. Это дает в результате вывод каждого нового символа на одном и том же месте LCD дисплея.

Синтаксис

lcd.autoscroll()

Параметры

  • lcd: переменная типа LiquidCrystal.

Пример

Смотрите пример для функции noAutoscroll().

noAutoscroll()Выключает автоматическую прокрутку на LCD дисплее.

Синтаксис

lcd.noAutoscroll()

Параметры

  • lcd: переменная типа LiquidCrystal.

Пример

Скетч печатает символы от 0 до 9 с выключенной автоматической прокруткой, затем перемещает курсор вниз и вправо, включает автоматическую прокрутку и печатает эти символы снова.

#include LiquidCrystal lcd(12, 11, 5, 4, 3, 2); void setup() { lcd.begin(16, 2); } void loop() { // поместить курсор в точку (0,0): lcd.setCursor(0, 0); // напечатать символы от 0 до 9: for (int thisChar = 0; thisChar < 10; thisChar++) { lcd.print(thisChar); delay(500); } // поместить курсор в точку (16,1): lcd.setCursor(16, 1); // включить автоматическую прокрутку на дисплее: lcd.autoscroll(); // напечатать символы от 0 до 9: for (int thisChar = 0; thisChar < 10; thisChar++) { lcd.print(thisChar); delay(500); } // выключить автоматическую прокрутку lcd.noAutoscroll(); // очистить экран для следующего цикла: lcd.clear(); }leftToRight()Устанавливает направление текста, записанного на LCD, в значение «слева направо», которое является значением по умолчанию. Это означает, что последующие символы, записанные на дисплей, идут слева направо, но это никак не влияет на ранее записанный текст.

Синтаксис

lcd.leftToRight()

Параметры

  • lcd: переменная типа LiquidCrystal.

rightToLeft()Устанавливает направление текста, записанного на LCD, в значение «справа налево» (значение по умолчанию – «слева направо»). Это означает, что последующие символы, записанные на дисплей, идут справа налево, но это никак не влияет на ранее записанный текст.

Синтаксис

lcd.rightToLeft()

Параметры

  • lcd: переменная типа LiquidCrystal.

Источник: https://radioprog.ru/post/158

HelloWorld

“Hello World!”

The LiquidCrystal library allows you to control LCD displays that are compatible with the Hitachi HD44780 driver. There are many of them out there, and you can usually tell them by the 16-pin interface.

This example sketch prints “Hello World!” to the LCD and shows the time in seconds since the Arduino was reset.

output of the sketch on a 2×16 LCD

The LCDs have a parallel interface, meaning that the microcontroller has to manipulate several interface pins at once to control the display. The interface consists of the following pins:

A register select (RS) pin that controls where in the LCD's memory you're writing data to. You can select either the data register, which holds what goes on the screen, or an instruction register, which is where the LCD's controller looks for instructions on what to do next.

A Read/Write (R/W) pin that selects reading mode or writing mode

An Enable pin that enables writing to the registers

8 data pins (D0 -D7). The states of these pins (high or low) are the bits that you're writing to a register when you write, or the values you're reading when you read.

There's also a display constrast pin (Vo), power supply pins (+5V and Gnd) and LED Backlight (Bklt+ and BKlt-) pins that you can use to power the LCD, control the display contrast, and turn on and off the LED backlight, respectively.

The process of controlling the display involves putting the data that form the image of what you want to display into the data registers, then putting instructions in the instruction register. The LiquidCrystal Library simplifies this for you so you don't need to know the low-level instructions.

The Hitachi-compatible LCDs can be controlled in two modes: 4-bit or 8-bit. The 4-bit mode requires seven I/O pins from the Arduino, while the 8-bit mode requires 11 pins. For displaying text on the screen, you can do most everything in 4-bit mode, so example shows how to control a 2×16 LCD in 4-bit mode.

Hardware Required

  • Arduino or Genuino Board
  • LCD Screen (compatible with Hitachi HD44780 driver)
  • pin headers to solder to the LCD display pins
  • 10k ohm potentiometer
  • 220 ohm resistor
  • hook-up wires
  • breadboard

Circuit

Before wiring the LCD screen to your Arduino or Genuino board we suggest to solder a pin header strip to the 14 (or 16) pin count connector of the LCD screen, as you can see in the image above.
To wire your LCD screen to your board, connect the following pins:

  • LCD RS pin to digital pin 12
  • LCD Enable pin to digital pin 11
  • LCD D4 pin to digital pin 5
  • LCD D5 pin to digital pin 4
  • LCD D6 pin to digital pin 3
  • LCD D7 pin to digital pin 2

Additionally, wire a 10k pot to +5V and GND, with it's wiper (output) to LCD screens VO pin (pin3). A 220 ohm resistor is used to power the backlight of the display, usually on pin 15 and 16 of the LCD connector

click the images to enlarge

image developed using Fritzing. For more circuit examples, see the Fritzing project page

Schematic

click the images to enlarge

image developed using Fritzing. For more circuit examples, see the Fritzing project page

Code

/*   LiquidCrystal Library – Hello World  Demonstrates the use a 16×2 LCD display.  The LiquidCrystal  library works with all LCD displays that are compatible with the  Hitachi HD44780 driver. There are many of them out there, and you  can usually tell them by the 16-pin interface.  This sketch prints “Hello World!” to the LCD  and shows the time.

  The circuit:  * LCD RS pin to digital pin 12  * LCD Enable pin to digital pin 11  * LCD D4 pin to digital pin 5  * LCD D5 pin to digital pin 4  * LCD D6 pin to digital pin 3  * LCD D7 pin to digital pin 2  * LCD R/W pin to ground  * LCD VSS pin to ground  * LCD VCC pin to 5V  * 10K resistor:  * ends to +5V and ground  * wiper to LCD VO pin (pin 3)  Library originally added 18 Apr 2008  by David A. Mellis  library modified 5 Jul 2009  by Limor Fried (http://www.ladyada.net)  example added 9 Jul 2009  by Tom Igoe  modified 22 Nov 2010  by Tom Igoe  modified 7 Nov 2016  by Arturo Guadalupi  This example code is in the public domain.  http://www.arduino.cc/en/Tutorial/LiquidCrystalHelloWorld

*/

// include the library code:

#include

// initialize the library by associating any needed LCD interface pin

// with the arduino pin number it is connected to
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

void setup() {

  // set up the LCD's number of columns and rows:
  lcd.begin(16, 2);
  // Print a message to the LCD.
  lcd.print(“hello, world!”);
}

void loop() {

  // set the cursor to column 0, line 1
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);
  // print the number of seconds since reset:
  lcd.print(millis() / 1000);
}

See Also

  • Liquid Crystal Library – Your reference for the Liquid Crystal library.
  • lcd.begin()
  • lcd.print()
  • lcd.setCursor()
  • Blink – Control of the block-style cursor.
  • Cursor – Control of the underscore-style cursor.

  • Display – Quickly blank the display without losing what's on it.
  • TextDirection – Control which way text flows from the cursor.
  • Scroll – Scroll text left and right.
  • Serial display – Accepts serial input, displays it.
  • SetCursor – Set the cursor position.

  • Autoscroll – Shift text right and left.

Last revision 2015/08/17 by SM

Источник: https://www.arduino.cc/en/Tutorial/HelloWorld

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}