Урок 20/31: Использование LCD1602 с Arduino для отображения текста | Robojax
Введение
LCD1602 — один из самых популярных алфавитно-цифровых дисплеев для проектов на Arduino, а в паре с модулем I2C он становится невероятно простым в использовании. В этом уроке вы узнаете, как выводить текст, числа и пользовательские символы, а также как прокручивать текст по экрану. Мы также покажем, как объединить LCD с другими датчиками для создания практичных инструментов мониторинга. Это руководство является частью более широкого курса по Arduino и предназначено для того, чтобы помочь вам создавать полезные устройства для дома, школы или мастерской.
Вот несколько практических идей, что можно создать с помощью этих знаний:
- Монитор температуры и влажности для теплицы или террариума.
- Простой вольтметр для проверки уровня заряда батарей в ваших проектах.
- Датчик расстояния для парковочного ассистента или умного мусорного бака, показывающий, насколько он заполнен.
Обзор аппаратного обеспечения
LCD1602 — это дисплей с 16 символами в 2 строки. Модуль на задней панели — это адаптер I2C (или I²C), который сокращает количество необходимых проводов со стандартного параллельного подключения до всего четырех: GND, VCC, SDA и SCL. Это значительно упрощает подключение и освобождает множество цифровых пинов на вашем Arduino.
Дисплей оснащен подсветкой, которую можно включать и выключать программно. На модуле I2C также есть небольшой потенциометр для регулировки контрастности. Если при включении дисплея вы ничего не видите, просто поверните этот винт, пока текст не станет видимым (на видео в 02:47).
Существуют разные версии этого дисплея, например LCD2004, который имеет 20 символов и 4 строки. Адрес I2C также можно изменить, запаяв перемычки A0, A1 и A2 на модуле (на видео в 03:51). Адрес по умолчанию часто равен 0x27, но он может отличаться, поэтому всегда полезно запустить сканер I2C, чтобы найти правильный адрес для вашего конкретного модуля.
Компоненты оборудования
Чтобы следовать основной демонстрации в этом видео, вам понадобятся следующие компоненты:
- Arduino Uno (или любая совместимая плата)
- LCD1602 с модулем I2C
- Макетная плата и соединительные провода
Для последующих разделов вам также понадобятся датчик DHT11, потенциометр или ультразвуковой датчик, в зависимости от того, какой проект вы хотите собрать.
Схема подключения
Подключение LCD несложное. Схема подключения наглядно показывает все соединения.
Подключите контакты модуля I2C к вашему Arduino следующим образом:
- GND к GND на Arduino
- VCC к 5V на Arduino
- SDA к A4 на Arduino
- SCL к A5 на Arduino
Если на вашей плате Arduino есть выделенные контакты SDA и SCL, вы также можете подключиться к ним (на видео в 05:47).
Установка библиотеки
Для этого модуля требуется библиотека "Arduino Liquid Crystal I2C". Вы можете скачать её по ссылке, указанной в описании видео, или с сайта Robojax. После загрузки установите её в вашей среде Arduino IDE, перейдя в Sketch > Include Library > Add .ZIP Library и выбрав загруженный файл (на видео в 06:41).
Объяснение кода
Поскольку фрагменты кода не были предоставлены, мы объясним общую структуру кода, использованного в видео.
Код начинается с подключения необходимых библиотек: Wire.h для связи по I2C и LiquidCrystal_I2C.h для дисплея. Ключевая часть — создание объекта для LCD. Вам нужно указать правильный адрес I2C и размеры вашего дисплея:
// Установите адрес LCD 0x27 для дисплея 16 символов и 2 строки
LiquidCrystal_I2C lcd(0x27, 16, 2);
Если ваш дисплей ничего не показывает, возможно, вам нужно изменить 0x27 на 0x3F или другой адрес, найденный вашим сканером I2C. Числа 16 и 2 обозначают количество столбцов и строк на вашем дисплее.
В функции setup() вы инициализируете LCD и включаете подсветку:
void setup() {
lcd.init();
lcd.backlight();
}
Для вывода текста используйте функцию lcd.setCursor(column, row) для позиционирования курсора, а затем lcd.print() для отображения данных. Например, чтобы напечатать на второй строке, используйте lcd.setCursor(0, 1). В видео также объясняется, как выводить специальные символы, такие как символ градуса, с помощью lcd.write(223) (на видео в 31:42).
Демонстрация
В видео демонстрируются несколько ключевых функций LCD. Сначала показан базовый вывод текста "Hello World" и использование функции lcd.scrollDisplayLeft() для перемещения текста по экрану. Позже LCD объединяется с датчиком DHT11 для отображения температуры и влажности, с потенциометром для отображения напряжения и с ультразвуковым датчиком для отображения расстояния.
Для отображения температуры код считывает данные с датчика и выводит значение. Чтобы показать целое число без десятичных знаков, можно преобразовать значение с плавающей точкой в целое число, как показано в видео (на видео в 32:21).
Для вольтметра код считывает аналоговое значение с потенциометра, масштабирует его в диапазон напряжения 0-5 В и отображает на экране (в видео на 34:31).
Финальная демонстрация объединяет LCD с ультразвуковым датчиком для отображения измеренного расстояния в сантиметрах (в видео на 37:55).
Связанные проекты из этого видео
Это видео также содержит другие учебные проекты. Вы можете найти их здесь:
- Урок 20/31: Отображение температуры и влажности с DHT11 на LCD-экране
- Урок 20/31: Отображение напряжения на LCD1602
Главы
- [00:00] Введение в LCD1602 и обзор курса
- [01:30] Обзор аппаратной части LCD1602 и модуля I2C
- [02:47] Настройка контрастности дисплея и подсветки
- [03:14] Подключение контактов и выбор I2C-адреса
- [05:28] Схема подключения для LCD
- [06:16] Установка необходимой библиотеки
- [07:24] Базовый код для вывода текста
- [11:10] Пример мигающего курсора
- [13:46] Пользовательские символы и вывод специальных знаков
- [18:51] Пример последовательного вывода
- [23:16] Прокрутка текста на LCD
- [36:51] Комбинирование LCD с ультразвуковым датчиком
/*
Lesson 20/31: Displaying text on LCD screen
Get this code and watch video Download and resource page https://robojax.com/RJT603
YouTube video https://www.youtube.com/watch?v=NXAswOc_2zg
*/
/*
This is code for LCD1602 Display with I2C module
* watch the video for this code https://youtu.be/q9YC_GVHy5A
* Permission granted to share this code given that this
* note is kept with the code.
* Disclaimer: this code is "AS IS" and for educational purpose only.
* This library is based on work done by DFROBOT (www.dfrobot.com).
*/
/*
* This code has been modefied from the Arduino library
* Updated by Ahmad Nejrabi on Jan 20, 2018 at 11:09
* in Ajax, Ontario, Canada
* for Robojax.com
*
* This is code for LCD1602 Display with I2C module
* which can display text on the screen.
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
void setup()
{
// Robojax code for LCD with I2C
// initialize the LCD,
lcd.begin();
// Turn on the blacklight and print a message.
//lcd.backlight();
// Robojax code for LCD with I2C
}
void loop()
{
lcd.clear();
lcd.setCursor (0,0);
lcd.print("SunFounder ");
lcd.setCursor (0,1);
lcd.write(244);
delay(500);
//end of loopcode Robojax code for LCD with I2C
}
Common Course Links
Common Course Files
Вещи, которые могут вам понадобиться
-
АмазонкаSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Амазонка
-
Амазонка
-
Амазонка
-
Амазонка
-
АмазонкаКупите LCD1602-I2C на Amazonamzn.to
-
eBayКупить LCD1602-I2C на eBayebay.us
-
АлиЭкспрессКупите 10 шт. LCD1602-I2C на AliExpresss.click.aliexpress.com
Ресурсы и ссылки
-
ДокументацияДокументация для набора 3 в 1 IoT/умный автомобиль/обучающий комплект SunFounderdocs.sunfounder.com
-
ВнешнийБиблиотека LCD от RoboJax (ZIP)robojax.com
-
Внешний
Файлы📁
Библиотеки Arduino (zip)
-
Исходный код обучающего набора 3-в-1 Smart Car от SunFounder
3in1-kit-main-v2.zip12.80 MB