Главная » Статьи » Arduino с нуля » Работа с Arduino

Урок 7. Подключение LCD индикатора к платформе Arduino

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

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

 

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

 

Для урока нам нужны следующие компоненты:

 

  1. Arduino UNO
  2. Breadboard
  3. Соединительные провода
  4. Перемычки
  5. Потенциометр 
  6. LCD индикатор 1602

 

Так как у моего LCD, при покупке, не было выведенных контактов, для подсоединения к Breadboard'у, нужно было их припаять. Для этого использовал штырьковую монтажную колодку.

 

 

Примеряем колодку к дисплею:

 

 

И припаиваем ее. Вот что получилось после пайки:

 

 

 

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

Подключаем графический индикатор к Arduino по следующей схеме:

 

 

У меня получилось так:

 

 

 

Схему мы собрали. Теперь запускаем Arduino IDE и пишем следующий скетч:

#include <LiquidCrystal.h> //Подключаем библиотеку для работы с LCD
LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2); // инициализируем LCD, указывая управляющие контакты
void setup() {
 lcd.begin(16, 2);// задаем размерность дисплея
 lcd.print("GM-project.com"); // выводим на дисплей фразу
}
void loop() {
}

 

Давайте разберемся с кодом, перед заливкой его в Arduino. 

  • Сначала подключаем стандартную библиотеку для работы с LCD 
    #include <LiquidCrystal.h>
  • Следующей функцией мы инициализируем LCD, указывая контакты.
    LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
    В общем виде эта функция выглядит так:
    LiquidCrystal lcd(RS, R/W, ENABLE, DB4, DB5, DB6, DB7);
  • Теперь в функции setup() мы указываем размерность экрана. В данном случае 16 (столбцов) х 2 (строк).
    lcd.begin(16, 2);
  • И выводим на дисплей текст, указанный в двойных ковычках
    lcd.print("GM-project.com");

 

Заливаем в Arduino код. Должно получиться следующее:

 

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

 

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

Схему изменять мы не будем. Изменим только сам код программы. Для отображения даты и времени, будем использовать библиотеку Time.h. Скачать ее Вы можете тут.

Распакуйте весь архив в подкаталог libraries в папке Arduino (по умолчанию: C:\Program Files\Arduino\libraries).Теперь запрограммируем наше устройство.

 

Открываем Arduino IDE и пишем следующий код:

 

#include <Time.h>
#include <LiquidCrystal.h>

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

void setup(){
 lcd.begin(16, 2);
 setTime(20,58,0,18,11,2015); // 20 часов 58 минут, 18 ноября 2015 года
}

void loop(){
 lcd.clear();
 lcd.print( day() );
 lcd.print( "." );
 lcd.print( month() );
 lcd.print( "." );
 lcd.print( year() );

 lcd.setCursor(0, 1);
 lcd.print( hour() );
 lcd.print( ":" );
 lcd.print( minute() );
 lcd.print( ":" );
 lcd.print( second() );

 delay(1000);
}

 

Разбор кода:

  • В функции 
    setTime(20,58,0,18,11,2015);
    мы задаем начальные данные. Как бы настраиваем наши часы. В общем виде эта функция выглядит так:
    setTime(Час,минута,секунда,день,месяц,год);
  • В функции loop(), мы первым делом очищаем экран
    lcd.clear();
  • И потом выводим на экране, в первой строке, дату
     lcd.clear();
     lcd.print( day() );
     lcd.print( "." );
     lcd.print( month() );
     lcd.print( "." );
     lcd.print( year() );
  • Переходим на вторую строку и выводим время
     lcd.setCursor(0, 1);
     lcd.print( hour() );
     lcd.print( ":" );
     lcd.print( minute() );
     lcd.print( ":" );
     lcd.print( second() );
  • И такое обновление мы проводим каждую секунду
     delay(1000);

 

Заливаем код в Arduino и видим следующее:

 

Наши часы готовы. Выглядит очень красиво и аккуратно. 

 

