Arduino и символьный LCD-дисплей. Альтернативная библиотека для работы с i2c дисплеем

Arduino и символьный LCD-дисплей. Альтернативная библиотека для работы с i2c дисплеем
Отображение своих символов и простых картинок на LCD 1602/LCD2004. Часть I.

Здравствуй, дорогой читатель! Сегодняшняя тема – отображение своих символов и простых картинок на символьном дисплее. Данная статья будет полезна, если вы не можете найти нужный символ в стандартном каталоге, доступном на дисплее, либо хотите отобразить простую графику.

В первой части будет рассмотрено простое отображение собственных символов.

Сборка схемы

Про то, как подключить дисплей LCD1602/LCD2004 к Arduino было сказано уже много раз, в напоминание мы разместим небольшую схему. Если у вас нет потенциометра, то вы можете его исключить из схемы. В остальном – просто соедините требуемые контакты проводами.

Создание символов

Следующая задача, которая перед нами стоит – это создание собственного набора символов. Как вы могли заметить – символы на дисплее всё равно состоят из пикселей. И есть способ сделать так, чтобы можно было выводить свои наборы пикселей, вместо предустановленных.

Изображение, выводимое в каждой ячейке дисплея, кодируется как 7 (а в некоторых случаях 8) байтов. В каждом из байтов значение имеют только младшие 5 бит. Как вы уже смогли понять, каждый элемент массива – это строка, а каждый бит в нём – это отдельный пиксель.

