Arduino Playground is read-only starting December 31st, 2018. For more info please look at this Forum Post

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()
{ }

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