I2C модуль на базе микросхем PCF8574 позволяют подключить символьный дисплей 1602 к плате Arduino всего по двум проводам SDA и SCL (А4 и А5), что дает возможность не использовать цифровые выходы Arduino при подключении дисплея.
Подключение I2C модуля к дисплею 1602 очень простое, установите модуль как показано на фото и пропаяйте контакты.
Как видите все достаточно просто, а самое главное что все функции библиотеки LiquidCrystal аналогичны LiquidCrystal_I2C за не большим исключением связанные с инициляцией экрана. В добавок появляется возможность программно включать и выключать подсветку дисплея.
Ниже представлен простой пример скетча демонстрирующий работу дисплея. В очень редких случаях могут возникнуть проблемы с запуском дисплея, как правило это связано с не верным адресом уст-ва, для решения этой проблемы можно поменять адрес на рекомендуемые: с 0x20 до 0x27 для PCF8574 или с 0x38 до 0x3F для PCF8574A. Если и это не помогло, можете запустить скетч I2C сканера, который поможет определить верный адрес уст-ва.
#include <Wire.h> #include <LiquidCrystal_I2C.h> //Библиотека - http://forum.rcl-radio.ru/misc.php?action=pan_download&item=45&download=1 LiquidCrystal_I2C lcd(0x27,16,2); // Устанавливаем дисплей void setup() { lcd.init(); lcd.backlight();// Включаем подсветку дисплея lcd.print(" rcl-radio.ru "); lcd.setCursor(0, 1); lcd.print(" LCD 1602 "); delay(5000); lcd.noBacklight();// Выключаем подсветку дисплея delay(5000); lcd.backlight();// Включаем подсветку дисплея } void loop(){}
Аналогичным способом к Arduino подключается LCD2004, который содержит четыре строки по 20 символов. Для нормальной работы в скетч достаточно внести не большие изменения. Пример скетча показан ниже:
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,20,4); // Устанавливаем дисплей void setup() { lcd.init(); lcd.backlight();// Включаем подсветку дисплея lcd.setCursor(0, 0); lcd.print("rcl-radio.ru"); lcd.setCursor(0, 1); lcd.print("LCD 2004"); lcd.setCursor(0, 2); lcd.print("Arduino"); lcd.setCursor(0, 3); lcd.print("NANO"); delay(5000); lcd.noBacklight();// Выключаем подсветку дисплея delay(5000); lcd.backlight();// Включаем подсветку дисплея } void loop(){}