До сега демонстрирахме как да свържем LCD1602 посредством I2C и как да изведем на екрана буквички на кирилица.
Нека сега видим дали можем да свържем паралелно два екрана от типа 1602.

Страхотно, но двете екранчета показват едно и също.
Как да ги контролираме поотделно?
Има едно нещо, което пропуснах да спомена в предишните 2 статии и това е адресът 0x27. Всяко I2C устройство си има собствен адрес, с помощта на който можем да комуникираме с него. 0x27 е адресът по подразбиране на I2C контролерите свързани към нашите екранчета.
Как да променим адреса?
Нека разгледаме платката на I2C контролера.

Със син правоъгълник съм отбелязал интересната част. Според спецификацията I2C адресът ще се промени, ако направим мост на A0, A1 или A2.
Нека премостим A0.

И резултатът не закъснява:

0x27 вече не контролира втория екран. Сега остава въпросът как да разберем какъв е новият I2C адрес.
За наш късмет, някой вече е написал I2C скенер, с който можем лесно да намерим адресите на всички свързани устройства (възможно е да има нужда да инсталирате библиотеката Wire).

I2C скенерът извежда резултата посредством UART. За да го видим трябва да натиснем лупичката горе-дясно (Serial Monitor).
На новопоявилият се прозорец трябва да изберем скорост на трансфер 9600 baud.

И вече знаем адресът на вторият екран.
Сега остава да напишем кратка програма.
#include "LiquidCrystal_I2C.h"
int lcdColumns = 16;
int lcdRows = 2;
LiquidCrystal_I2C lcd1(0x26, lcdColumns, lcdRows);
LiquidCrystal_I2C lcd2(0x27, lcdColumns, lcdRows);
void setup(){
//екран 1
// инициализираме LCD
lcd1.init();
// включваме подсветката
lcd1.backlight();
// изчистваме
lcd1.clear();
// задаваме позиция на курсора - първи ред, първи символ
lcd1.setCursor(0, 0);
// извеждаме текст
lcd1.print("TechPot.w-lab.win");
// задаваме позиция на курсора - втори ред, шести символ
lcd1.setCursor(5, 1);
// извеждаме текст
lcd1.print("TechPot.w-lab.win");
//екран 2
lcd2.init();
// включваме подсветката
lcd2.backlight();
// изчистваме
lcd2.clear();
// задаваме позиция на курсора - първи ред, първи символ
lcd2.setCursor(0, 0);
// извеждаме текст
lcd2.print("A site about");
// задаваме позиция на курсора - втори ред, първи символ
lcd2.setCursor(0, 1);
// извеждаме текст
lcd2.print("gadgets.");
}
void loop(){
// Не правим нищо
}
Ето го и резултата:

