Какие бывают дисплеи для ардуино и как их подключить

В этой инструкции показано, как подключать к Arduino и использовать LCD экраны на 16х2 и 20х4.

Эти экраны имеют встроенную подсветку на базе маломощного светодиода, работают от +5 В. Для подключения этих жидкокристаллических экранов понадобится 6 контактов. Можно использовать любые пины на вашем Arduino!

Инструкция написана на основании LCD экранов от компании Adafruit — blue&white 16×2, RGB 16×2 LCD, и blue&white 20×4, RGB 20×4. Если вы используете ЖК экран от другого производителя, нет 100% гарантии, что он сработает (хотя в 99% случаев все работает).

Символьные и графические LCD — в чем разница?

Существует огромное количество разных ЖК экранов. В этой статье мы рассмотрим символьные (character) LCD. Подобные экраны — отличный вариант для отображения текста. Можно настроить и отображение иконок, но размер этих иконок не должен превышать 7 пикселей (очень маленькие!).

На фото ниже показан пример работы LCD монитора на 16 символов с двумя строками:

Какие бывают дисплеи для Ардуино и как их подключить

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

Какие бывают дисплеи для Ардуино и как их подключить

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

В этой статье мы рассмотрим только текстовые/символьные экраны!

Разные модели LCD экранов

После того, как мы ограничили тип рассматриваемых экранов, рассмотрим, какие они бывают.

Какие бывают дисплеи для Ардуино и как их подключить

Несмотря на то, что они используются только для отображения текста, существуют разные модели и форм-факторы: в левом верхнем углу ЖК экран 20×4 с белым текстом на синем фоне, в правом верхнем — 16×4 с черным текстом на зеленом фоне, слева внизу — 16×2 с белым текстом на синем фоне и 16×1 с черным текстом на сером фоне.

Хорошая новость: все эти экраны взаимозаменяемы. Если вы настроили один из них, вы можете заменить его на другую модель. Скетч Arduino придется немного изменить, но подключение одинаковое!

Какие бывают дисплеи для Ардуино и как их подключить

В этой части мы используем LCD экраны с одной рельсой и 16 контактами для подключения (смотрите фото выше). Есть и LCD с 2 рельсами по 8 контактов для подключения (на рисунке ниже).

Какие бывают дисплеи для Ардуино и как их подключить

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

Подключение символьного LCD экрана к Arduino

Устанавливаем рельсы контактов

Какие бывают дисплеи для Ардуино и как их подключить

Помимо LCD экрана вам понадобится дополнительная обвязка. Во-первых — потенциометр на 10 КОм. С помощью потенциометра мы будем настраивать контрастность дисплея. На каждом ЖК экране различные настройки контрастности, так что без регулировки не обойтись. Кроме того, вам понадобится рельса контактов 0.1″.

Какие бывают дисплеи для Ардуино и как их подключить

Если рельса с контактами слишком длинная, лишние контакты модно просто отрезать!

Вам надо припаять контакты к ЖК дисплею.

При пайке будьте предельно осторожны, не повредите ваш Breadboard! Можете сначала «прихватить» первый и 16 контакты, а потом уже припаять остальные.

Какие бывают дисплеи для Ардуино и как их подключить

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

Питание и подсветка

Кстати, на некоторых дешевых LCD экранах подсветка не предусмотрена!

Схема для настройки контраста

Цепь для настройки контраста

Фото Пояснения
Какие бывают дисплеи для Ардуино и как их подключить Устанавливаем потенциометр. На фото он находится справа от пина 1.
Какие бывают дисплеи для Ардуино и как их подключить Подключите одну сторону потенциометра к +5V, а вторую — к Gnd. Средний контакт потенциометра подключите к 3 пину на LCD.
Теперь подключаем логику нашего экрана — это отдельная от подсветки цепь! Пин 1 идет к Gnd, а пин 2 — к +5V.
Включите ваш Arduino. Если на LCD Мониторе предусмотрена подсветка, она должна загореться. Покрутите ручку потенциометра, чтобы увидеть первую прямоугольники пикселей на первой строке.

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

