Содержание
Модуль дисплея LCD 1602 — очень популярен в последнее время ввиду простоты его работы и способа подключения. Используется во множестве проектов где требуется вывод информации на дисплей. О том как подключить и настройка LCD модуля 1602 к Arduino и пойдет речь в этом посте.
При помощи модуля LCD 1602 можно без труда вывести на кран какую либо информацию — будь это текстовое сообщение, значение температуры, количество оборотов, давление и любые другие параметры.
Стоит он не дорого и не нуждается в какой либо тонкой и сложной настройке. Все что нужно для того чтобы начать с ним работать это подключить его к Arduino по схемам ниже. Подключить библиотеку для работы с ним и написать скрипт.
Распиновка LCD модуля 1602
Назначение выводов дисплея 1602
Вывод | Обозначение | Пин Arduino Uno |
---|---|---|
1- земля GND; | GND | GND |
2-питание 5 В; | VCC | 5V |
3-установка контрастности монитора; | VO | GND |
4-команда, данные; | RS | 11 |
5-записывание и чтение данных; | R/W | GND |
6-enable; | E | 12 |
7- линии данных; | DB0 | — |
8- линии данных; | DB1 | — |
9- линии данных; | DB2 | — |
10- линии данных; | DB3 | — |
11- линии данных; | DB4 | 5 |
12- линии данных; | DB5 | 4 |
13- линии данных; | DB6 | 3 |
14- линии данных; | DB7 | 2 |
15- плюс подсветки; | VCC | 5V |
16- минус подсветки; | GND | GND |
Основные технические характеристики дисплея 1602
- наличие светодиодной подсветки;
- контроллер HD44780;
- напряжение питания 5 В;
- размер дисплея 16х2 символов;
- диапазон рабочей температуры от -20 С до +70 С;
- угол обзора 180 градусов.
Схема подключения LCD модуля 1602 к Arduino без I2C
В данной схеме мы напрямую подключаем Arduino к LCD модулю, при такой схеме подключения много проводов. Что не очень удобно. Как видно из схемы для подключения Arduino напрямую к LCD 1602 понадобится 6 проводов.
Схема подключения LCD модуля 1602 к Arduino при помощи модуля I2C
В данной схеме используется модуль I2C , при помощи которого можно значительно сократить количество проводов. Для подключения понадобится всего 4 провода, которые соединяются с модулем.
Модуль i2c для работы с LCD 1602
Этот интерфейсный модуль позволяет уменьшить количество используемых выводов контроллера, вместо 8 или 4-битного соединения, требуется только 2 вывода (SDA и SCL).
- поддержка дисплеев: LCD 16×02 / 20×04;
- дополнительно: регулировка контрастности;
- напряжение питания. 5 В;
- интерфейс: I2C;
- размеры модуля: 54 мм x 19 мм x 15 мм
Схема модуля i2c для работы с LCD 1602
Внешний вид интерфейсного модуля i2c
Для соединения на модуле расположено три группы контактов:
Первая группа:
- SCL: линия тактирования (Serial CLock)
- SDA: линия данных (Serial Dфta)
- VCC: «+» питание
- GND: «-» питание
Вторая группа:
- VSS: «-» питание
- VDD: «+» питание
- VO: Вывод управления контрастом
- RS: Выбор регистра
- RW: Чтение/запись ( режим записи при соединении с землей)
- E: Еnable (строб по спаду)
- DB0-DB3: биты интерфейса (младшие )
- DB4-DB7: биты интерфейса (старшие)
- A: «+» питания подсветки
- K: «-» питания подсветки
Третья группа: (по умолчанию установлена перемычка)
- VCC:
- A от LCD:
Библиотека для работы с модулем LCD 1602
Для соединения Arduino c LCD 1602 по протоколу I2C потребуются две библиотеки:
- Библиотеки Wire.h — стандартная библиотека для работы Arduino c устройствами по протоколу с I2C она уже есть в Arduino IDE;
- Библиотека LiquidCrystal.h так же есть в в Arduino IDE используется при прямом подключении Arduino к LCD 1602 (без модуля I2C) ;
- Библиотека LiquidCrystal_I2C.h которая предоставляет все необходимые функции для работы с LCD 1602. Скачать вы ее можете в конце статьи.
Примеры скетчев
#include < LiquidCrystal.h >
// используйте свои значения
const int rs = 4, en = 5, d4 = 10, d5 = 11, d6 = 12, d7 = 13;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
void setup() {
lcd.begin(16, 2);
}
void loop() {
// устанавливаем курсор в позицию (0,0):
lcd.setCursor(0, 0);
// выводим цифры от 0 до 9:
for (int thisChar = 0; thisChar < 10; thisChar++) {
lcd.print(thisChar);
delay(500);
}
// устанавливаем курсор в (16,1):
lcd.setCursor(16, 1);
// включаем автоматическую прокрутку
lcd.autoscroll();
// печатаем от 0 до 9:
for (int thisChar = 0; thisChar < 10; thisChar++) {
lcd.print(thisChar);
delay(500);
}
// выключаем автоматическую прокрутку
lcd.noAutoscroll();
// очищаем экран для следующей итерации
lcd.clear();
}
#include < Wire.h >
#include < LiquidCrystal_I2C.h > // Подключение библиотеки
//#include < LiquidCrystal_PCF8574.h > // Подключение альтернативной библиотеки
LiquidCrystal_I2C lcd(0x27,16,2); // Указываем I2C адрес (наиболее распространенное значение), а также параметры экрана (в случае LCD 1602 - 2 строки по 16 символов в каждой
//LiquidCrystal_PCF8574 lcd(0x27); // Вариант для библиотеки PCF8574
void setup()
{
lcd.init(); // Инициализация дисплея
lcd.backlight(); // Подключение подсветки
lcd.setCursor(0,0); // Установка курсора в начало первой строки
lcd.print("Hello"); // Набор текста на первой строке
lcd.setCursor(0,1); // Установка курсора в начало второй строки
lcd.print("ArduinoMaster"); // Набор текста на второй строке
}
void loop()
{
}
#include < Wire.h >
void setup(){
Wire.begin();
Serial.begin(9600); // ответ будем просматривать через мониторинг порта.
while (!Serial);
Serial.println("\nI2C Scanner");
}
void loop(){
byte error, address;
int nDevices;
Serial.println("Scanning...");
nDevices = 0; // Пока не нашли ни одного устройства. Счетчик обнуляем
for(address = 8; address<127; address++ ){
// адресация начинается с 8, поэтому реально устройств подключается не 127 а чуть меньше.
// адреса до 8 зарезервированы
Wire.beginTransmission(address); // послали запрос по очередному адресу
error = Wire.endTransmission();
if (error == 0){ //ошибок нет
Serial.print("I2C device found at address 0x");
if (address<16) {
Serial.print('0');
Serial.print(address,HEX); // выводим адрес найденного устройства
Serial.println(" !");
nDevices++;
} else if (error==4) {
Serial.print("Unknow error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
Serial.println("No I2C devices found\n");
else
Serial.println("done\n");
delay(5000);
}
Описание функций и методов библиотеки LiquidCrystal I2C:
- home() и clear() – возврат курсора в начало экрана, вторая это очистка экрана курсор после очистки переходи в начало;
- write(ch) – вывод символа на экран;
- cursor() и noCursor() – показать/скрыть курсор на экране;
- blink() и noBlink() – включение/выключение мигание курсора;
- display() и noDisplay() – подключаем/отключаем дисплей;
- scrollDisplayLeft() и scrollDisplayRight() – смещаем экран на один символ вправо/влево;
- autoscroll() и noAutoscroll() – позволяет вкл./выкл. режим автопрокрутки. В этом режиме каждый новый символ записывается в одном и том же месте, вытесняя ранее написанное на экране;
- leftToRight() и rightToLeft() – направление выводимых символов слева направо или справа налево;
- createChar(ch, bitmap) – создание символа с кодом ch (0 – 7), для создания черных и белых точек
Возможные ошибки при подключении модуля I2C
Если после того загрузили программу в arduino экран никак не реагирует и он не отображается никакого символа, попробуйте выполнить следующие шаги:
Другой причиной не рабочего экрана может стать неправильный i2c адрес, для устранения неисправности попробуйте выполнить следующие шаги:
Скачать исходники
Полезные ссылки по проекту
Похожие записи
На Arduino можно довольно интересный проект начального уровня - цифровые игральные кости. При помощи которых можно генерировать случайное число от 1 до 6. ...
Системы заземления, используемые для выполнения заземления. Среди критериев, способствующих обеспечению защиты от такого процесса, как поражение электричеством, особого внимания...
В Европе для маркировки кабеля используются свои стандарты и нормативные документы. Чтобы расшифровать маркировку импортного кабеля, необходимо знать, что обозначает конкретная...
Сервопривод (servo) - устройство с электрическим мотором, которому можно задать определенный угол поворота и зафиксировать в определенном положении. Подключение сервопривода к Arduino очень...
Представленная схема полицейской мигалки на микроконтроллере и светодиодах может работать в 16 различных режимах. Режим выбирается при помощи одной кнопки, и собрана на микроконтроллере...
Функция setup() вызывается первой когда запускается скетч. Эта функция необходима для инициализации переменных, настройки режимов работы портов (выводов), для старта каких либо функций...