Задания для самостоятельного выполнения:

  1. Сделайте так, чтобы при включении устройства, выводилась сначала надпись загрузки в анимационном виде (Например: 1 кадр: "Loading.", 2 кадр: "Loading..", 3 кадр: "Loading..."). И потом уже выводился экран с временем и датой. 
  2. Поэкспериментируйте с выводом информации на экран, используя при этом функции библиотеки LiquidCrystal.h

 

Одиннадцатый урок проекта "Arduino с нуля" подошел к концу. Надеюсь тема была для вас полезной, и вы узнали что-нибудь новое. Также надеюсь, что при выполнении заданий у вас не возникнет вопросов и вы справитесь самостоятельно.

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

 

Если Вам понравился наш урок, поделитесь им с друзьями.

 

 


←Предыдущий урок | Следующий урок→


 

Категория: Работа с Arduino | Добавил: GM (19.11.2015)
Просмотров: 4364 | Комментарии: 12 | Рейтинг: 5.0/1
Всего комментариев: 12
avatar
1 Денис Брушко • 23:23, 28.12.2015
Не нужно ли дополнительный модуль к дисплею?Или же он и без него будет работать? smile
avatar
1
2 GM • 12:27, 29.12.2015
LCD дисплей и без модуля прекрасно работает. Модуль используется для уменьшения количества занимаемых пинов. Без модуля займем 10 пинов, а с модулем всего 4. Это с учетом питания smile
avatar
3 Денис Брушко • 16:11, 30.12.2015
Что нужно  сделать что бы можно было продолжить надпись на втором рядке?
avatar
0
4 GM • 16:36, 30.12.2015
Не совсем понял вопрос. Можно подробнее?
avatar
5 Денис Брушко • 20:30, 30.12.2015
Ну этот дисплей имеет два ряда по 16 символов..я пишу текст из 18 символов...у меня не отображаются 2 символа ....а на второй ряд автоматически не переносит...что делать?
avatar
1
6 GM • 21:42, 30.12.2015
Можно сделать так:  весь текст записать в массив (text[ ]). Далее проверить, если размер массива больше 16, то вывести в первую строку 16 символов из всего массива, далее перейти на следующую строку, и вывести оставшиеся. Код будет выглядеть примерно так:


Код
#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 10, 5, 4, 3, 2);
char text[] = "www.GM-project.com";
void setup(){
   lcd.begin(16, 2);
}

void loop(){
   lcd.clear();
     
   if (sizeof(text)>16)
   {
     lcd.setCursor(0, 0);
     for (int i=0;i<17;i++)
     {
       lcd.print(text[i]);
     }
     lcd.setCursor(0, 1);
     for (int j=16;j<=sizeof(text)-2;j++)
     {
       lcd.print(text[j]);
     }     
   }
   else lcd.print(text);
     
delay(1000);
}
avatar
7 Денис Брушко • 22:37, 30.12.2015
Спасибо,вы супер)Побольше бы таких отзывчивых людей) hands
avatar
0
8 GM • 10:37, 31.12.2015
Спасибо smile  Обращайтесь еще, если вдруг что будет не понятно -  обязательно поможем smile
avatar
9 Кузяня Boom • 13:07, 14.05.2016
А есле я хочу другой дисплей подключить, у которого всего 4 котакта(GND, VCC, SCL, SDA) то могу ли я использовать эту библиотеку?
avatar
0
11 GM • 19:04, 24.05.2016
Смотря какой дисплей. Библиотека "LiquidCrystal" содержит необходимые функции управления жидкокристаллическим дисплеем, созданным на базе контроллеров, совместимых сHitachi 44780. В число этих дисплеев входит большое количество популярных алфавитно-цифровых устройств, для которых в библиотеке содержатся высокоуровневые функции инициализации, управления и вывода информации на экран.  "LiquidCrystal"  поддерживает работу как в 8-ми, так и в 4-х проводном режиме обмена данными. Так что возможно эта библиотека подойдет и к вашему дисплею.
avatar
10 Alexandr Buzov • 09:15, 18.05.2016
здравствуйте. а часы после отключения питания будут стартовать с того времени, которое было указано изначально?
avatar
0
12 GM • 19:15, 24.05.2016
Здравствуйте! Да, часы при подключении питания пойдут именно с того времени, которое было указано в коде программе, а именно в строчке:

 setTime(20,58,0,18,11,2015);

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