Arduino управлява LCD дисплей по I2C шината

Описание

Управлението на LCD дисплей по I2C шината използва само два от пиновете на микроконтролера и не се бърка в хардуерните UART пинове за серийна комуникация. Примерът е за модул с интегралната схема PCF8574 на NXP и изисква Wire библиотеката (за I2C комуникация) и LiquidCrystal_I2C библиотеката на Mario H за управление на LCD дисплей.

Wire библиотеката е официално одобрена и включена в средата за програмиране на Ардуино, а LiquidCrystal_I2C библиотеката трябва да се добави в папка Arduino>Libraries.

LiquidCrystal_I2C библиотеката подържа тези команди, но някой команди работят само с определен модул или дисплей.

Информация за използване на кирилица с Ардуино има в блога на Петър Гечев.

Схема на свързване

Модулът има по два пина за GND, Vcc, SDA и SCL. Достатъчно е да е свързан само един от двойката пинове. Вторите пинове служат като „разклонители“ към които могат да се свързват други I2C устройства.

  • GND се свързва към маса
  • Vcc към захранване (между 2.7V и 5.5V)
  • SDA към линията за данни (пин A4 на Ардуино и пин D20 на Ардуино Мега)
  • SCL към клок линията (пин A5 на Ардуино и пин D21 на Ардуино Мега)

По подразбиране адресът на модула е 0x27. С окъсяване на джъмперите при J1, J2 и J3 може да се зададе друг адрес и така към една I2C шина да се вържат повече от един дисплей.

Код

/*************************************************************************************************************/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);          //    Задава се LCD адреса 0x27 , 16 символа ( знака ), 2 реда
/*************************************************************************************************************/
void setup()
{
  lcd.init();                            //     Инициализация на LCD
  delay(100);
  lcd.clear();                         //     Изстриване на екрана
  delay(100);
  lcd.setBacklight(0);
  lcd.setCursor(2,0);              //     Позициониране курсора на 3 символ 1 ред
  delay(100);
  lcd.print("ROBOTEV");        //     На дисплея се изписва текста ROBOTEV
}
/*************************************************************************************************************/
void loop()
{ }

/*************************************************************************************************************/

Share