Обзор интерфейсного модуля IIC, I2C, TWI для LCD
В этой статье расскажу, как использовать интерфейсный модуль I2C для управления LCD дисплеем (2×16 / 20х4) с помощью Arduino. Данный модуль позволяет уменьшить количество используемых выводов контроллера, вместо 8 или 4-битного соединения, требуется только 2 вывода (SDA и SCL).
Технические параметры
► Поддержка дисплеев: LCD 16×02 / 20×04
► Дополнительно: регулировка контрастности
► Напряжение питания. 5В
► Интерфейс: I2C
► Габариты: 54мм x 19мм x 15мм
Общие сведения интерфейсного модуля I2C
Поскольку количество контактов на контроллерах Arduino ограничено и часто при использовании различных датчиков и модулей они заканчиваются, появляется необходимость в их экономии, для этих случай разработан этот модуль, с его помощью можно реализовать передачу по двум контактам (SDA и SCL).
Теперь немного о самом модуле, построен он на микросхеме PCF8574T. Резисторы R8 (4.7кОм) и R9 (4.7кОм) необходимы для подтяжки линий SDA и SCL, в идеале при подключении двух и более устройств по шине I2C необходимо использовать подтяжку только на одном устройств, позже напишу почему. На плате предусмотрены три перемычки (по схеме видно что линии A0, A1, A2 подтянуты к питанию через резисторы R4, R5, R6), необходимы они для смены адресации устройства, всего их 8 вариантов. Изменение адресации дает нам возможность подключения до восьми устройств по шине IC2 c микросхемой PCF8574T, варианты адресов показаны на рисунке (по умолчанию адрес устройства 0x27). Так же модуль оснащен потенциометром R11 с его помощью можно изменить контрастность LCD дисплея.
Для соединения на модуле расположено три группы контактов:
Первая группа:
► SCL: линия тактирования (Serial CLock)
► SDA: линия данных (Serial Dфta)
► VCC: «+» питание
► GND: «-» питание
Вторая группа:
► VSS: «-» питание
► VDD: «+» питание
► VO: Вывод управления контрастом
► RS: Выбор регистра
► RW: Чтение/запись ( режим записи при соединении с землей)
► E: Еnable (строб по спаду)
► DB0-DB3: Младшие биты интерфейса
► DB4-DB7: Старшие биты интерфейса
► A: «+» питания подсветки
► K: «-» питания подсветки
Третья группа: (по умолчанию установлена перемычка)
► VCC:
► A от LCD:
Подключение к Arduino
Необходимые детали:
► Arduino UNO R3 x 1 шт.
► LCD-дисплей 1602A (2×16, 5V, Синий) x 1 шт.
► Интерфейсный модуль I2C, IIC, TWI для LCD x 1 шт.
► Провод DuPont, 2,54 мм, 20 см, F-M (Female — Male) x 1 шт.
► Кабель USB 2.0 A-B x 1 шт.
Подключение:
Первым делом, припаиваем модуль I2C к LCD дисплею, затем необходимо подключить дисплей к Arduino UNO. Для этого воспользуемся проводками DuPont, подключение осуществляем по таблице ниже.
Для наглядности, приведу еще одну схему.
Для этого эксперимента необходимо скачать и установить библиотеку «LiquidCrystal_I2C». Затем скопируйте и вставьте этот пример кода в окно программы IDE Arduino и загрузите в контроллер.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
/* Тестировалось на Arduino IDE 1.6.11 Дата тестирования 15.09.2016г. */ #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); // Задаем адрес и размер дисплея void setup() { lcd.init(); // Инициализация lcd lcd.backlight(); // Включаем подсветку lcd.setCursor(0,0); // Устанавливаем курсор в начало 1 строки lcd.print("Hello, world"); // Выводим текст lcd.setCursor(0,1); // Устанавливаем курсор в начало 2 строки lcd.print("www.robotchip.ru"); // Выводим текст } void loop() { } |
Если Вы правильно все сделали, но никаких символов на дисплее нет, попробуйте увеличить контрастность потенциометром.
Ссылки
Скачать библиотеку LiquidCrystal_I2C
Документация на микросхему PCF8574T
Документация к LCD1602A
Купить на Aliexpress
Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Провода DuPont, 2,54 мм, 20 см
LCD-дисплей 1602A
Интерфейсный модуль IIC, I2C, TWI для LCD
Купить в Самаре и области
Контроллер Arduino UNO R3 на CH340G
Контроллер Arduino UNO R3 на Atmega16U2
Провода DuPont, 2,54 мм, 20 см
LCD-дисплей 1602A
Интерфейсный модуль IIC, I2C, TWI для LCD
А как переназначить пины А4.А5 на А0.А1
Добрый день, не как, только выводы А4 и А5 работают по I2C
Сергей Мирошниченко, Вы не правы.
С уществует програмная IIC библиотека для Ардуино,
где можно назначить любые пины, а не только А4.А5 .
Добрый день, спасибо за уточнение, да есть такая библиотека.
Ну есть библиотека SoftI2CMaster, пробовал её, например она может определять датчик BMP085 на любых пинах, показывает что датчик есть и выдает его адрес. Но ведь нужно прикрутить это библиотеку к самой библиотеке BMP085, чтобы считывать показания с датчика в нормальном виде? Или я что-то не понимаю? А для других датчиков тоже нужно будет как то «мудрить» с библиотекой SoftI2CMaster чтобы она работала вместе с библиотеками для тех датчиков? Помогите пожалуйста, если вы в курсе данной темы. Очень нужно заставить работать несколько разных датчиков на разных пинах шины I2C
Здравствуйте, а у вас нету скетча для Ардуино 1.8.5?
Добрый день, данный скетч работает с версий IDE 1.8.5 возможно у вас другой адрес устройства.
В моей практике встречались с адресами 0x27 и 0x3F.
Можете просканировать шину I2C и точно узнать какой адрес модуля, статья: https://robotchip.ru/i2c-skaner-na-arduino/
Прошу помощи. подключился , скачал библиотеки а ничего не работает только подсветка а текста в окне нет. В чем вероятные причины?
Добрый день, Владимир. Возможно необходимо отрегулировать контрастность с помощью потенциометра.
вечер добрый. проблема была в неверном определении адреса. прописал lcd(0x3F,16,2) выводит только буквы H и Y из прописаных lcd.setCursor(0,0);
lcd.print(«Hello, world!»);
lcd.setCursor(0,1);
lcd.print(«Ywrobot Arduino!»);
появилась мысль может пропаяно плохо?
разобрался) запрятал было для чистоты эксперимента стандартную библиотеку ликвидКристал а она я так понимаю помогает ликвидКристал _АЙ2С разбиратся индикацией на ЛСД. те вторая просто аддон типа.
Добрый день.
Подскажите пожалуйста , через данный модуль можно подключить шилд 1602 https://robotchip.ru/obzor-lcd-modulya-keypad/ ?
Спасибо.
Посмотри эту ссылку. У меня тот же вопрос стоял.
https://www.instructables.com/1602-LCD-Keypad-Shield-Module-With-I2C-Backpack/
Подскажите, через этот модуль можно подключить дисплей нокия 5110?
Здравствуйте, нет
приколхозил МЭЛТ mt16s2h v7 к hw-061 кт подскажет библиотеки…
Было бы замечательно если бы кто-нибудь выложил это на асм, и не на Ардуино, а для мк (хотя бы для PIC)
как раз сейчас разбираюсь (адаптирую,оптимизирую..)со своими старыми библиотеками для PIC на ASM и для среднего семейства и для расширенного (PIC16F1XXX) для индикаторов матричных 8*8, Винстаровских и бошевскмх метеодатчиков BMP180,BMP/BME280, далласовских DS18B20….. ,пишите в личку. Писал все для себя и под себя….
Спасибо