Окончательное подключение

От D0 до D7, RS, EN, и RW. D0-D7 — это контакты, на которых хранится значения, передаваемые на дисплей. Контакт RS сообщает контроллеру, будем ли мы отображать данные (например, ASCII символ) или это управляющий байт (например, смена положения курсора).

Контакт EN — это сокращение от 'enable' (доступно), с помощью этого контакта мы сообщаем LCD, когда данные готовы для считывания.

Контакт RW используется для установки направления — мы хотим отобразить (обычно) или считать (используется реже) данные с дисплея.

Не все эти контакты надо подключать к Arduino. Например, использовать RW не надо, если мы только отображаем данные на экране, так что его достаточно 'подтянуть' к контакту Gnd. Кроме того, можно обмениваться данными с LCD экраном, используя 4 контакта вместо 8.

Вероятно, возникает закономерный вопрос, в каких случаях используют 8 контактов? Скорее всего, это влияет на скорость передачи данных. То есть, используя 8 контактов вместо 4, вы можете увеличить скорость обмена информацией в 2 раза.

В данном случае, скорость не важна, так что мы используем 4 контакта для подключения LCD к Arduino.

Итак, нам понадобятся 6 контактов: RS, EN, D7, D6, D5, и D4.

Для работы с LCD экраном, будем использовать библиотеку LiquidCrystal library, которая значительно облегчает процесс настройки пинов. Одно из достоинств этой библиотеки: вы можете использовать любые пины на Arduino для подключения контактов ЖК дисплея. Так что по окончанию этого гайда вы сможете легко заменить контакты, если это критично для вашего проекта.

Используем символьный LCD

Пришло время загрузить скетч на Arduino для управления LCD экраном. Библиотека LiquidCrystal library установлена в Arduino IDE по умолчанию. Так что нам достаточно загрузить один из примеров и немного подкорректировать в соответствии с теми пинами, которые мы использовали для подключения.

Откройте скетч File→Examples→LiquidCrystal→HelloWorld.

Обновляем информацию о пинах. Ищем следующую строку:

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

И меняем ее на:

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

Теперь можете компилировать и загружать скетч на Arduino.

Если надо, настройте контраст

Естественно, вы можете использовать ЖК дисплей с любыми размерами. Например, на фото ниже показана работа LCD 20×4.

Или черный текст на зеленом фоне:

Одно из достоинств экранов с черным текстом на зеленом фоне — возможность отключения подсветки.

Задействуем насколько строк

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

lcd.print(«hello, world!»);

На следующую:

lcd.print(«hello, world! this is a long long message»);

LCD дисплей 16×2 обрежет все после 16-го символа:

Но LCD дисплей 20×4 перенесет не отображенные символы с первой строки на третью (вторая строка продолжится на четвертой). Не очень удобно, но на этом этапе придется смириться. Так что при отображении длинных строк, считайте символы, чтобы не превысить допустимую длину.

Читайте также:  Как комфортно экономить электричество

LCD с RGB подсветкой

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

После подключения LCD и его проверки в соответствии с инструкциями выше, подключите светодиоды к ШИМ аналоговым пинам вашего Arduino для точной настройки цвета. Если вы используете Arduino Uno, у вас должно было остаться три свободных ШИМ контакта.

подключите красный светодиод (16 контакт на LCD) к Digital 3, зеленый светодиод (контакт 17) — к Digital 5, а синий светодиод (18 контакт на LCD) — к digital 6. На LCD модуле уже предусмотрены резисторы, так что подключать дополнительные не надо.

