Руководство по работе с LCD-дисплеями с I2C модулем

Подключение к Arduino Nano R3

Необходимые контакты:

  • SDA (данные) подключается к пину A4 Arduino
  • SCL (тактовый сигнал) подключается к пину A5 Arduino
  • VCC (питание) подключается к 5V Arduino
  • GND (земля) подключается к GND Arduino

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

Необходимые библиотеки

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

#include // Библиотека для работы с I2C #include // Основная библиотека для LCD

Базовые настройки дисплея

Инициализация дисплея:

// Инициализация для LCD1602 LiquidCrystal_I2C lcd(0x27, 16, 2); // Или для LCD2004 LiquidCrystal_I2C lcd(0x27, 20, 4); void setup() { lcd.init(); // Инициализация дисплея lcd.backlight(); // Включение подсветки lcd.setCursor(0, 0); // Установка курсора lcd.print("Привет, мир!"); }

0x27 — это адрес устройства на шине I2C. 0x27 — стандартный адрес для дисплеев. Он может отличаться, для проверки адреса есть скетчи-сканеры. Код такого сканера можно посмотреть тут.

Основные команды управления

Работа с текстом:

lcd.print("Текст"); 
// вывод текста

lcd.setCursor(x, y); 
// установка позиции курсора (x — колонка, y — строка)

lcd.clear(); 
// очистка дисплея

lcd.noDisplay(); 
// отключение отображения

lcd.display(); 
// включение отображения

Примеры использования

Простой пример вывода информации на LCD1602:

Вот так выглядит схема подключения:

Регулятор на обратной стороне платы модуля I2C — настройка контрастности. При первом подключении подстройте контрастность экрана так, чтобы символы на экране хорошо читались.

Скетч:

#include <LiquidCrystal_I2C.h> 
// Подключаем библиотеку для работы с LCD дисплеем по шине I2C

LiquidCrystal_I2C lcd(0x27,16,2); 
// Объявляем объект библиотеки, указывая параметры дисплея
// (адрес I2C = 0x27, количество столбцов = 16, количество строк = 2)

void setup() {
 lcd.init(); 
 // Инициируем работу с LCD дисплеем
 lcd.backlight(); 
 // Включаем подсветку LCD дисплея
 lcd.setCursor(0, 0); 
 // Устанавливаем курсор в позицию (0 столбец, 0 строка)
 lcd.print("LCD | TSH E.Shop"); 
 // Выводим текст "LCD | TSH E.Shop"
 lcd.setCursor(0, 1);
 lcd.print("SKU 2470466804");
}

void loop() {
}

Давайте разберем этот код подробно:

  1. Подключение библиотеки и инициализация:
  • #include <LiquidCrystal_I2C.h> — подключает библиотеку для работы с LCD дисплеем
  • LiquidCrystal_I2C lcd(0x27,16,2) — создает объект дисплея с параметрами:
    • Адрес I2C модуля: 0x27
    • 16 символов в строке
    • 2 строки дисплея
  1. Функция setup():
  • lcd.init() — инициализирует дисплей
  • lcd.backlight() — включает подсветку
  • lcd.setCursor(0, 0) — устанавливает курсор в начало первой строки
  • lcd.print() — выводит текст на дисплей
  • Вторая строка выводится аналогично

Важные замечания:

  • Дисплей имеет размер 16×2 символов
  • Адрес I2C модуля должен соответствовать реальному подключению
  • В функции loop() код отсутствует, так как вся логика отображения выполняется один раз при старте
  • Можно модифицировать текст и расположение для отображения другой информации
  • При необходимости можно добавить динамическое обновление информации в loop()

Простой пример вывода информации на LCD2004:

#include <LiquidCrystal_I2C.h> 
// Подключаем библиотеку для работы с LCD дисплеем по шине I2C

LiquidCrystal_I2C lcd(0x27,20,4); 
// Объявляем объект библиотеки, указывая параметры дисплея
// (адрес I2C = 0x27, количество столбцов = 20, количество строк = 4)

void setup() {
 lcd.init(); 
 // Инициируем работу с LCD дисплеем
 lcd.backlight(); 
 // Включаем подсветку LCD дисплея
 lcd.setCursor(0, 0); 
 // Устанавливаем курсор в позицию (0 столбец, 0 строка)
 lcd.print("LCD 2004"); 
 // Выводим текст "LCD 2004"
 lcd.setCursor(0, 1);
 lcd.print("TSH Electronic shop");
 lcd.setCursor(0, 2);
 lcd.print("SKU 2470466781");
 lcd.setCursor(0, 3);
 lcd.print("Creative success!");
}

void loop() {
}

Пример с форматированием:

void setup() { lcd.init(); lcd.backlight(); lcd.setCursor(0, 0); lcd.print("Дата:"); lcd.setCursor(6, 0); lcd.print("12.05.2025"); lcd.setCursor(0, 1); lcd.print("Время:"); lcd.setCursor(6, 1); lcd.print("14:30"); }

Дополнительные возможности

Управление контрастностью:

lcd.init(); lcd.setBacklight(255); // Регулировка яркости (0-255)

Автоматическое обновление экрана:

void loop() {
  static unsigned long previousMillis = 0;
  const long interval = 1000;
  
  if(millis() - previousMillis > interval) {
    previousMillis = millis();
    lcd.clear();
    lcd.print("Новые данные");
  }
}

Типичные проблемы и решения

  • Дисплей не отображается: проверьте правильность подключения и адрес I2C (0x27 или 0x3F)
  • Неверный адрес: используйте сканер I2C для определения правильного адреса
  • Проблемы с контрастностью: отрегулируйте потенциометр на модуле
  • Нестабильная работа: проверьте качество подключения питания

Категория

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *