Підключаємо дисплей LCD1602 до Arduino по I2C ( HD44780 / PCF8574 )

Підключати дисплей до Arduino будемо через модуль PCF8574. За допомогою PCF8574 набагато зручніше підключити дисплей, оскільки використовується тільки два сигнальні провода – SDA та SCL. Якщо підключати дисплей напряму то потрібно буде задіяти як мінімуш 6 цифрових виходів. 

Модуль PCF8574 зручний ще тим, що його вже можна припаяти до дисплея.

Модуль має 4 контакта: GND, SDA, SCL, VCC (5В).

Підключаємо до Arduino UNO:

  • SDA -> A4 ,
  • SCL -> A5 ,
  • VCC -> 5V ,
  • GND -> GND.

Тепер необхідно встановити бібліотеку LiquidCrystal I2C 


Опис методів бібліотеки LiquidCrystal I2C:

LiquidCrystal_I2C(uint8_t lcd_Addr,uint8_t lcd_cols,uint8_t lcd_rows);

Конструктор для створення екземпляра класу. Перший параметр – це адресса I2C пристрою, другий – кількість символів , третій – кількість рядів

init();

Ініціалізація дисплея

backlight();

Включення підсвідки дисплея

setCursor(uint8_t, uint8_t)

Встановлення позиції курсора

clear()

Вертає курсор на початок екрану

home()

Вертає курсор на початок екрану, та стирає все що було на екрані до цього.

write(uint8_t)

Дозволяє вивести одиночний символ на екран

cursor()

Показує курсор на екрані

noCursor()

Ховає курсор на екрані

blink()

Курсор мигає

noBlink()

Курсор не мигає

display()

Дозволяє включити дисплей

noDisplay()

Дозволяє вимкнути дисплей

scrollDisplayLeft()

Прокручує дисплей на один знак в ліво

scrollDisplayRight()

Прокручує дисплей на один знак в право

autoscroll()

Включає режим автопрокрутки. У цьому режимі кожен новий символ прописується у тому самому місці, витісняючи попередній

noAutoscroll()

Вимикає режим автопрокрутки

leftToRight()

Встановлює напрямок для виводу тексту з ліва на право

rightToLeft()

Встановлює напрямок для виводу тексту з права на ліво

createChar(uint8_t, uint8_t[])

Створює символ. Перший параметр – це код символу від 0 до 7. Другий – масив 8бітних масок для створення чорних та білих точок.


Приклад скетчу для застосування LCD :

/*Добавляємо бібліотеку
*/
#include <LiquidCrystal_I2C.h>
/*
Встановлюємо дисплей за адрессою 0x27, 16 символів та 2 рядкт
*/
LiquidCrystal_I2C lcd(0x27, 16, 2);
 
void setup()
{
  /*
   Ініціалізуємо дисплей
  */
  lcd.init();
  /*
  Вмикаємо підсвітку
  */
  lcd.backlight();
  /*
    Встановлємо курсор на нульовий символ та нульовий рядок.
  */
  lcd.setCursor(0, 0);
  /*
  Виводимо на екран стрічку
  */
  lcd.print(“itpfortis.te.ua”);
}
 
 
void loop()
{
  /*
    Встановлюємо курсор на перший рядок та третій символ.
  */
  lcd.setCursor(3, 1);
  /*
    Виводимо на екран кількість секунд з моменту запущення ардуіни
  */
  lcd.print(millis() / 1000);
  delay(1000);
}
 

Приклад скетчу формування символів:

#include <LiquidCrystal_I2C.h>

extern uint8_t bell[8];
extern uint8_t note[8];
extern uint8_t clock[8];
extern uint8_t heart[8];
extern uint8_t duck[8];
extern uint8_t check[8];
extern uint8_t cross[8];
extern uint8_t retarrow[8];

LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup()
{

lcd.init();

lcd.backlight();

/*
Добавляємо символи
*/
lcd.createChar(0, bell);
lcd.createChar(1, note);
lcd.createChar(2, clock);
lcd.createChar(3, heart);
lcd.createChar(4, duck);
lcd.createChar(5, check);
lcd.createChar(6, cross);
lcd.createChar(7, retarrow);

lcd.home();

lcd.print(“itpfortis.te.ua”);
}

void loop()
{
static char i = 0;


lcd.setCursor(i, 1);

/*
Виводимо на екран символ під номером ‘i’
*/
lcd.print(i);

/*
очікуємо 1c.
*/
delay(1000);

if (i == 7)
{
/*
Очищуємо стічку після виводу усіх символів
*/

i = 0;
lcd.setCursor(0, 1);
for (char j = 0; j < 16; j++)
{
lcd.print(‘ ‘);
}
}
else
{
i++;
}
}

/*
..O..
.OOO.
.OOO.
.OOO.
OOOOO
…..
..O..
*/
uint8_t bell[8] = {
0b00100,
0b01110,
0b01110,
0b01110,
0b11111,
0b00000,
0b00100
};

/*
…O.
…OO
…O.
.OOO.
OOOO.
.OO..
…..
*/
uint8_t note[8] = {
0b00010,
0b00011,
0b00010,
0b01110,
0b11110,
0b01100,
0b000000000
};

/*
…..
.OOO.
O.O.O
O.OOO
O…O
.OOO.
…..
*/
uint8_t clock[8] = {
0b00000,
0b01110,
0b10101,
0b10111,
0b10001,
0b01110,
0b00000
};

/*
…..
.O.O.
OOOOO
OOOOO
.OOO.
..O..
…..
*/
uint8_t heart[8] = {
0b00000,
0b01010,
0b11111,
0b11111,
0b01110,
0b00100,
0b00000
};

/*
…..
.OO..
OOO.O
.OOOO
.OOOO
..OO.
…..
*/
uint8_t duck[8] = {
0b00000,
0b01100,
0b11101,
0b01111,
0b01111,
0b00110,
0b00000
};

/*
…..
….O
…OO
O.OO.
OOO..
.O..O
…..
*/
uint8_t check[8] = {
0b00000,
0b00001,
0b00011,
0b10110,
0b11100,
0b01001,
0b00000
};

/*
…..
OO.OO
.OOO.
..O..
.OOO.
OO.OO
…..
*/
uint8_t cross[8] = {
0b00000,
0b11011,
0b01110,
0b00100,
0b01110,
0b11011,
0b00000
};

/*
….O
….O
..O.O
.O..O
OOOOO
.O..O
..O..
*/
uint8_t retarrow[8] = {
0b00001,
0b00001,
0b00101,
0b01001,
0b11111,
0b01001,
0b00100
};

 

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.