Теперь загрузите приведенный ниже скетч на Arduino.

  • // включаем в скетч библиотеки:
  • #include
  • #include
  • #define REDLITE 3
  • #define GREENLITE 5
  • #define BLUELITE 6
  • // объявляем количество контактов, которые используем
  • // для передачи данных
  • LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
  • // яркость можно изменять в диапазоне 0 -> 255
  • int brightness = 255;
  • void setup() {
  • // настраиваем количество столбцов и строк на LCD:
  • lcd.begin(16, 2);
  • // отображаем сообщение на LCD.
  • lcd.print(«RGB 16×2 Display «);
  • lcd.setCursor(0,1);
  • lcd.print(» Multicolor LCD «);
  • pinMode(REDLITE, OUTPUT);
  • pinMode(GREENLITE, OUTPUT);
  • pinMode(BLUELITE, OUTPUT);
  • brightness = 100;
  • }
  • void loop() {
  • for (int i = 0; i < 255; i++) {
  • setBacklight(i, 0, 255-i);
  • delay(5);
  • }
  • for (int i = 0; i < 255; i++) {
  • setBacklight(255-i, i, 0);
  • delay(5);
  • }
  • for (int i = 0; i < 255; i++) {
  • setBacklight(0, 255-i, i);
  • delay(5);
  • }
  • }
  • void setBacklight(uint8_t r, uint8_t g, uint8_t b) {
  • // настраиваем красный светодиод — он ярче остальных!
  • r = map(r, 0, 255, 0, 100);
  • g = map(g, 0, 255, 0, 150);
  • r = map(r, 0, 255, 0, brightness);
  • g = map(g, 0, 255, 0, brightness);
  • b = map(b, 0, 255, 0, brightness);
  • // общий анод, так что инвертируем!
  • r = map(r, 0, 255, 255, 0);
  • g = map(g, 0, 255, 255, 0);
  • b = map(b, 0, 255, 255, 0);

Serial.print(«R = «); Serial.print(r, DEC);

Serial.print(» G = «); Serial.print(g, DEC);

Serial.print(» B = «); Serial.println(b, DEC);

  1. analogWrite(REDLITE, r);
  2. analogWrite(GREENLITE, g);
  3. analogWrite(BLUELITE, b);
  4. }

Результат работы данного скетча приведен на видео ниже

Команда createChar

Вероятно, вы захотите использовать специальные символы. Например, если вы разрабатываете проект с использованием датчика температуры (термопары), вам пригодится символ (°).

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

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

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

При сборке своего металлоискателя у меня на руках оказался LCD дисплей 1602, построенный на контроллера HD44780. Решил не упустить возможность и подключить его к своему китайскому аналогу Arduino UNO.

Какие бывают дисплеи для Ардуино и как их подключить

Вот такой дисплей 1602 будем сегодня подключать к Arduino.

Купить подобный экран можно за $1.25.

Цифры «1602» говорят о том, что дисплей состоит из 2-х строк, по 16 символов. Это довольно распространённый экран, с применением которого народ конструирует часы, тестеры и прочие гаджеты. Дисплей бывает с зелёной и голубой подсветкой.

  • К дисплею я припаял гребёнку контактов, что бы можно было легко подключать провода.
  • Какие бывают дисплеи для Ардуино и как их подключить

Подключать дисплей 1602 к Arduino будем через 4-битный вариант параллельного интерфейса. Существует вариант и 8-битного интерфейса,  но при нём задействуется больше проводов, а выигрыша в этом мы не увидим.

Какие бывают дисплеи для Ардуино и как их подключить

Кроме дисплея  и Arduino, нам понадобятся провода и переменный резистор на 10кОм. Резистор подойдёт любой марки, лишь бы был необходимого номинала.

Питание на дисплей подаётся  через 1-й (VSS) и 2-й (VDD) выводы. К выводам 15 (А) и 16 (K) — подаётся питание на подсветку дисплея.

Поскольку для питания и подсветки используется одно напряжение +5В, запитаем их от пинов Arduino «5V» и «GND».

Главное не перепутать полярность, иначе можно спалить электронику дисплея.

3-й вывод (V0) подключаем к ножке переменного резистора, им будем управлять контрастностью дисплея. Резистор можно не использовать, а вывод «V0» подключить к GND. В таком случае контрастность будет максимальной и не будет возможности её плавной регулировки.

