====== Текстовый дисплей 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]]