ЗАДАЧИ УРОКА

  • Разобрать схему подключения LCD дисплея 16х2 к платам Arduino Uno и Mega 2560.
  • Рассмотреть программную реализацию вывода на дисплей тестовой информации.

ТЕОРИЯ

Дисплей LCD-1602G самое популярное устройство для отображения информации для начинающих. Не высокая цена, возможность не сложного подключения и простота программирования делают его участником большинства не сложных проектов.

Подключение дисплея LCD1602 по параллельному интерфейсу немного сложнее, чем через конвертер по шине I2C, а также требуется дополнительный элемент — потенциометр для регулировки контрастности. Минусом такого подключения является необходимость задействовать практически все порты ARDUINO UNO. На сегодняшний день практически не используется.

Шина данных дисплея состоит из 8 линий (D0-D7), но если подключить только старшие 4 линии (D4-D7). Вы можете подключать выводы D0-D7, E и RS дисплея, к любым выводам Arduino, указав их в скетче при объявлении объекта библиотеки.

Для удобного подключения дисплея LCD1602 рекомендуется использовать конвертер LCD-1602-IIC-Adapter

ПЕРЕЧЕНЬ КОМПОНЕНТОВ

  • ARDUINO UNO R3 (оригинальная плата)
  • ARDUINO MEGA 2560 (оригинальная плата с микросхемой ATmega 2560)
  • LCD дисплей 16х2 с модулем I2C
  • Монтажная плата
  • Соединительные провода

МАКЕТ СХЕМЫ. ПОДКЛЮЧЕНИЕ К ARDUINO UNO.

Практическая реализация макета

Для начала приведем общий листинг программы.

  1. #include <Wire.h> // Подключаем библиотеку для работы с протоколом I2C
  2.  
  3. #include <LiquidCrystal_I2C.h> // Подключаем библиотеку <Экран> с блоком I2C
  4. LiquidCrystal_I2C lcd(0x27,16,2); // Обозначаем именем lcd объект-дисплей. Андрес объекта 0х27. Характеристики: 16 символов, 2 строки.
  5.  
  6. void setup()
  7. {
  8. lcd.init();
  9. lcd.backlight();
  10. }
  11.  
  12. void loop()
  13. {
  14. lcd.setCursor(0,0);
  15. lcd.print("liprobot.ru");
  16.  
  17. lcd.setCursor(0,1);
  18. lcd.print("LCD display 16x2");
  19. }

Теперь давайте разберем программу подробнее…

#include <LiquidCrystal_I2C.h>           
LiquidCrystal_I2C lcd(0x27,16,2);         

Стоит еще раз отметить, что в строке 4 первым значением в скобках стоит назначаемый адрес для дисплея (0х27). Если адрес указан верно, то в момент запуска программы вы будете наблюдать секундное выключение дисплея и последующее включение с нужной информацией. Если это не произошло, адрес указан не верно. На занятиях нам попадались дисплеи с адресом 0х30.

В блоке void setup() у нас две команды.

 lcd.init();                      
 lcd.backlight();      

lcd.init(); отвечает за инициализацию дисплея, а lcd.backlight(); за включение подсветки. Попробуйте выключить программно подсветку, в определенных условиях внешнего освещения можно получить интересный эффект.

Ну и самое главное. Команда lcd.setCursor(X,Y).

 void loop() 
{
 lcd.setCursor(0,0);             
 lcd.print("liprobot.ru");      
 
 lcd.setCursor(0,1);             
 lcd.print("LCD display 16x2");      
}

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

МАКЕТ СХЕМЫ. ПОДКЛЮЧЕНИЕ К ARDUINO MEGA 2560.

В связи с большим количеством портов Arduino Mega 2560 подключение LCD дисплея имеет определенные особенности. В отличии от Arduino UNO, за реализацию обмена данными по протоколу I2C в  Arduino Mega отвечают порты 20,21 которые изначально и предполагались для подключения сигналов SDA и SCL. В остальном работа с LCD-дисплеем остается классической для такого типа устройств.