5-й вывод (RW) используется для чтения с дисплея либо для записи в него. Поскольку мы будем только писать в дисплей, соединим этот вывод с землёй (GND).

Выводы:  4-й (RS), 6-й (E), 11-й (D4), 12-й (D5), 13-й (D6), 14-й ( D7) подключаем к цифровым пинам Arduino. Не обязательно использовать пины те же что и у меня, можно подключить к любым цифровым, главное затем правильно их выставить в скетче.

  1. Какие бывают дисплеи для Ардуино и как их подключить
  2. Моя подключённая Ардуина, осталось соединить её с компьютером через USB и залить скетч.
  3. В примете будем использовать скетч из стандартного набора.

Какие бывают дисплеи для Ардуино и как их подключить

  • В Arduino IDE выбираем «Файл» «Образцы» «LiquidCrystal»«HelloWorld».
  • Давайте посмотрим на код скетча.

Какие бывают дисплеи для Ардуино и как их подключить

В строке «LiquidCrystal lcd», в скобках, выставлены цифровые пины, которые задействованы на Arduino. Пины выставляются в такой последовательности: RS, E, DB4, DB5, DB6, DB7. Если вы задействовали другие цифровые пины, при подключении дисплея, впишите их в нужной последовательности в скобках.

В строке «lcd.print(«hello, world!»);» выводится приветствие на дисплей, по-умолчанию это надпись «hello, world!», её можно поменять на любую свою, пишем на латинице.

Какие бывают дисплеи для Ардуино и как их подключить

Загружаем скетч в Arduino и вот результат. Вместо «hello, world!» я вписал свой сайт. Строкой ниже, таймер производит отсчёт времени.

Взаимодействие LCD 1602 с Ардуино. Описание, распиновка, подключение

Хотите, чтобы в ваших проектах Arduino отображались пользовательские сообщения или показания датчиков? Тогда для этих целей можно рекомендовать дисплей LCD 1602. Подобные дисплеи чрезвычайно распространены и представляют собой быстрый способ добавить читаемый интерфейс в какой-либо проект.

Эта статья охватит все, что необходимо знать, чтобы начать работу с LCD 1602. Да и не только с  1602 (16×2), но и любыми другими символьными ЖК-дисплеями (например, 16×4, 16×1, 20×4 и т. д.), основанными на контроллере параллельного интерфейса HD44780 от Hitachi.

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

Обзор LCD 1602

Эти ЖК-дисплеи идеально подходят для отображения только текста/символов, отсюда у них есть и другое название — «символьные ЖК-дисплеи». Дисплей имеет светодиодную подсветку и может отображать 32 символа в кодировке ASCII в двух рядах по 16 символов в каждом ряду.

Какие бывают дисплеи для Ардуино и как их подключить

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

Хотя такие дисплеи отображают только текст, они бывают разных размеров и цветов: например, 16×1, 16×4, 20×4, с белым текстом на синем фоне, с черным текстом на зеленом и другие.

Читайте также:  Популярные типы аккумуляторных батарей

Какие бывают дисплеи для Ардуино и как их подключить Стартовый набор для Arduino Uno R3

Большой набор: датчики, кнопки, сервоприводы…

Хорошая новость заключается в том, что все эти дисплеи взаимозаменяемые — если вы строите свой проект с одним из них, вы можете просто отключить его и использовать другой (размер/цвет) ЖК-дисплей на свой выбор. Возможно, придется откорректировать код  в зависимости от количества строк, но по крайней мере проводка останется той же!

Распиновка 16х02 символов

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

