Как подключить и использовать экран (жидкокристаллический дисплей) с Arduino. (Её можно скачать с официального сайта: www.arduino.cc).Такие ЖК-дисплеи очень популярны и широко используются во многих проектах электроники, потому что они отлично подходят для отображения простой информации данных датчиков, и при этом очень доступны по цене.
Что такое жидкокристаллический символьный дисплей?
Символьные ЖК-мониторы — это уникальный тип дисплея, который может выводить только отдельные символы ASCII с фиксированным размером. Используя эти отдельные элементы можно формировать текст.
Если внимательно посмотреть на дисплей в глаза попадаются небольшие прямоугольные области, состоящие из сетки 5×8 пикселей. Каждый пиксель может светиться отдельно и таким образом генерировать символы в пределах каждой сетки.
Количество прямоугольных областей определяет размер ЖК-дисплея. Самый популярный — это монитор 16×2, который имеет два ряда с 16 прямоугольными областями или символами. Конечно, существуют и другие размеры: 16×1, 16×4, 20×4 и так далее, но все они работают по одному и тому же принципу. Кроме того, могут иметь разный цвет фона и текста.
Распиновка ЖК-дисплея 16×2
Он имеет 16 выводов, первый слева направо — это вывод Ground. Второй VCC, к которому подключается 5 вольт на плате Arduino. Следующий Vo, к которому подключается потенциометр для управления контрастностью дисплея.
Далее, вывод RS или выбора регистра используется для выбора того, чтобы посылать команды или данные на ЖК-дисплей. Например, если вывод RS установлен в низкое состояние или ноль вольт, то посылается на ЖКИ команды: установить курсор в определенное место, очистить дисплей, выключить и так далее. А когда вывод RS установлен в состояние High или 5 вольт, посылается данные или спецсимволы на монитор.
Далее идет вывод R/W, который выбирает режим чтения или записи на ЖКИ. Здесь очевиден режим записи, который используется для записи или отправки команд и данных. Режим чтения используется самим монитором при выполнении программы.
Далее следует пин E, который разрешает запись в регистры или следующие 8 пинов данных от D0 до D7. Через эти контакты отправляется 8 бит информации при записи в регистры или например, чтоб увидеть на дисплее последнюю заглавную букву A, отправляется в регистры 0100 0001 в соответствии с таблицей ASCII. Последние два контакта A и K или анод и катод, предназначены для светодиодной подсветки.
В конце концов, не нужно особо беспокоиться о том, как работает ЖК-дисплей, поскольку библиотека Liquid Crystal Library позаботится практически обо всем. На официальном сайте Arduino можно найти и посмотреть функции библиотеки, которые позволяют легко пользоваться библиотекой в 4-х или 8-ми битном режиме.
Как Нужно подключить экран 16×2 к плате.
Использовать только 6 цифровых входных контактов платы Arduino. Регистры экрана с D4 по D7 будут подключены к цифровым контактам с 4 по 7. Контакт Enable будет подключен к номер 2, а RS — к контакту номер 1. R/W будет подключен к земле, а контакт Vo будет подключен к среднему потенциометра.
Регулировка контрастности монитора.
Можно регулировать контрастность, изменяя напряжение на выводе Vo. Использовать потенциометр, таким образом легко настроить контрастность, регулируя входное напряжение от 0 до 5 В.
Можно ли использовать ЖК-дисплей без потенциометра?
Возможно, если нет потенциометра, все равно получиться настроить контрастность с помощью делителя напряжения, состоящего из двух резисторов. Применяя делитель напряжения, должны установить значение напряжения между 0 и 5 В можно получить хороший контраст на дисплее. Напряжение около 1 В отлично подходит для экрана. Применить резистор 1K и 220 Ом, чтобы получить хороший контраст.
Есть и другой способ регулировки контрастности монитора, который заключается в подаче ШИМ-сигнала от Arduino на вывод Vo. Подключить вывод Vo к любому выводу с поддержкой ШИМ, и в разделе настройки прописать следующую строку кода:
Она будет генерировать ШИМ-сигнал на выводе D11, со значением 100 из 255, что переводится в напряжение от 0 до 5 В, это будет около 2 В на входе на вывод Vo LCD.
Код LCD
Вот простой код, с помощью которого получиться объяснить принцип работы жидкокристаллической библиотеки:
#include // включает библиотеку LiquidCrystal Library
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Создает объект LCD. Параметры: (rs, enable, d4, d5, d6, d7)
void setup() {
lcd.begin(16,2); // Инициализирует интерфейс ЖК-экрана и задает размеры (ширину и высоту) дисплея }
}
void loop() {
lcd.print(«Arduino»); // Печатает на монитор
delay(3000); // Задержка 3 секунды
lcd.setCursor(2,1); // Устанавливает место, в котором будет отображаться последующий текст, записанный на ЖК-дисплей
lcd.print(«LCD Tutorial»);
delay(3000);
lcd.clear(); // Очищает дисплей
lcd.blink(); //Отображает мигающий ЖК-курсор
delay(4000);
lcd.setCursor(7,1);
delay(3000);
lcd.noBlink(); // Выключает мигающий ЖК-курсор
lcd.cursor(); // Отображает знак подчеркивания (черту) в позиции, в которую будет записан следующий символ
delay(4000);
lcd.noCursor(); // Скрывает ЖК-курсор
lcd.clear(); // Очищает ЖК-экран
}
Описание кода:
Первое, что нужно сделать, это вставить жидкокристаллическую библиотеку. Сделать это следующим образом: Sketch > Include Library > Liquid Crystal. Затем должны создать объект LC. Параметрами этого объекта должны быть номера выводов цифрового входа платы Arduino соответственно выводам LCD следующим образом: (RS, Enable, D4, D5, D6, D7). В установке должны инициализировать интерфейс с ЖК-дисплеем и указать размеры дисплея с помощью функции begin().
В цикле пишется основная программа. Используя функцию print(), выводится изображение на ЖК-дисплей.
lcd.print(«Arduino»); // Печатает » на мониторе.
Функция setCursor() используется для установки места, в котором будет отображаться последующий текст, записанный на ЖКИ.
lcd.setCursor(2,1); // Устанавливает место, в котором будет отображаться последующий текст, записанный на ЖК-дисплее
Функция blink() используется для отображения мигающего курсора, а noBlink() — для выключения.
lcd.blink(); //Отображает мигающий ЖК-курсор
Функция cursor() используется для отображения курсора с подчеркиванием, а noCursor() — для выключения. С помощью clear() очистить ЖК-экран.
lcd.clear(); // Очистка ЖК-экрана
Пример прокрутки текста на ЖК-дисплее 16×2 и.
Если есть текст длиной более 16 символов, прокрутить его с помощью scrollDisplayLeft() или scrollDisplayRight() из библиотеки LiquidCrystal.
Вот пример кода:
#include
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Создает объект LCD. Параметры: (rs, enable, d4, d5, d6, d7)
void setup() {
lcd.begin(16, 2);
lcd.print(«Пример прокрутки текста»);
}
void loop() {
lcd.scrollDisplayLeft();
delay(500);
}
С помощью scrollDisplayLeft() или scrollDisplayRight() выбраться, в какую сторону будет прокручиваться текст — влево или вправо. С помощью delay() устанавливается скорость прокрутки.
Получить больше контроля над прокруткой текста, также сделать прокрутку самостоятельно, используя цикл «for». Вот пример:
#include
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Создает объект LCD. Параметры: (rs, enable, d4, d5, d6, d7)
void setup(){
lcd.begin(16, 2); // Инициализирует интерфейс ЖК-экрана и задает размеры (ширину и высоту) дисплея
}
void loop() {
// прокрутка текста вправо
for (int i = 0; i<= 13; i++) {
lcd.setCursor(i, 0); // Устанавливает место, в котором будет отображаться последующий текст, записанный на ЖК-дисплей
lcd.print(«LCD»);
delay(500); // Задержка в 1 секунду
lcd.clear(); // Запись символа на дисплей
}
// прокрутка текста влево
for (int i = 12; i >= 1; i—) {
lcd.setCursor(i, 0);
lcd.print(«LCD»);
delay(500);
lcd.clear();
}
}
Как генерировать и отображать пользовательские символы на мониторе. Помимо ASCII, с помощью библиотеки LiquidCrystal можно генерировать и отображать на ЖК-дисплее пользовательские спецсимволы.
Задать внешний вид каждого символа с помощью массива из 8 байт. Вот пример кода:
#include
byte heart[8] = { // Массив байтов
B00000, // B означает двоичный форматтер, а пять цифр — это пиксели.
B01010,
B11111,
B11111,
B01110,
B00100,
B00000,
B00000
};
byte smile[8] = {
B00000,
B00000,
B01010,
B00000,
B10001,
B01110,
B00000,
B00000
};
byte lock[8] = {
B01110,
B10001,
B10001,
B11111,
B11011,
B11011,
B11111,
B00000
};
byte character[8] = {
B11111,
B10101,
B11111,
B01010,
B01110,
B11111,
B01110,
B01110
};
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Создает объект LC. Параметры: (rs, enable, d4, d5, d6, d7)
void setup() {
lcd.begin(16, 2); // Инициализирует интерфейс ЖК-экрана и задает размеры (ширину и высоту) дисплея
lcd.createChar(0, heart); // Создание пользовательского символа
lcd.createChar(1, smile);
lcd.createChar(2, замок);
lcd.createChar(3, character);
// Очистка монитора
lcd.clear();
// Вывод сообщения на дисплей
lcd.print(«Пользовательский символ»);
}
void loop() {
lcd.setCursor(1, 1);
lcd.write(byte(0)); // Отображение пользовательского знака 0, сердца
lcd.setCursor(5, 1);
lcd.write(byte(1));
lcd.setCursor(9, 1);
lcd.write(byte(2));
lcd.setCursor(13, 1);
lcd.write(byte(3));
}
Задать внешний вид, меняя 0 на 1 в пределах сетки 5×8 пикселей.
В настройке должны создать пользовательский символ с помощью createChar().
lcd.createChar(0, heart); // Создание пользовательского элемента
Первым параметром в этой функции является число от 0 до 7 или должны зарезервировать один из 8 поддерживаемых пользовательских символов. Второй параметр — это имя массива байтов.
Записывается пользовательский спецсимвол на дисплей с помощью write(), а в качестве параметра используем номер знака.
lcd.write(byte(0)); // Отображение пользовательского знака 0, или сердца.
Итак, рассмотрено практически все, что нужно знать об использовании ЖК-дисплеев. Это действительно удобны для отображения информации во многих электронных проектах. В приведенных выше примерах использовано монитор 16×2, но тот же принцип работы применим для любого другого размера этих символьных дисплеев.
Кабели для общих экранов.
Для проекта Arduino, в котором используются экраны, могут также потребоваться кабели для этих экранов.
Ниже перечислены распространенные экраны и соответствующие кабели, которые следует использовать с ними:
- Ethernet категории 5 с разъемом RJ45
- Реле
- LCD и дисплеи
- Емкостные тачпады
- CAN-шина
- Кабель данных CAN-шины
- Протощит
- Провода
- Мотор
- Провода
Кабели CAN-шины на рынке в дефиците, достать труднее всего на фоне остальных. Кабель Ethernet может иметь длину до 100 м, в том числе при использовании «Power over Ethernet». Кабель CAN-шины может иметь длину до 250 м. Многие проекты, отлично обходится с более 50 м Ethernet или CAN-шины, по этой причине не стоить приобретать столь длинные кабели.