В табл. 10.2 приведен рекомендуемый порядок соединения контактов ЖК-дисплея и платы Arduino. Можно подключить дисплей и к другим контактам ввода-вывода.
Рис. 10.2. Подключение ЖК-дисплея к макетной плате и Arduino
- 206 -
Таблица 10.2. Таблица соединения контактов
Контакты ЖК-дисплея
|
Контакты Arduino
|
RS
|
D2
|
EN
|
D3
|
D4
|
D4
|
D5
|
D5
|
D6
|
D6
|
D7
|
D7
|
Подключите ЖК-дисплей к плате Arduino по схеме, приведенной на рис. 10.2.
Теперь ЖК-дисплей готов к работе. Как только вы загрузите программу из следующего раздела на плату Arduino, то сможете отображать текст на экране. С помощью потенциометра отрегулируйте контрастность символов.
10.2. Библиотека LiquidCrystal
Arduino IDE включает библиотеку LiquidCrystal, имеющую набор функций для взаимодействия с параллельными ЖК-дисплеями. Библиотека довольно обширна и реализует такие функции, как мигающий курсор, автоматическая прокрутка текста, создание пользовательских символов, изменение направления вывода текста.
В этой главе мы рассмотрим только самые необходимые инструменты, чтобы понять, как взаимодействовать с дисплеем. Полное описание библиотечных функций и примеры, иллюстрирующие их использование, можно найти на сайте Arduino:
http://arduino.cc/en/Reference/LiquidCrystal.
10.3. Вывод текста на дисплей
В нашем первом примере выведем на экран индикатора текст и число, меняющееся со временем. Это упражнение проиллюстрирует, как инициализировать дисплей, отображать текст и перемещать курсор.
Сначала необходимо подключить библиотеку LiquidCrystal:
#include
Затем нужно инициализировать объект LiquidCrystal:
LiquidCrystal lcd (2,3,4,5,6,7);
Аргументы для инициализации объекта представляют собой контакты Arduino, подключенные к выводам ЖК-дисплея в следующем порядке: RS, EN, D4, DS, D6, D7. Чтобы настроить конфигурацию ЖК-индикатора, в функции setup() необходимо вызвать библиотечную функцию begin(), ее аргументы - число столбцов и строк вашего ЖК-дисплея:
lcd.begin (16, 2);
- 207 -
После этого можно вызывать библиотечные функции print() и setcursor() для вывода текста в определенном месте дисплея. Например, если вы хотите напечатать мое имя во второй строке, введите следующие команды:
lcd.setCursor (0,1);
lcd.print ("Jeremy Blum");
Позиции на экране нумеруются, начиная с (0,0), что соответствует левому верхнему углу. Первый аргумент функции setcursor() определяет номер столбца, а второй номер строки. По умолчанию курсор находится в позиции (0,0). При вызове функции print() без указания расположения курсора текст выводится, начиная с позиции в верхнем левом углу.
ВНИМАНИЕ!
Функция print() не проверяет длину строк и попытка напечатать последовательность символов, превышающую число знаков в строке, приведет к непредсказуемым последствиям. Всегда проверяйте, чтобы выводимый текст помещался на экране индикатора.
Теперь можно написать простую программу, которая отображает текст в первой строке и во втором столбце, а также выводит значение счетчика, которое увеличивается на единицу каждую секунду. В листинге 10. 1 приведен текст данной программы. Загрузите ее на плату Arduino и убедитесь, что все работает правильно.
Если изображение на дисплее отсутствует, отрегулируйте контрастность с помощью потенциометра.
Листинг 10.1. Вывод текста и значений счетчика на экран ЖК-дисплея - LCD_text.ino
// Текст и значение инкрементируемого счетчика на экране
// Подключение библиотеки:
#include
// Начальное значение time = O
int time = 0;
// Инициализация экземпляра библиотеки LiquidCrystal
LiquidCrystal lcd(2, 3, 4, 5, 6, 7);
void setup()
{
// Настройка экземпляра дисплея - число столбцов и строк:
lcd.begin(16, 2);
// Вывод текстового сообщения на экран дисплея
lcd.print("Jeremy's Display");
}
void loop()
{
// Установить курсор на вторую строку в первую позицию
lcd.setCursor(0,1);
- 208 -
// Вывод значения счетчика
lcd.print(time);
// Пауза 1 секунда
delay(1000);
// Увеличение значения счетчика
time++;
}
Программа должна быть вам понятна. В начале подключается библиотека LiquidCrystal. Переменной времени time присваивается нулевое начальное значение и затем оно увеличивается в цикле раз в секунду. Объект LiquidCrystal назван lcd и ему присвоены значения контактов, соответствующие схеме соединения.
Команда lcd.begin (16, 2) задает размер дисплея: 16 столбцов и 2 строки. Поскольку первая строка не меняется, ее можно инициализировать в функции setup() командой lcd.print(). Обратите внимание, что команда выполняется без предварительной установки курсора, потому что по умолчанию текст выводится, начиная с позиции (0,0). В цикле курсор всегда возвращается в позицию (0, 1 ), поэтому при выводе значения переменной time каждый раз переписывается вторая строка. Экран обновляется раз в секунду и одновременно увеличивается счетчик времени.
Читать дальше