Какие бывают дисплеи для Ардуино и как их подключить

  • GND — должен быть подключен к земле Arduino.
  • VCC — это вывод питание для ЖК-дисплея, к которому мы подключаем 5-вольтовый контакт Arduino.
  • Vo (LCD Contrast) — вывод контролирует контрастность и яркость ЖК-дисплея. Используя простой делитель напряжения с потенциометром, мы можем точно отрегулировать контрастность.
  • RS (Register Select) — этот вывод позволяет Arduino сообщать ЖК-дисплею, отправляются команды или данные. В основном этот вывод используется для дифференциации команд от данных. Например, когда на выводе RS установлено значение LOW, мы отправляем команды на ЖК-дисплей (например, установить курсор в определенном месте, очистить дисплей, сдвинуть дисплей вправо и т. д.). Когда вывод RS установлено значение  HIGH, мы отправляем данные/символы на ЖК-дисплей.
  • R/W (Read/Write) — вывод предназначен для контроля того, что необходимо сделать — считать данные или передать их на ЖК-дисплй. Поскольку мы просто используем этот ЖК-дисплей в качестве устройства вывода, то достаточно на этот вывод подать HIGH уровень, тем самым мы перейдем в режим записи.
  • EN (Enable) — вывод используется для включения дисплея. Это означает, что когда на этом выводе  установлено значение LOW ЖК-дисплей не реагирует на то, что происходит с R/W, RS и линиями шины данных. Когда же на этом выводе HIGH ЖК-дисплей обрабатывает входящие данные.
  • D0-D7 (Data Bus) — это выводы, по которым передаются 8-битные данные на дисплей. Например, если мы хотим отобразить символ «A» в верхнем регистре, мы отправляем на LCD дисплей 0100 0001 (в соответствии с таблицей ASCII) .
  • AK (Anode & Cathode)используются для управления подсветкой LCD дисплея.

Практика

Теперь мы переходим к интересным вещам. Давайте проверим ЖК-дисплей. Сначала подключим контакты 5В и GND от Arduino Uno к шинам электропитания макетной платы. Затем  подключим  LCD 1602.  Данный LCD имеет две отдельные линии питания:

  1. Контакт 1 и контакт 2 для питания самого LCD 1602
  2. Контакт 15 и контакт 16 для подсветки LCD 1602

Подсоедините контакты 1 и 16 LCD на минус питания, а контакты 2 и 15 к + 5В.

Далее необходимо подключить контакт 3, который отвечает за контрастность и яркость дисплея. Для точной настройки контрастности необходимо подключить крайние выводы потенциометра сопротивлением 10 кОм к 5В и GND, а  центральный контакт (бегунок) потенциометра к контакту 3 на LCD дисплея.

Какие бывают дисплеи для Ардуино и как их подключитьРегулировка контрастности ЖК-дисплея с помощью потенциометра

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

Подключение LCD 1602 к Arduino

Прежде чем мы приступим к загрузке скетча и отправке данных на дисплей, давайте подключим LCD 1602 к Arduino.

LCD дисплей имеет много контактов (16 контактов). Но, хорошая новость заключается в том, что не все эти контакты необходимы для нас, чтобы подключиться к Arduino.

Мы знаем, что есть 8 выводов данных, по которым передаются данные на дисплей. Но, ЖК-дисплеи на HD44780  разработаны таким образом, что мы можем общаться с ЖК-дисплеем, используя только 4 вывода данных (4-разрядный режим) вместо 8 (8-разрядный режим). Таким образом мы можем сэкономить 4 вывода Arduino!

Разница между 4-битным и 8-битным режимом

8-битный режим быстрее, чем 4-битный. Это связано с тем, что что в 8-битном режиме мы передаем данные за один раз. Однако в 4-битном режиме мы должны разделить байт на 2 части, сдвинуть один из них на 4 бита вправо и выполнить 2 операции записи.

Итак, 4-битный режим часто используется для экономии выводов микроконтроллера, а 8-битный режим лучше всего использовать, когда требуется высокая скорость в приложении и при этом доступно как минимум 10 выводов ввода/вывода микроконтроллера.

Итак, что мы будем работать с LCD дисплеем, используя 4-битный режим, и, следовательно, нам нужно только 6 контактов: RS, EN, D7, D6, D5 и D4.

Теперь давайте подключим ЖК-дисплей к Arduino. Четыре контакта данных (D4-D7) дисплея подключаем к цифровым контактам Arduino #4, #5, #6, #7. Вывод EN подключим к Arduino вывод #2, а вывод RS к выводу #1.

Какие бывают дисплеи для Ардуино и как их подключитьПодключение 16-символьного ЖК-дисплея к Arduino UNO

Скетч

Следующий тестовый скетч напечатает сообщение «Hello World!». Далее разберем его работу по подробнее.

//  подключаем библиотеку LiquidCrystal:
#include

// Создаем LCD объект. Выводы: (rs, enable, d4, d5, d6, d7)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup()
{
// устанавливаем количество столбцов и строк на дисплея:
lcd.begin(16, 2);

// Очищаем LCD дисплей
lcd.clear();
}

void loop()
{
// Печатаем сообщение на LCD.
lcd.print(» Hello world!»);

// устанавливаем курсор на столбец 0, строка 1
// (примечание: строка 1 — вторая строка, так как отсчет начинается с 0):
lcd.setCursor(0, 1);
// Печатаем сообщение на LCD.
lcd.print(» LCD Tutorial»);
}

Объяснение кода:

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

// подключаем библиотеку LiquidCrystal:
#include

Далее мы должны создать объект LiquidCrystal. Этот объект использует 6 параметров и указывает, какие выводы Arduino подключены к выводам RS, EN и выводам данных: d4, d5, d6 и d7.

// Создаем LCD объект. Выводы: (rs, enable, d4, d5, d6, d7)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

Теперь, когда мы объявили объект LiquidCrystal, мы можем получить доступ к специальным методам (или функциям), специфичным для ЖК-дисплея.

В функции setup() мы будем использовать две функции: первая функция begin(). В ней указываются размер дисплея, т.е. количества столбцов и строк. Если вы используете 16 × 2 символьный ЖК-дисплей, укажите параметры 16 и 2, если вы используете ЖК-дисплей 20 × 4, укажите параметры 20 и 4.

Вторая функция  clear()  очищает экран и перемещает курсор в верхний левый угол.

// устанавливаем количество столбцов и строк на дисплея:
lcd.begin(16, 2);
// Очищаем LCD дисплей
lcd.clear();

В функции loop() мы используем функцию print(), выводящая сообщение, которое мы видим в первой строке экрана.

// Печатаем сообщение на LCD.
lcd.print(» Hello world!»);

После этого мы переводим курсор на вторую строку, вызвав функцию setCursor(). Позиция курсора указывает место, где вам нужно отобразить новый текст на дисплее. Верхний левый угол считается col = 0, row = 0.

lcd.setCursor(0, 1);
lcd.print(» LCD Tutorial»);

Другие полезные функции библиотеки LiquidCrystal

Есть несколько полезных функций, которые вы можете использовать с объектом LiquidCrystal. Немногие из них перечислены ниже:

  • Если вы просто хотите расположить курсор в верхнем левом углу дисплея без очистки дисплея, используйте home().
  • Существует много приложений, таких как turbo C++ или notepad ++, в которых нажатие клавиши «insert» на клавиатуре меняет курсор. Точно так же вы можете изменить курсор на ЖК-дисплее с помощью blink() или lcd.Cursor().
  • Функция blink() отображает мигающий блок размером 5 × 8 пикселей, а lcd.Cursor() подчеркивание (линия) на позиции, в которую будет записан следующий символ.
  • Вы можете использовать функцию noblink(), чтобы отключить мигающий курсор на дисплее и lcd.noCursor() чтобы скрыть курсор.
  • Вы можете прокрутить содержимое дисплея на один пробел вправо, используя lcd.scrollDisplayRight() или один пробел влево используя lcd.scrollDisplayLeft(). Если вы хотите непрерывно прокручивать текст, вам нужно использовать эти функции внутри цикла for.
Читайте также:  Сетевые grid-tie инверторы для солнечных батарей

Генерация пользовательских символов для LCD

Если вы находите символы на дисплее неподходящими и неинтересными, вы можете создать свои собственные символы (глиф) для своего ЖК-дисплея. Пользовательские символы чрезвычайно полезны в том случае, когда вы хотите отобразить символ, который не является частью стандартного набора символов ASCII.

