Подключение LCD 2004A к Arduino по шине I2C

Создано 3.03.2017 14:00, автор EW1ADF

Спецификация модуля https://www.beta-estore.com/download/rk/RK-10290_410.pdf

Подключение дисплея с использованием шины I2C весьма удобно, так как требует для этого всего 2 линии передачи данных: SCL (serial clock) и SDA (serial data). На плате Arduino для этих целей используются аналоговые пины A5 и A4 соответственно.

Дисплей 2004A имеет 4 строки по 20 символов и внешне выглядит следующим образом:

Для подключения дисплея к шине I2C используется расширитель портов на микросхеме PCF8574.

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

Так как в данном случае совместно с платой Arduino использовался протошилд, то собранная схема выглядит так:

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

Для этого необходимо определить адрес, по которому подключен дисплей с помощью скетча i2c_scanner, определяющим все устройства на шине I2C http://playground.arduino.cc/Main/I2cScanner

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

Подключение и использование дисплея программно, осуществляется с помощью библиотеки LiquidCrystal_I2C https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library, которую необходимо скачать и распаковать в папку библиотек Arduino (C:\Program Files\Arduino\libraries).

Исходный код тестового скетча:

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x3f, 20, 4); //i2c-адрес, кол-во символов, кол-во строк

void setup()
{
  lcd.begin();
  lcd.backlight();
}

void loop()
{
  for (char x=33; x<=125; x++)
  {
  lcd.print(x); //вывод переменной на дисплей
  delay(250);
 
  if (x==125)
  lcd.clear(); //очистка дисплея
  }
}

Результатом работы программы является последовательный вывод символов ASCII каждые 250 мс с последующей очисткой дисплея: