Текстовый дисплей 16×2 (Troyka-модуль)

Используйте текстовый экран 16×2 для вывода показаний сенсоров, отображения простых меню, подсказок и приветствий.

Видеообзор

Примеры работы для Arduino

Схема устройства

Дисплей общается с управляющей платформой по шине I²C через пины SDA и SCL. В качестве примера используем плату Arduino Uno.

Для быстрой сборки возьмите Troyka Shield.

С Troyka Slot Shield провода не понадобятся вовсе.

Вывод текста

Для упрощения работы с LCD-дисплеем мы написали библиотеку TroykaTextLCD. В ней вы найдёте примеры кода с подробными комментариями.

Для вывода первой программы приветствия, воспользуйтесь кодом вроде этого:

helloWorld.ino
// библиотека для работы с дисплеем
#include <TroykaTextLCD.h>
 
// создаем объект для работы с дисплеем
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() {
 
}

Размер текста

Дисплей позволяет увеличить размер текста путём объединения двух строк в одну.

HelloWorldBigSize.ino
// библиотека для работы с дисплеем
#include <TroykaTextLCD.h>
 
// создаем объект для работы с дисплеем
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() {
 
}

Вывод собственных символов

Дисплей позволяет создавать и выводить собственные иконки с размером 5×8 пикселей.

CustomCharacter.ino
// библиотека для работы с дисплеем
#include <TroykaTextLCD.h>
 
// создаем объект для работы с дисплеем
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);
}

Элементы платы

Дисплей

Экран выполнен на жидкокристаллической матрице, которая отображает две строки по 16 символов. Каждый символ состоит из отдельного знакоместа 5×8 пикселей. Матрица индикатора подключена к встроенному чипу ST7032, который выполняет роль посредника между экраном и микроконтроллером.

Подсветка дисплея

Сама по себе LCD-матрица не излучает свет, поэтому в корпус дисплейного модуля встроена LED-подсветка.

За включение и отключение подсветки отвечает сигнальный пин A. А если контакт управляющей платы поддерживает ШИМ, то можно управлять яркостью подсветки.

Troyka-контакты

На дисплейном модуле выведено две пары Troyka-контактов.

Нижняя группа

  • Сигнальный (A) — пин управления подсветкой экрана. Подключите к аналоговому/цифровому пину микроконтроллера.
  • Питание (V) — соедините с рабочим напряжением микроконтроллера.
  • Земля (G) — соедините с землёй микроконтроллера.

Верхняя группа

  • Сигнальный (D) — пин данных шины I²C. Подключите к SDA пину микроконтроллера.
  • Сигнальный (C) — пин тактирования шины I²C. Подключите к SCL пину микроконтроллера.

Принципиальная и монтажная схемы

Характеристики

  • Тип дисплея: текстовый
  • Цвет: монохромный
  • Технология: LCD (Liquid Crystal Display)
  • Индикация: 2 строки по 16 символов
  • Драйвера матрицы: ST7032
  • Интерфейс: I²C
  • Адрес модуля: 0x3E
  • Тип подсветки: LED
  • Цвет подсветки: синий
  • Цвет символов: белый
  • Напряжение питания: 3.3–5 В
  • Габариты: 76,2×25,4 мм

Ресурсы