Как мы уже обсуждали ранее в этом руководстве, символ на дисплее формируется в матрице 5×8 пикселей, поэтому вам нужно определить свой пользовательский символ в этой матрице. Для определения символа необходимо использовать функцию createChar() библиотеки LiquidCrystal.

Для использования  createChar()  сначала необходимо назначить массив из 8 байт. Каждый байт (учитывается только 5 бит) в массиве определяет одну строку символа в матрице 5×8. В то время как нули и единицы в байте указывают, какие пиксели в строке должны быть включены, а какие-выключены.

Генератор символов LCD

Создание собственного символа до сих пор было непросто! Поэтому было создано небольшое приложение под названием «Генератор пользовательских символов» для LCD.

Вы видите синюю сетку ниже? Вы можете нажать на любой из 5 × 8 пикселей, чтобы установить/очистить этот конкретный пиксель. И когда вы нажимаете на пиксели, код для символа генерируется рядом с сеткой. Этот код может быть непосредственно использован в вашем скетче Arduino.

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

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

//  подключаем библиотеку LiquidCrystal:
#include

// Создаем LCD объект. Выводы: (rs, enable, d4, d5, d6, d7)
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// создадим несколько пользовательских символов
byte Heart[8] = {
0b00000,
0b01010,
0b11111,
0b11111,
0b01110,
0b00100,
0b00000,
0b00000
};

byte Bell[8] = {
0b00100,
0b01110,
0b01110,
0b01110,
0b11111,
0b00000,
0b00100,
0b00000
};

byte Alien[8] = {
0b11111,
0b10101,
0b11111,
0b11111,
0b01110,
0b01010,
0b11011,
0b00000
};

byte Check[8] = {
0b00000,
0b00001,
0b00011,
0b10110,
0b11100,
0b01000,
0b00000,
0b00000
};

byte Speaker[8] = {
0b00001,
0b00011,
0b01111,
0b01111,
0b01111,
0b00011,
0b00001,
0b00000
};

byte Sound[8] = {
0b00001,
0b00011,
0b00101,
0b01001,
0b01001,
0b01011,
0b11011,
0b11000
};

byte Skull[8] = {
0b00000,
0b01110,
0b10101,
0b11011,
0b01110,
0b01110,
0b00000,
0b00000
};

byte Lock[8] = {
0b01110,
0b10001,
0b10001,
0b11111,
0b11011,
0b11011,
0b11111,
0b00000
};

void setup()
{
// инициализируем LCD и устанавливаем количество столбцов и строк:
lcd.begin(16, 2);

// создание нового символа
lcd.createChar(0, Heart);
// создание нового символа
lcd.createChar(1, Bell);
// создание нового символа
lcd.createChar(2, Alien);
// создание нового символа
lcd.createChar(3, Check);
// создание нового символа
lcd.createChar(4, Speaker);
// создание нового символа
lcd.createChar(5, Sound);
// создание нового символа
lcd.createChar(6, Skull);
// создание нового символа
lcd.createChar(7, Lock);

// Очищаем LCD дисплей 
lcd.clear();

// Печатаем сообщение на LCD.
lcd.print(«Custom Character»);
}

// Печатаем все пользовательские символы
void loop()
{
lcd.setCursor(0, 1);
lcd.write(byte(0));

lcd.setCursor(2, 1);
lcd.write(byte(1));

lcd.setCursor(4, 1);
lcd.write(byte(2));

lcd.setCursor(6, 1);
lcd.write(byte(3));

lcd.setCursor(8, 1);
lcd.write(byte(4));

lcd.setCursor(10, 1);
lcd.write(byte(5));

lcd.setCursor(12, 1);
lcd.write(byte(6));

lcd.setCursor(14, 1);
lcd.write(byte(7));
}

После включения библиотеки нам нужно инициализировать пользовательский массив из восьми байтов.

byte Heart[8] = {
0b00000,
0b01010,
0b11111,
0b11111,
0b01110,
0b00100,
0b00000,
0b00000
};

