Содержание
Модуль дисплея 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 адрес, для устранения неисправности попробуйте выполнить следующие шаги:
Скачать исходники
Полезные ссылки по проекту
Похожие записи
-
Системы заземления TN-C, TN-S, TNC-S, TT, IT
Системы заземления, используемые для выполнения заземления. Среди критериев, способствующих обеспечению защиты от такого процесса, как поражение электричеством, особого внимания заслуживает заземление.
-
Маркировки кабеля европейских производителей
В Европе для маркировки кабеля используются свои стандарты и нормативные документы. Чтобы расшифровать маркировку импортного кабеля, необходимо знать, что обозначает конкретная аббревиатура на данной позиции.
-
Подключение сервопривода к Arduino
Сервопривод (servo) — устройство с электрическим мотором, которому можно задать определенный угол поворота и зафиксировать в определенном положении. Подключение сервопривода к Arduino очень простое и требует минимум деталей. Сервомоторы применяются в огромном количестве областей, наиболее частая сфера применения это робототехника и автоматика.
-
Схема полицейской мигалки на микроконтроллере
Представленная схема полицейской мигалки на микроконтроллере и светодиодах может работать в 16 различных режимах. Режим выбирается при помощи одной кнопки, и собрана на микроконтроллере PIC12F675 с полевыми транзисторами.
-
Программирование на Arduino. Функция setup
Функция setup() вызывается первой когда запускается скетч. Эта функция необходима для инициализации переменных, настройки режимов работы портов (выводов), для старта каких либо функций библиотек. Эта функция стартует только 1 раз, после того как было подано напряжение либо рестарта платы Arduino. int buttonPin = 3; void setup() { Serial.begin(9600); pinMode(buttonPin, INPUT); } void loop() { // […]
-
GSM модуль и Arduino
При помощи Arduino GSM модулей можно подключатся к удаленным устройства использую сотовую связь. Передача данных или команд осуществляется при помощи SMS команд или же через подключение через интернет, которое открыто через GPRS.