/*
* Набор для экспериментов ArduinoKit
* Код программы для опыта №10: sketch 10
*
* ЖИДКО КРИСТАЛЛИЧЕСКИЙ ДИСПЛЕЙ (ЖКИ)
*
* Написано для сайта http://arduinokit.ru
*
*
* Помощь сообщества Arduino.
* Посетите сайт http://www.arduino.cc
*
* Комментарий к программе написан
* 22 января 2014
* специально для http://arduinokit.ru и HelpSet.Ru
*/

ЖИДКО КРИСТАЛЛИЧЕСКИЙ ДИСПЛЕЙ (ЖКИ)

Жидкокристаллический дисплей (ЖКИ, или по английски «Liquid Crystal Display» — LCD) представляет собой сложный электронный модуль, который может быть использован для отображения текста или числовых данных. Дисплей размещен в рамке, на печатной плате, имеет две строки по 16 символов, а также подсветку, для использования в темное время суток.

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

Этот урок покажет вам, как подключить LCD к вашему Arduino и как выводить на него любые данные.

 

Подключение оборудования:

ЖК-модуль имеет 16-штырьковый разъем, (прилагается) припаянный к верхнему краю. Первый контакт находится ближе к углу дисплея. 16-ый контакт — ближе к центру ЖКИ.
Подключите ЖК к макетной плате.
Как обычно, общую шину «+» и «-» макетной платы соедините с вашей Arduino.
Подключите потенциометр 10K на свободное место на вашей макетной плате. Подключите крайнюю ножку потенциометра к +5В, а другую крайнюю к GND, не имеет значения, какой, куда. Во время опыта, вы будете использовать потенциометр для регулировки контрастности ЖК-дисплея.

Теперь соедините контакты ЖК с Arduino. Помните, что контакт 1 на ЖК-дисплее находится ближе к углу. От туда и начинайте.

1 к Земле (GND)
2 к +5V
3 к центральному пину потенциометра
4 к цифровому порту 12 Arduino
5 к Земле (GND)
6 tк цифровому порту 11 Arduino
7 (не подключен)
8 (не подключен)
9 (не подключен)
10 (не подключен)
11 к цифровому порту 5 Arduino
12 к цифровому порту 4 Arduino
13 к цифровому порту 3 Arduino
14 к цифровому порту 2 Arduino
15 к +5V
16 к Земле (GND)

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

Библиотека

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

Чтобы общаться с этим чипом, мы будем использовать библиотеку LiquidCrystal, которая является одной из стандартных библиотек Arduino. Эта библиотека делает всю самую тяжелую работу. Все что вам остается — выбрать место на дисплее и отправить туда свои данные!
Подсказки

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

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

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

// Подгузка библиотеки LiquidCrystal.h, которая даст нам
// возможность взаимодействия с ЖКИ без лишних сложностей:

#include <LiquidCrystal.h>

// Инициализация портов, которые мы применяем. Обратите внимание,
// вы можете использовать различные порты, те которые необходимы.
// Для дополнительной информации Вы можете посмотреть:
// http://arduino.cc/en/Reference/LiquidCrystal

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

void setup()
{
// Библиотека LiquidCrystal.h может использоваться с различными
// типами ЖК устройств. Мы используем двухстрочный, шестнадцати
// символьный ЖК индикатор. Поэтому здесь, ниже, мы информируем
// об этом Arduino, укажем ей с какой частью библиотеки работаем:

lcd.begin(16, 2); // устанавливаем кол-во столбцов и строк

// Данные отправленные на дисплей будут там оставаться, пока не
// будут перезаписаны новой информацией, или до отключении питания.
// Это может стать проблемой, — вы загружаете новый скетч в Arduino,
// а на ЖК дисплее все еще видны данные от старой программы. Поэтому,
// давайте очистим ЖК с помощью команды clear(),
// из библиотеки LiquidCrystal:

lcd.clear();

// Теперь мы будем отображать сообщения на ЖК-дисплее!

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

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

lcd.print(«hello, world!»); // печать на ЖКИ сообщения

// Регулировка контрастности (ВАЖНО!)

// При запуске скетча (программы) впервые, есть шанс
// что вы ничего не увидите на ЖК-дисплее. Это может произойти
// потому, что контрастность еще не отрегулирована.
// Не волнуйтесь, это легко исправить, и как только вы установите
// нужные параметры, больше уже менять ничего не понадобится.

// Запустите скетч, затем покрутите потенциометр, в разные стороны
// пока на ЖК дисплее не появится текст «Hello, World!».
// Если вы все еще не видете текст, проверить все соединения и
// убедитесь, что скетч был успешно загружен в Arduino.

}

void loop()
{

// Можно поместить невидимый курсор в любое место на ЖК дисплее
// перед передачей данных. Местоположение определяется от нулевого
// символа верхней строки. Верхняя строка — 0, нижняя строка — 1.
// Столбцы считаются с нулевого символа с лева, до 15-го справа.

// В дополнение к «Hello, World!»(привет, мир!) напечатанных ранее,
// выведем на экран время в секундах, от последнего сброса Arduino.
// Не забудьте, что данные, которые Вы отправляете на дисплей,
// остаются там, пока Вы их не сотрете, командой «lcd.clear()»,
// или не отключите питание.

// Здесь мы устанавливаем невидимый курсор в первый столбец (столбец 0),
// второй строки (строка 1):

lcd.setCursor(0,1);

// Теперь выведем на экран число секунд (millis() / 1000),
// которое проработала Arduino от последнего перезапуска:

lcd.print(millis()/1000);

// ПОДСКАЗКА: Так как увеличение чисел всегда растет в длину,
// (1..10..20…100….1000) то новые посланные, всегда,
// будут перекрывать предыдущие. Но, если Вы решите вывести на
// экран уменьшение чисел (пример — обратный отсчет), то Вы
// увидите на дисплее артефакты, как бы зависшие символы, это
// происходит если новое значение короче старого.

// Чтобы этого не происходило, Вы должны сначало стереть старое,
// прежде чем записать новое. Это можно сделать перезаписав последнее
// число пробелами.
// Если Вы сотрете старое число и сразу запишете новое, никто, даже Вы
// этого не заметит. Вот типичная последовательность кода:

// lcd.setCursor(0,1);   // устанавливаем курсор в 0-ом столбце, 1 строка
// lcd.print(»       «); // стираем самое длинное число
// lcd.setCursor(0,1);   // устанавливаем курсор в 0-ом столбце, 1 строка
// lcd.print(millis()/1000); // печатаем число секунд после сброса

// ДАЛЬНЕЙШИЕ ШАГИ:

// Вы узнали основы, о том как присоединить жидкокристаллический дисплей
// к Arduino, и как отправить текст или числовые данные на дисплей!

// У LCD библиотеки есть множество команд которые позволяют управлять ЖКИ:
// показать, спрятать курсор, прокрутить его, прокрутить экран вверх или вниз и т. д.
// для получения дополнительной информации:
// http://arduino.cc/en/Reference/LiquidCrystal

// Arduino IDE идет с множеством дополнительных библиотек, после установки
// их можно найти в c:Program FilesArduinolibraries
// Примеры библиотеки LiquidCrystal, с которыми вы можете «поиграть» находятся:
// c:Program FilesArduinolibrariesLiquidCrystalexamples

// Весело и с интересом проведите время, и сообщите нам о том, что у Вас получается!
// Ваши друзья — ArduinoKit.Ru.

}