А теперь порисуем! К счастью, есть сайт, где вы можете получить битовое представление требуемого изображения. (http://www.quinapalus.com/hd44780udg.html)

Просто щёлкая на изображение вы можете сформировать требуемый пиксель, к примеру:

Что позволит нам вывести вот такую жирненькую мордочку кошки:

Запомним эти данные и приступим к программированию.

Программирование

Дисплей 1602 позволят одновременно отображать не более 8 собственных символов (встроенных сколько-угодно).

Для того, чтобы создать символ, необходимо использовать команду createChar(num, data), где

  • num – номер собственного символа (от 0 до 7 включительно)
  • data – тот самый массив из 7(8) байтов.

Для того чтобы определить каждый символ достаточно записать.

Byte l = {0, 2, 5, 24, 24, 0, 0};

Byte m = {0, 0, 0, 14, 14, 0, 0};

Byte r = {0, 8, 20, 3, 3, 0, 0};

А после инициализации дисплея следует написать:

lcd.createChar(0, l);

lcd.createChar(1, m);

lcd.createChar(2, r);

И, собственно, вывести символы командой:

lcd.write(byte(0));

lcd.write(byte(1));

lcd.write(byte(2));

Выражение byte(x) – преобразует число x к типу byte.

И в конце рассмотрим код для отображения символа Arduino на LCD1602 с размером символов (5x8).

// Подключаем библиотеку для работы с дисплеем

#include

// Задаём пины, к которым подключен дисплей (по рисунку в начале статьи)

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// Задаём наши символы. Здесь префикс «B» говорит о том, что далее записано

// число в двоичном коде, т.е. B00011 = 5

byte a3= { B00011,

byte a2= {B00000,

byte a1={B11000,

byte a4={ B00000,

byte a5={ B00000,

byte a6={ B00000,

byte a7={ B00000,

byte a8={B00100,

// Процедура инициализации

lcd.begin(16, 2); // Запуск дисплея.

lcd.print("Arduino"); // Вывод обычной строки

lcd.setCursor(1,1); // Перевод на вторую строку

lcd.print("Logo"); // Вывод ещё одной самой обычной строки

Символьный дисплей LCD2004 с голубой подсветкой - жидкокристаллический дисплей (Liquid Crystal Display) экран которого способен отображать одновременно до 80 символов (20 столбцов, 04 строки). Подключение к осуществляется по синхронному 8-битному параллельному интерфейсу. Примеры работы с символьными дисплеями описаны в разделе .

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

  • Тип выводимой информации: символьный.
  • Язык в ПЗУ дисплея: латиница, японский.
  • Возможность загрузки собственных символов: есть.
  • Формат выводимой информации: 20×04 символов;
  • Тип дисплея: LCD.
  • Технология дисплея: STN.
  • Угол обзора: 180°.
  • Тип подсветки: LED.
  • Цвет подсветки: синий.
  • Цвет символов: белый.
  • Контроллер: HD44780.
  • Интерфейс: синхронный, 8-битный, параллельный.
  • Напряжение питания 5 В.
  • Рабочая температура: -20 ... +70 °С.
  • Температура хранения -30 ... +80 °С.

Подключение

Подключение дисплея LCD2004 по параллельному интерфейсу немного сложнее чем через по шине I2C, а также требуется дополнительный элемент - для регулировки контрастности.

Шина данных дисплея состоит из 8 линий (D0-D7), но если подключить только старшие 4 линии (D4-D7), как это показано на рисунке, это не снижает скорость работы дисплея. Для удобства мы подключили выводы D4-D7 дисплея к одноимённым выводам D4-D7 . Вы можете подключать выводы D0-D7, E и RS дисплея, к любым выводам , указав их в скетче при объявлении объекта библиотеки.

№: Дисплей: Arduino: Назначение:
16 K (LED-) GND Катод (минус) LED (светодиодной) подсветки.
15 A (LED+) 5V Анод (плюс) LED (светодиодной) подсветки.
14...7 D7 ...D0 (DB7...DB0) Любые Шина данных (Data Bus) состоящая из 8 линий. В приведённой схеме используются только старшие 4 линии, т.к. это не влияет на скорость работы дисплея.
6 E Любой Сигнал разрешения (Enable).
5 RW GND Выбор направления (Read / Write) передачи данных: «1» - чтение из дисплея / «0» - запись в дисплей. Вывод подключен к GND, т.к. данные только записываются в дисплей.
4 RS Любой Выбор регистра (Register Selection) получателя информации: «1» - регистр данных / «0» - регистр инструкций.
3 V0 (VEE)
Установка контрастности дисплея: 0 ... +5 В постоянного тока.
2 VDD (VCC) 5V Питание логики дисплея: +5 В постоянного тока.
1 VSS (GND) GND Общий вывод питания (земля).

Питание

Напряжение питания логики дисплея 5 В постоянного тока подаётся на выводы VDD (VCC) и VSS (GND) дисплея.

Напряжение питания подсветки 5 В постоянного тока подаётся на выводы A (Анод - Anode) и K (Катод - Cathode) дисплея.

Потенциал для установки контрастности 0 ... +5 В постоянного тока подаётся на вывод V0 дисплея.

Подробнее о дисплее

Символьный дисплей построен на базе ЖК дисплея типа STN (Super Twisted Nematic) под управлением контроллера HD44780 и имеет синхронный параллельный 8-битный интерфейс. Дисплей оснащён светодиодной подсветкой синего цвета и способен одновременно отображать до 80 символов (20 столбцов, 04 строки) от чего и произошло название дисплея: LCD2004. Контроллер HD44780 имеет ПЗУ в которой хранятся цифры, символы латиницы и некоторые иероглифы японского языка, для их отображения на дисплее. Отсутствующие символы, в т.ч. и символы кириллицы, можно загружать в память ОЗУ контроллера, для вывода на дисплей надписей на Русском языке или нестандартных символов (например «смайликов»).

В уроке поговорим о знакосинтезирующих жидкокристаллических индикаторах, о подключении их к плате Ардуино и управлении индикаторами с помощью библиотек LiquidCrystal и LiquidCrystalRus.

Светодиодные семисегментные индикаторы хотя и являются самым дешевым вариантом индикации для электронных устройств, но их применение ограничено двумя существенными недостатками.

  • Практически сложно подключить к микроконтроллеру более 8ми разрядов светодиодных индикаторов. Требуется большое число выводов, значительные токи индикаторов, сложные ключи, низкая частота регенерации и т.п.
  • Невозможно отображать на семисегментных индикаторах символьную информацию.

Для вывода текстовой информации или чисел размером более 4 разряда гораздо практичнее использовать жидкокристаллические знакосинтезирующие индикаторы (дисплеи). К их достоинствам следует отнести:

  • удобный для подключения к микроконтроллерам интерфейс;
  • малая потребляемая мощность;
  • низкое напряжение питания;
  • долговечность.

На рынке существует большое число разнообразных жидкокристаллических (LCD) индикаторов разных производителей. Практически все они аналогичны по параметрам, сигналам интерфейсов, командам управления. В данный момент наиболее распространенными ЖК индикаторами на российском рынке являются устройства производства компании Winstar, Тайвань. Я буду ссылаться на индикаторы этой фирмы. Но информация вполне применима и для символьных LCD дисплеев других производителей.

Общие сведения.

Знакосинтезирующие или символьные индикаторы отображают информацию в виде знакомест определенной разрядности. Одно знакоместо отображает один символ. Количество знакомест определяет разрядность индикатора. Информация на индикаторах может выводиться на нескольких строках, поэтому для индикаторов такого типа всегда указывается число символов в строке и число строк.

Отображение информации происходит на жидкокристаллической матрице со светодиодной подсветкой. Подсветка бывает самых разных цветов, что значительно оживляет монохромную текстовую информацию.

Для управления жидкокристаллической матрицей и организации интерфейса индикатора используется встроенный контроллер HD44780 или его полные аналоги. Этот контроллер определяет сигналы интерфейса индикатора и команды управления.

HD44780 стал де-факто стандартом для символьных жидкокристаллических (LCD) дисплеев. Техническую документацию по контроллеру HD44780 в формате PDF можно посмотреть по этой ссылке - . Может кому-то больше понравится документация одного из аналогов этого контроллера – SPLC780D. Ссылка в формате PDF – .

Символьные LCD индикаторы фирмы Winstar.

Мне известны следующие варианты ЖК индикаторов этой фирмы.

Тип индикатора Формат отображения, символов x строк Габариты, мм Размеры видимой области, мм Ссылка на документацию, формат PDF
WH0802A1 8 x 2 58 x 32 38 x 16
WH1202A 12 x 2 55,7 x 32 46 x 14,5
WH1601A 16 x 1 80 x 36 66 x 16
WH1601B 16 x 1 85 x 28 66 x 16
WH1601L 16 x 1 122 x 33 99 x 13
WH1602A 16 x 2 84 x 44 66 x 16
WH1602B 16 x 2 80 x 36 66 x 16
WH1602C 16 x 2 80 x 36 66 x 16
WH1602D 16 x 2 85 x 30 66 x 16
WH1602J 16 x 2 80 x 36 66 x 16
WH1602L1 16 x 2 122 x 44 99 x 24
WH1602M 16 x 2 85 x 32,6 66 x 16
WH1602O 16 x 2 85 x 25,2 66 x 16
WH1602P 16 x 2 85 x 25,2 66 x 16
WH1602S 16 x 2 59 x 29,3 52 x 15
WH1602T 16 x 2 65,4 x 28,2 54,8 x 19
WH1602W 16 x 2 80 x 36 66 x 16
WH1602V2 16 x 2 66,7 x 23,3 61 x 15,9
WH1604A 16 x 4 87 x 60 62 x 26
WH1604B 16 x 4 70,6 x 60 60 x 32,6
WH2002A 20 x 2 116 x 37 85 x 18,6
WH2002D 20 x 2 89 x 21,5 75 x 15
WH2002L 20 x 2 180 x 40 149 x 23
WH2002M 20 x 2 146 x 43 123 x 23
WH2004A 20 x 4 98 x 60 77 x 25,2
WH2004B 20 x 4 98 x 60 77 x 25,2
WH2004D 20 x 4 77 x 47 60 x 22
WH2004G 20 x 4 87 x 58 74,4 x 24,8
WH2004H 20 x 4 87 x 58 74,4 x 24,8
WH2004L 20 x 4 146 x 62,5 123,5 x 43
WH2402A 24 x 2 118 x 36 94,5 x 16
WH4002A 40 x 2 182 x 33,5 154,4 x 16,5
WH4004A 40 x 4 190 x 54 147 x 29,5

Подключение LCD индикатора к микроконтроллеру.

Схемы подключения, временные диаграммы, параметры сигналов, команды управления, коды символов подробно расписаны в документации на контроллер HD44780. Я приведу только самые необходимые данные о подключении индикаторов к микроконтроллерам.

Как правило, LCD индикаторы имеют 16 выводов.

Номер вывода Сигнал I - вход O - выход Назначение сигнала
1 Vss - Земля (общий провод)
2 Vdd - Питание + 5 В
3 Vo - Управление контрастностью дисплея. Вход для подключения среднего вывода делителя напряжения + 5 В. Можно использовать подстроечный резистор сопротивлением 10-20 кОм.
4 RS I Выбор регистра: 0 – регистр команд; 1 – регистр данных. Низкий уровень сигнала означает, что на шине данных сформирована команда, высокий уровень – на шине данные.
5 R/W I Направление передачи данных:

0 – запись;

1 – чтение.

Во многих приложениях функция чтения не используется, поэтому сигнал часто подключается к земле.

6 E I Строб операции шины (по отрицательному фронту).
7 DB0 I/O Младшие биты восьми битного режима. При четырех битном интерфейсе не используются.
8 DB1 I/O
9 DB2 I/O
10 DB3 I/O
11 DB4 I/O Старшие биты восьми битного режима или биты данных четырех битного интерфейса.
12 DB5 I/O
13 DB6 I/O
14 DB7 I/O
15 A - Анод питания подсветки (+).
16 K - Катод питания подсветки (-). Ток должен быть ограничен.

Номер вывода (первый столбец) приведен для наиболее распространенного варианта. Лучше проверьте, загрузив документацию на Ваш тип индикатора из таблицы предыдущего раздела.

Символьные ЖК дисплеи поддерживают два варианта подключения к микроконтроллеру:

  • С использованием 8ми битной шины данных. Подключаются все сигналы шины DB0-DB7. За один цикл обмена передается байт информации.
  • С применением 4х битной шины данных. Подключаются только 4 старшие разряда DB4-DB7. Информация передается по четыре бита за один такт шины.

Первый вариант обеспечивает передачу данных на дисплей с большей скоростью. Второй – требует для подключения индикатора на 4 вывода меньше. Несомненно, важнее сократить число выводов для подключения, чем увеличить скорость обмена. Тем более, что LCD индикаторы довольно медленные устройства со временем цикла регенерации 10-20 мс.

Подключение символьного ЖК (LCD) дисплея к плате Ардуино.

Я буду подключать индикатор WH2004A (4 строки по 20 символов) в четырех битном режиме обмена к плате Arduino UNO R3. Документацию на LCD дисплей WH2004 можете посмотреть по этой ссылке .

Схема выглядит так.

Резисторы R2 и R3 определяют контрастность индикатора. Можете подключить подстроечный резистор и установить необходимую четкость изображения. Я часто использую индикаторы WH2004, и в своих схемах выбираю такие номиналы резисторов.

Светодиоды подсветки индикатора я подключил к источнику питания 5 В через резистор R1 (30 Ом). Этим я задал ток порядка 25 мА. Тускло, но светится. В темноте видно хорошо. Хотя индикаторы WH2004 допускают ток подсветки до 580 мА.

Библиотека для управления LCD индикаторами в системе Ардуино LiquidCrystal.

Существует стандартная библиотека для управления ЖК индикаторами на базе контроллера HD44780. Подробно опишу ее методы.

LiquidCristal(…)

Конструктор класса. Может иметь разное число аргументов.

  • LiquidCristal(rs, en, d4, d5, d6, d7) – четырех битный интерфейс, сигнал RW не используется (подключен к земле).
  • LiquidCristal(rs,rw, en, d4, d5, d6, d7) – четырех битный интерфейс, сигнал RW используется.
  • LiquidCristal(rs, en, d0, d1, d2, d3, d4, d5, d6, d7) – восьми битный интерфейс, сигнал RW не используется (подключен к земле).
  • LiquidCristal(rs, rw, en, d0, d1, d2, d3, d4, d5, d6, d7) – восьми битный интерфейс, сигнал RW используется.

Аргументы:

  • rs – номер вывода сигнала RS;
  • rw – номер вывода сигнала RW;
  • en – номер вывода сигнала E;
  • d0, d1, d2, d3, d4, d5, d6, d7 – номера выводов шины данных.

LiquidCrystal disp(6, 7, 2, 3, 4, 5);

void begin(cols, rows)

Инициализирует интерфейс индикатора. Задает размерность индикатора. Метод должен быть вызван первым, до использования других функций класса.

Аргументы:

  • cols – количество символов в строке;
  • rows – число строк.

disp.begin(20, 4); // используем дисплей – 4 строки по 20 символов

void clear()

Очистка экрана, установка курсора в верхний левый угол.

disp.clear(); // сброс дисплея

void home()

Установка курсора в верхний левый угол.

disp.home(); // в начало экрана

void setCursor(col, row)

Устанавливает курсор в заданную позицию.

  • col – координата X, нумерация с 0;
  • row – координата Y, нумерация с 0.

setCursor(0,1); // курсор в начало второй строки

byte write(data)

Выводит символ на экран. Возвращает количество переданных байтов.

Следующий скетч выводит на экран данные с последовательного порта. Данные можно передать монитором порта Arduino IDE.

// вывод данных последовательного порта на LCD индикатор
#include


char data;

void setup()
{
Serial.begin(9600); // инициализируем последовательны порт
disp.begin(20, 4); //
}

void loop()
{
if (Serial.available()) { // если есть данные
data= Serial.read(); // читаем символ
if((data != 0xd) && (data != 0xa)) { // перевод строки
disp.write(data); // выводим символ на экран
}
}
}

У меня индикатор большой – 4 строки по 20 символов. В нем установлены два контроллера HD44780. Поэтому последовательно передаваемые символы заполняют сначала первую строку, затем третью, дальше вторую и четвертую. Т.е. через строку. Надо учитывать это свойство для определенных типов индикаторов. В документации на каждый LCD индикатор указывается последовательность адресации символов.

byte print(data)

Выводит на экран текст. Возвращает количество переданных байтов.

Функция имеет различные формы вызова для разных форматов и типов данных.

print(char d) Если аргумент типа char выводит код символа

char d= 83;
disp.print(d); // выводит символ S
disp.print(‘S’); // выводит символ S

print(int d) Если аргумент – целый тип, то выводит строку с десятичным представлением числа

int d= 83;
disp.print(d); // выводит строку “83”
disp.print(83); // выводит строку “83”

print(float) Вещественные типы выводятся символами ASCII, два знака после запятой

float d= 7.65432;
disp.print(d); // выводит строку “7.65”
disp.print(7.65432); // выводит строку “7.65”

print(* str) Если аргумент указатель на строку, то выводится текстовая строка.

char letters= {65, 66, 67};
disp.print(“Letters”); // выводит строку “Letters”
disp.print(letters); // выводит строку из 3 символов с кодами 65, 66, 67

print(int d, DEC) Выводит строку ASCII - десятичное представление числа

int d= 83;
disp.print(d, DEC); // вывод строку “83”

print(int d, HEX) Выводит строку ASCII – шестнадцатиричное представление числа

int d= 83;
disp.print(d, HEX); // вывод строку “53”

print(int d, OCT) Выводит строку ASCII – восьмеричное представление числа

int d= 83;
disp.print(d, OCT); // вывод строку “123”

print(int d, BIN) Выводит строку ASCII – двоичное представление числа

int d= 83;
disp.print(d, BIN); // вывод строку “01010011”

print(float d, N) Для вещественных чисел параметр N задает количество цифр после запятой.

disp.print(7.65432, 0); // выводит строку “7”
disp.print(7.65432, 2); // выводит строку “7.65”
disp.print(7.65432, 4); // выводит строку “7.6543”

Пример программы, печатающей на дисплее текстовую строку.

// вывод текстовой строки на LCD индикатор
#include

LiquidCrystal disp(6, 7, 2, 3, 4, 5); // создаем объект

void setup()
{
disp.begin(20, 4); // инициализируем дисплей 4 строки по 20 символов
disp.print("Test string");
}

void loop()
{ }

void cursor()

Включает режим отображения курсора. Позиция, куда будет выведен следующий символ, подчеркивается.

disp.cursor(); // разрешаем отображение курсора

void noCursor()

Запрещает отображение курсора.

disp.noCursor(); // запрещаем отображение курсора

void blink()

Включает режим мигающего курсора. Используется совместно с функцией cursor(). Результат зависит от конкретной модели индикатора.

disp.blink(); // разрешаем мигающий курсор

void noBlink()

Отключает режим мигающего курсора.

disp.noBlink(); // запрещаем мигающий курсор

void display()

Включает экран после того, как он был выключен функцией noDisplay(). На экране отобразится информация, которая была до выключения.

disp.display(); // включаем дисплей

void noDisplay()

Выключает экран. Информация сохраняется в памяти и появляется при включении дисплея.

disp.noDisplay(); // выключаем дисплей

void scrollDisplayLeft()

Прокручивает содержимое дисплея на один символ влево.

disp. scrollDisplayLeft(); // сдвигаем все влево

void scrollDisplayRight()

Прокручивает содержимое дисплея на один символ вправо.

disp. scrollDisplayRight(); // сдвигаем все вправо

void autoscroll()

Включение режима автоматической прокрутки текста. При выводе каждого символа, весь текст на экране будет сдвигаться на один символ. В какую сторону сдвигается информация определяют функции leftToRight() и rightToLeft().

disp. autoscroll()(); // включаем автопрокрутку

void noAutoscroll()

Выключение автоматической прокрутки текста.

disp. noAutoscroll()(); // запрещаем автопрокрутку

void leftToRight()

Задает режим вывода теста слева-направо. Новые символы будут появляться справа от предыдущих.

leftToRight(); // режим слева-направо

void rightToLeft()

Задает режим вывода теста справа-налево. Новые символы будут появляться слева от предыдущих.

rightToLeft(); // режим справа-налево

void createChar(num, data)

Метод для создания пользовательского символа. Контроллер допускает создание до 8 символов (0…7) размером 5x8 пикселей. Изображение символа задается массивом размерностью 8 байт. 5 младших битов каждого байта определяют состояние пикселей строки.

Для вывода пользовательского символа можно использовать функцию write() с номером символа.

// создание пользовательского символа
#include

LiquidCrystal disp(6, 7, 2, 3, 4, 5); // создаем объект

byte smile = {
B00000000,
B00010001,
B00000000,
B00000000,
B00010001,
B00001110,
B00000000,
B00000000
};

void setup()
{
disp.createChar(0, smile); // создаем символ
disp.begin(20, 4); // инициализируем дисплей 4 строки по 20 символов
disp.print("Smile ");
disp.write(byte(0)); // выводим символ
}

void loop()
{ }

Вот пример программы, выводящей на экран русский алфавит.

// вывод русского алфавита
#include

LiquidCrystalRus disp(6, 7, 2, 3, 4, 5); // создаем объект

void setup()
{
disp.begin(20, 4); // инициализируем дисплей 4 строки по 20 символов
disp.print("абвгдеёжзийклмнопрст");
disp.print("АБВГДЕЁЖЗИЙКЛМНОПРСТ");
disp.print("уфхцчшщьыьэюя ");
disp.print("УФХЦЧШЩЫЬЭЮЯ ");
}

void loop()
{ }

Взаимодействие символьного Ардуино дисплея добавляет приятный элемент читаемости в проект. Многие из лучших проектов по всему миру демонстрируют спортивные дисплеи. Эти ЖК-дисплеи используются для отображения информации от микроконтроллера или любого подключенного к нему датчика. Например, можно создать систему , которая отображает данный показатель на Arduino. Можно сконструировать собственный спидометр, который отображает скорость на экране.

В этом учебном пособии по Ардуино LCD вы найдете интерфейс с символами Arduino LCD i2c. Вы можете использовать информацию из этого текста для создания собственных проектов на основе ЖК-монитора.

Display для Аrduino – это одно из самых простых устройств, которое можно использовать для отображения результатов проектов. Однако есть два различных типа данного устройства: графические и символьные. В этой статье используется персональный экран, так как он легче всего работает. Кроме того, в зависимости от размера экрана, существуют разные типы:

  • 16x2 символьный – 16 колонок и 2 строки;
  • 20x4 символов – 20 колонок и 4 строки.

Они также доступны в разных цветах:

  1. Зеленые с черными символами.
  2. Синие с белыми символами.
  3. Красные с черными символами.

Тем не менее, зеленые и синие экраны являются наиболее распространенными. Другие цвета встречаются редко. В этом уроке используется Аrduino display с синим символом 20x4. Микропроцессор взаимодействует с экраном через четыре линии передачи данных. Мы задействуем цифровые контакты на микроконтроллере, чтобы взаимодействовать с дисплеем и отображать на нем то, что мы хотим.

Подсветка на ЖК-дисплее активируется, когда дается питание 5 В от микроконтроллера до 15 на мониторе и заземляющим штырем 16. Кроме того, для регулировки контрастности сенсорного дисплея для Ардуино нужен потенциометр 10K.

Необходимые компоненты

Для создания дисплея для Ардуино понадобится следующее оборудование:

  1. Микроконтроллер Ардуино или Genuino.
  2. ЖК-экран, совместимый с драйвером Hitachi HD44780.
  3. Штыревые разъемы для припаивания к выводам ЖК-дисплея.
  4. Потенциометр 10 кОм.
  5. 220 Ом резистор.
  6. Соединительные провода.
  7. Макет.

ЖК-мониторы, совместимые с Hitachi; ими можно управлять в двух режимах: 4-битном или 8-битном. Для 4-битного режима требуется семь выводов ввода/вывода от Arduino LCD, а для 8-разрядного режима требуется 11 контактов. Для отображения текста на экране вы можете делать все в 4-битном режиме, поэтому пример показывает, как управлять 2x16 ЖК-дисплеем в 4-битном режиме.

Программирование

Теперь мы можем попробовать отобразить что-то на дисплее через Arduino ssd1306. Прежде чем вы это сделаете, вам необходимо загрузить библиотеку Arduino по ссылке - . Затем нужно извлечь папку «LiquidCrystal» из файла загрузки. А после скопируйте и вставьте папку «LiquidCrystal» в каталог микропроцессора, пример конечной директории результатов должен выглядеть так: arduino-1.0.5librariesLiquidCrystal.

Затем откройте свою среду разработки и перейдите к:

Файл → Примеры → LiquidCrystal → HelloWorld

Загрузите код в микроконтроллер. Пользователь увидит следующую информацию:

Обратите внимание, если вы используете экран 16x2, отредактируйте lcd.begin (20,4) на lcd.begin (16,2).

Процесс сборки

Первый шаг – припаять 16-контактные штыревые разъемы на Аrduino display. Затем вы можете использовать либо 16-контактный разъем для подключения к Ардуино, либо просто использовать разъем «женщина-женщина». Если вы впервые подключаетесь к микроконтроллеру, проще всего использовать макет.

Первое, что вам нужно сделать, прежде чем работать с жидкокристаллическим дисплеем, – проверить его. Для этого выполните соединения, как показано на диаграмме выше.

  • Подключите контакт 15 на мониторе к контакту 5V от Arduino 128х64 lcd spi.
  • Затем подключите вывод 16 на устройстве к выходу GND.

Эти контакты используются для питания подсветки ЖК-дисплея. Затем вам нужно настроить логические операции для устройства.

  • Для этого подключите вывод 1 на мониторе к выходу GND Arduino. Затем подключите контакт 2 на экране к выходу 5V Ардуино.
  • Затем вам нужно настроить потенциометр регулировки контрастности.

Возьмите потенциометр 10K и подключите первую клемму к выходу 5V Arduino, а второй – к контакту 3 и третьему терминалу к выходу GND.

Затем включите микропроцессор. Вы заметите, что подсветка на ЖК-дисплее включена. Кроме того, когда вы поворачиваете ручку на потенциометре, блоки символов на ЖК-дисплее становятся яркими/тусклыми. Посмотрите картинку ниже, чтобы узнать, о чем я говорю. Если монитор отображает то, что показано на фотографии ниже, это означает, что ваш экран настроен правильно! Если вы не смогли этого достичь, проверьте свои соединения и потенциометр.


Теперь нам нужно подключить линии передачи данных и другие контакты, которые работают с экраном. Ознакомьтесь с приведенной ниже схемой подключения.


Начнем с подключения контрольных проводов для ЖК-дисплея. Подключите контакт 5 (RW) монитора к контакту GND от Arduino. Этот контакт не используется и служит для чтения/записи. Затем подключите контакт 4 (RS) экрана к цифровому выходу 7 Arduino. Штырек RS используется для указания на ЖК-дисплее, отправляем ли мы данные или команды (чтобы изменить положение курсора).

Затем подключите контакт 6 (EN) ЖК-дисплея к цифровому выходу Arduino 8. EN – это контактное гнездо на устройстве, оно используется, чтобы сообщить монитору, что данные готовы для чтения.

Затем мы должны подключить четыре вывода данных на устройстве. Подсоедините контакт 14 (DB7) экрана к цифровому выступу 12 Arduino. Затем подключите контакт 13 (DB6) монитора к цифровому выходу 11 Arduino. Затем вывод 12 на мониторе (DB5) на цифровой вывод 10, затем Вывод LCD № 11 (DB4) на цифровой вывод 9.

Вот и все, вы закончили подключать ЖК-дисплей к Arduino. Вы заметите, что между управляющими выводами и выводами данных на ЖК-дисплее есть четыре несвязанных контакта, как показано ниже.


Запуск и тестирование

Попробуйте переделать код для сенсорного устройства. В принципе, для управления текстом на ЖК-дисплее есть три основные функции:

  1. begin (итоговые столбцы, общие строки). Эта функция используется внутри setup () для инициализации размера используемого дисплея. Если это 20x4, то: lcd.begin (20,4), иначе, если это 16x2, тогда: lcd.begin (16,2).
  2. setCursor (номер столбца, номер строки) – эта функция помещает курсор на устройстве в нужное положение. Любой текст, отображаемый после этой функции, начнется с указанной вами позиции. Например, используйте: lcd.setCursor (4,0), т. е. пятый столбец и первую строку (начиная с 0,0).
  3. print («текст») – эта функция используется для печати текста на ЖК-дисплее. Какая бы ни была строка внутри «», она отображается на дисплее.

Вот и все, теперь можно добавить полученное устройство к проектам.

Символьный дисплей LCD 2004 IIC/I2C синий для Arduino (LCD-2004B-IIC)

Жидкокристаллический дисплей LCD 2004 (Liquid Crystal Display) 20 х 4 с синей подсветкой и установленным I2C/SPI конвертером .
Дисплей LCD-2004B-IIC рекомендуется для создания различных Arduino проектов, обучения конструированию различных систем мехатроники и программированию, а также для конструкторских хобби.

  • Дисплей LCD2004 оснащён платой конвертером для преобразования параллельного 8-битного интерфейса дисплея в шину I2C, по которой он и подключается к Arduino по адресу 0x3F или 0x27. Наличие последовательного интерфейса позволяет общаться с контроллером Arduino по средствам 2-х проводной связи, это поможет сэкономить цифровые пины контроллера для подключения дополнительной периферии.
  • Так же на I2C/SPI конвертере установлен потенциометр для регулировки яркости подсветки.
  • Дисплей LCD-2004B-IIC может одновременно отображать до 80 символов (20 символов, 4 строки).
  • Дисплей оснащён светодиодной подсветкой синего цвета.
  • Контроллер дисплея HD44780 имеет ПЗУ в которой хранятся цифры, символы латиницы и некоторые иероглифы японского языка, для их отображения на дисплее. Отсутствующие символы, в т.ч. и символы кириллицы, можно загружать в память ОЗУ контроллера.
Характеристики
Тип дисплея: жидкокристаллический символьный (латиница)
Количество символов в строке: 20
Количество строк: 4
Цвет подсветки: синий
Цвет символов: белый
Угол обзора: 180°
Интерфейсы: IIC/I2C/TWI
Напряжение питания: 5В
Рабочая температура: от -20 °С до +70 °С
Размеры: 98 х 60 х 12 мм
Вес: 80 гр.

Жидкокристаллический монитор LCD2004 с поддержкой i2c подключается к плате Arduino при помощи четырех проводов – два провода для данных, два провода для питания.

Вывод GND - подключается к GND на плате
Вывод VCC – на 5V
Вывод SCL - подключается на Arduino Uno и Nano А5 (SCL), на Arduino Mega 21 (SCL)
Вывод SDA - подключается на Arduino Uno и Nano А4 (SDA), на Arduino Mega 20 (SDA)

Для взаимодействие Arduino c LCD 2004 по шине I2C вам потребуются как минимум две библиотеки:
1. Библиотека Wire.h для работы с I2C уже имеется в стандартной программе Arduino IDE.
2. Библиотека LiquidCrystal_I2C.h, которая включает в себя большое разнообразие команд для управления монитором по шине I2C и позволяет сделать скетч проще и короче. После подключения дисплея нужно дополнительно установить библиотеку LiquidCrystal_I2C.h.

После подключения дисплея нужно дополнительно установить библиотеку LiquidCrystal_I2C.h.

Существуют различные версии этой библиотеки, актуальная версия NewliquidCrystal_1.3.4.

2. Разархивировать папку с библиотекой “NewliquidCrystal” в папку, где установлена среда программирования «Arduino IDE» (например: C:Program FilesArduinolibraries)

3. Переименовать папку библиотеки “NewliquidCrystal” на “LiquidCrystal_I2C”

4. Перезагрузить среду программирования «Arduino IDE»

5. Загрузить скетч в плату Arduino

После подключения к скетчу всех необходимых библиотек можно приступать к работе.

Если на дисплее не отображаются символы, или они отображаются слишком тускло, то настройте контрастность поворотом подстроечного резистора (потенциометра) на обратной стороне дисплея.

Если на дисплее не отображаются символы, верхняя строка полностью закрашена, а нижняя пустая, измените адрес дисплея в строке создания объекта (0x27 или 0x3F).

Если у дисплея не горит подсветка, проверьте питание на выводах VCC и GND, и наличие перемычки на обратной стороне дисплея.