====== Текстовый дисплей 16×2 (Troyka-модуль) ======
Используйте [[amp>product/troyka-display-lcd-text-16x2?utm_source=man&utm_campaign=troyka-display-lcd-text-16x2&utm_medium=wiki|текстовый экран 16×2]] для вывода показаний сенсоров, отображения простых меню, подсказок и приветствий.
{{ :products:troyka-display-lcd-text-16x2:troyka-display-lcd-text-16x2.6.jpg?nolink |}}
===== Видеообзор =====
{{youtube>n9_eioNUm5w?large}}
===== Примеры работы для Arduino =====
==== Схема устройства ====
Дисплей общается с управляющей платформой по шине I²C через пины ''SDA'' и ''SCL''. В качестве примера используем плату [[amp>product/arduino-uno?utm_source=man&utm_campaign=troyka-display-lcd-text-16x2&utm_medium=wiki|Arduino Uno]].
Для быстрой сборки возьмите [[amp>product/arduino-troyka-shield?utm_source=man&utm_campaign=troyka-display-lcd-text-16x2&utm_medium=wiki|Troyka Shield]].
{{ :products:troyka-display-lcd-text-16x2:troyka-display-lcd-text-16x2_troyka-shield.png?nolink |}}
С [[amp>product/arduino-troyka-slot-shield?utm_source=man&utm_campaign=troyka-display-lcd-text-16x2&utm_medium=wiki|Troyka Slot Shield]] провода не понадобятся вовсе.
{{ :products:troyka-display-lcd-text-16x2:troyka-display-lcd-text-16x2_troyka-slot-shield.png?nolink |}}
==== Вывод текста ====
Для упрощения работы с LCD-дисплеем мы написали библиотеку [[https://github.com/amperka/TroykaTextLCD|TroykaTextLCD]]. В ней вы найдёте примеры кода с подробными комментариями.
Для вывода первой программы приветствия, воспользуйтесь кодом вроде этого:
// библиотека для работы с дисплеем
#include
// создаем объект для работы с дисплеем
TroykaTextLCD lcd;
void setup() {
// устанавливаем количество столбцов и строк экрана
lcd.begin(16, 2);
// устанавливаем контрастность в диапазоне от 0 до 63
lcd.setContrast(27);
// устанавливаем яркость в диапазоне от 0 до 255
lcd.setBrightness(255);
// устанавливаем курсор в колонку 0, строку 0
lcd.setCursor(0, 0);
// печатаем первую строку
lcd.print("Hello, world!");
// устанавливаем курсор в колонку 0, строку 1
// на самом деле это вторая строка, т.к. нумерация начинается с нуля
lcd.setCursor(0, 1);
// печатаем вторую строку
lcd.print("Do It Yourself");
}
void loop() {
}
{{ :products:troyka-display-lcd-text-16x2:helloworld.png?nolink |}}
==== Размер текста ====
Дисплей позволяет увеличить размер текста путём объединения двух строк в одну.
// библиотека для работы с дисплеем
#include
// создаем объект для работы с дисплеем
TroykaTextLCD lcd;
void setup() {
// устанавливаем количество столбцов, строк экрана и размер текста
lcd.begin(16, 2, 2);
// устанавливаем контрастность в диапазоне от 0 до 63
lcd.setContrast(27);
// устанавливаем яркость в диапазоне от 0 до 255
lcd.setBrightness(255);
// устанавливаем курсор в колонку 0, строку 0
lcd.setCursor(0, 0);
// печатаем строку
lcd.print("Hello, world!");
}
void loop() {
}
{{ :products:troyka-display-lcd-text-16x2:helloworldbigsize.png?nolink |}}
==== Вывод собственных символов ====
Дисплей позволяет создавать и выводить собственные иконки с размером 5×8 пикселей.
// библиотека для работы с дисплеем
#include
// создаем объект для работы с дисплеем
TroykaTextLCD lcd;
// создаём массивы иконок
byte heart[8] = {
0b00000,
0b01010,
0b11111,
0b11111,
0b11111,
0b01110,
0b00100,
0b00000
};
byte smiley[8] = {
0b00000,
0b00000,
0b01010,
0b00000,
0b00000,
0b10001,
0b01110,
0b00000
};
byte frownie[8] = {
0b00000,
0b00000,
0b01010,
0b00000,
0b00000,
0b00000,
0b01110,
0b10001
};
byte armsDown[8] = {
0b00100,
0b01010,
0b00100,
0b00100,
0b01110,
0b10101,
0b00100,
0b01010
};
byte armsUp[8] = {
0b00100,
0b01010,
0b00100,
0b10101,
0b01110,
0b00100,
0b00100,
0b01010
};
void setup() {
// устанавливаем количество столбцов и строк экрана
lcd.begin(16, 2);
// устанавливаем контрастность в диапазоне от 0 до 63
lcd.setContrast(27);
// устанавливаем яркость в диапазоне от 0 до 255
lcd.setBrightness(255);
// создаём новые символы в ячейках памяти
lcd.createChar(0, heart);
lcd.createChar(1, smiley);
lcd.createChar(2, frownie);
lcd.createChar(3, armsDown);
lcd.createChar(4, armsUp);
// устанавливаем курсор в колонку 0, строку 0
lcd.setCursor(0, 0);
// печатаем первую строку
lcd.print("I ");
// печатаем символ из нулевой ячейки
lcd.write(0);
lcd.print(" Arduino! ");
// печатаем символ из первой ячейки
lcd.write(1);
// устанавливаем курсор на вторую строку и четвёртый символ
lcd.setCursor(4, 1);
}
void loop() {
// устанавливаем курсор на вторую строку и четвёртый символ
lcd.setCursor(4, 1);
// выводим символ из третьей ячейки
lcd.write(3);
// ждём пол секунды
delay(500);
// устанавливаем курсор на вторую строку и четвёртый символ
lcd.setCursor(4, 1);
// выводим символ из четвёртой ячейки
lcd.write(4);
// ждём пол секунды
delay(500);
}
{{ :products:troyka-display-lcd-text-16x2:customcharacter.gif?nolink |}}
===== Элементы платы =====
{{ :products:troyka-display-lcd-text-16x2:troyka-display-lcd-text-16x2_annotation.png?nolink |}}
==== Дисплей ====
Экран выполнен на жидкокристаллической матрице, которая отображает две строки по 16 символов. Каждый символ состоит из отдельного знакоместа 5×8 пикселей. Матрица индикатора подключена к встроенному чипу {{ :products:troyka-display-lcd-text-16x2:st7032_datasheet.pdf |ST7032}}, который выполняет роль посредника между экраном и микроконтроллером.
==== Подсветка дисплея ====
Сама по себе LCD-матрица не излучает свет, поэтому в корпус дисплейного модуля встроена LED-подсветка.
За включение и отключение подсветки отвечает сигнальный пин ''A''. А если контакт управляющей платы поддерживает [[:конспект-arduino:шим|ШИМ]], то можно управлять яркостью подсветки.
==== Troyka-контакты ====
На дисплейном модуле выведено две пары Troyka-контактов.
//Нижняя группа//
* Сигнальный (A) — пин управления подсветкой экрана. Подключите к аналоговому/цифровому пину микроконтроллера.
* Питание (V) — соедините с рабочим напряжением микроконтроллера.
* Земля (G) — соедините с землёй микроконтроллера.
//Верхняя группа//
* Сигнальный (D) — пин данных шины I²C. Подключите к ''SDA'' пину микроконтроллера.
* Сигнальный (C) — пин тактирования шины I²C. Подключите к ''SCL'' пину микроконтроллера.
===== Принципиальная и монтажная схемы =====
{{:products:troyka-display-lcd-text-16x2:troyka-display-lcd-text-16x2_schematic.png?direct&360 |}}
{{ :products:troyka-display-lcd-text-16x2:troyka-display-lcd-text-16x2_layout_top.png?direct&310|}}
{{ :products:troyka-display-lcd-text-16x2:troyka-display-lcd-text-16x2_layout_bottom.png?direct&310|}}
===== Характеристики =====
* Тип дисплея: текстовый
* Цвет: монохромный
* Технология: LCD (Liquid Crystal Display)
* Индикация: 2 строки по 16 символов
* Драйвера матрицы: ST7032
* Интерфейс: I²C
* Адрес модуля: 0x3E
* Тип подсветки: LED
* Цвет подсветки: синий
* Цвет символов: белый
* Напряжение питания: 3.3–5 В
* Габариты: 76,2×25,4 мм
===== Ресурсы =====
* [[amp>product/troyka-display-lcd-text-16x2?utm_source=man&utm_campaign=iskra-nano-pro&utm_medium=wiki|Текстовый экран 16×2]] в магазине.
* [[https://github.com/amperka/hardware-drawings/blob/master/troyka-display-lcd-text-16x2.svg|Векторное изображение дисплейного модуля]]
* {{ :products:troyka-display-lcd-text-16x2:erc1602-4_datasheet.pdf |Datasheet на дисплей ERC1602-4}}
* {{ :products:troyka-display-lcd-text-16x2:st7032_datasheet.pdf |Datasheet на контроллер дисплея ST7032}}
* [[https://github.com/amperka/TroykaTextLCD|Библиотека для Arduino]]