В настройках мы должны создать пользовательский символ, используя функцию createChar(). Эта функция принимает два параметра. Первый — это число от 0 до 7, чтобы зарезервировать один из 8 поддерживаемых пользовательских символов. Второй параметр — это имя массива байтов.

// создание нового символа
lcd.createChar(0, Heart);

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

// byte(0) покажет символ Heart (сердце).
lcd.write(byte(0));
Какие бывают дисплеи для Ардуино и как их подключить

OLED I2C 128 x 64 px – схема подключения к Arduino

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

Обычные экраны, вроде Nokia 3310, не обеспечивают достаточного разрешения, к тому же их не видно в темноте.

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

OLED-экраны на базе контроллера SSD1306 популярны благодаря простому подключению, относительно низкой цене и высокому разрешению – для экрана диагональю 0.96 дюйма разрешение составляет аж 128×64! У того же Nokia 3310 разрешение составляет 84×48 пикселей при диагонали 1.5”.

Важным плюсом OLED-экранов является работа без подсветки – каждый пиксель – сам себе подсветка. За счёт такой системы, экран потребляет крайне мало тока (фактически, его можно запитать от пина Arduino). Есть и один минус – при постоянном использовании отдельные пиксели начинают выгорать и терять яркость, но до наступления этого состояния вы успеете отладить и вывести всё, что только можно.

Какие бывают дисплеи для Ардуино и как их подключить

Дисплей подключается по высокоскоростному интерфейсу I2C (относительно высокоскоростному – до 400Кбод) и использует всего 2 сигнальных провода. Это ещё один неоспоримый плюс! Несмотря на то, что интерфейс последовательный, да ещё и данные в обе стороны идут по одной линии, на рядовой Arduino можно достичь порядка 15-20fps, чего более чем достаточно для проектов.

Стоит заметить, что дисплей монохромный – цветные картинки на него не выведешь, а для текста или графика хватит и двух цветов.

Всего у дисплея 4 пина – VCC, GND, SDA, SCL. VCC и GND подключаются к VCC и GND Arduino соответственно (чтобы перестраховаться, лучше питать дисплей от пина 3.3В – не на всех модулях стоят понижающие преобразователи), а линии данных находятся у каждой версии Arduino на разных пинах. У Uno (Nano, Pro Mini и других платах на ATMega328/168) SDA – A4, SCL – A5. У Mega – SDA – 20, SCL – 21.

На платах 3 ревизии контакты интерфейса выведены перед 13 пином на гребёнке и подписаны соответственно.

Какие бывают дисплеи для Ардуино и как их подключить

Для экрана написано множество библиотек, его поддерживает в том числе и универсальная U8g2.
Для управления дисплеем нам потребуются две библиотеки:

1) Adafruit_GFX_Library — мы её уже ставили, когда подключали Nokia 5110

2) Adafruit_SSD1306 — библиотека для управления именно OLED дисплеями

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

Схема подключения OLED 128 x 64 к Arduino #include «SPI.h»
#include «Wire.h»
#include «Adafruit_GFX.h»
#include «Adafruit_SSD1306.h»
#define OLED_MOSI 9
#define OLED_CLK 10
#define OLED_DC 11
#define OLED_CS 12
#define OLED_RESET 13

Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);

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

delay(1000);
display.setTextSize(1); // установка размера шрифта
display.setTextColor(WHITE); // установка цвета текста
display.setCursor(0,0); // установка курсора

display.println(«Hello, world!»);
display.display();
}

void loop() {
}

#include «Adafruit_GFX.h»#include «Adafruit_SSD1306.h»Adafruit_SSD1306 display(OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);// инициализация и очистка дисплеяdisplay.begin(SSD1306_SWITCHCAPVCC);display.setTextSize(1); // установка размера шрифтаdisplay.setTextColor(WHITE); // установка цвета текстаdisplay.setCursor(0,0); // установка курсораdisplay.println(«Hello, world!»);

Ответить

Добавить комментарий

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

Adblock
detector