Lcd 2004 подключение к ардуино по i2c
LCD I2C модуль позволить подключить символьный дисплей к плате Arduino всего по двум сигнальным проводам.
Используемые компоненты (купить в Китае):
• Управляющая плата
Arduino UNO 16U2, либо более дешевая Arduino UNO CH340G,
Arduino Nano CH340G, либо Arduino MEGA 16U2, либо более дешевая Arduino MEGA CH340G,
Arduino PRO mini, либо Arduino Micro
• LCD I2C модуль
• Соединительные провода
Основные технические характеристики:
• Дисплей: Символьный 16х02 либо 20×04
• Подсветка: Синяя c белыми символами
• Контраст: Настраивается потенциометром
• Напряжение питания: 5В
• Интерфейс: I2C
• I2C адрес: 0x27
• Размеры: 82мм x 35мм x 18мм
Подключение к Arduino
Модуль оборудован четырех-пиновым разъемом стандарта 2.54мм
SCL: последовательная линия тактирования (Serial CLock)
SDA: последовательная линия данных (Serial DAta)
VCC: + питания
GND: — питания
Выводы отвечающие за интерфейс I2C на платах Arduino на базе различных контроллеров разнятся
LCD I2C модуль | На базе ATmega 328 | Leonardo | MEGA, ADK, DUE |
SCL | A5 | D3 | D21 |
SDA | A4 | D2 | D20 |
VCC | +5V | +5V | +5V |
GND | GND | GND | GND |
Для работы с данным модулем необходимо установить библиотеку LiquidCrystal_I2C1602V1
Скачиваем, распаковываем и закидываем в папку libraries в папке Arduino. В случае, если на момент добавления библиотеки, Arduino IDE была открытой, перезагружаем среду.
Переходим непосредственно к скетчу. В данном примере выведем стандартный Hello, world! и для адрес нашего сообщества.
пример программного кода:
Создание собственных символов
С выводом текста разобрались, буквы английского алфавита зашиты в память контроллера внутри дисплея и с ними проблем нет. А вот что делать если нужного символа в памяти контроллера нет?
Не беда, требуемый символ можно сделать вручную. Данный способ частично, ограничение в 7 символов, поможет решить проблему вывода.
Ячейка, в рассматриваемых нами дисплеях, имеет разрешение 5х8 точек. Все, к чему сводится задача создания символа, это написать битовую маску и расставить в ней единички в местах где должны гореть точки и нолики где нет.
В ниже приведенном примере нарисуем смайлик.
пример программного кода:
Программка для легкого создания символов
В комментариях участник сообщества скинул ссылку на генератор символов
генератор символов по примеру выше,
сделал потому что не слабо )
http://codepen.io/nardist01/pen/RPPvMg?editors=101
Статьи в подобной тематике:
Купить в России LCD I2C модуль
А как же комментарии?
В данный момент еще реализованы не все элементы нашего сообщества. Мы активно работаем над ним и в ближайшее время возможность комментирования статей будет добавлена.
Кто сказал, что символьные дисплеи для символов? Какие-то скучные чуваки. Если бы это было так, эти дисплеи не были бы настолько любимы и популярны в Arduino среде (купить можно тут https://alexgyver.ru/arduino_shop/). Подробного гайда лично от меня пока что нет, но суть такая: в этих дисплеях есть 8 ячеек для хранения “кастомных” символов, то есть символов, которые можно нарисовать самому, например при помощи различных онлайн сервисов типа такого http://maxpromer.github.io/LCD-Character-Creator/. Полученный массив байтов вставляется в скетч, передаётся в дисплей, и затем можно им пользоваться при помощи команды write(). Простой пример есть на офф сайте Ардуино https://www.arduino.cc/en/Reference/LiquidCrystalCreateChar. К слову эти ячейки в памяти занимают места с 0 по 7
Был у меня оч крутой проект, PCdisplay https://alexgyver.ru/pcdisplay/, в котором на дисплее 2004 отображалась в реальном времени информация о железе ПК: температуры и проценты загрузки, для красоты я выводил показатели не только числами, но и графически, в виде “полос загрузки” и графиков.
Проект получился очень классный, но вот я подумал, а почему бы не вынести построение графиков и полос загрузки удобными отдельными функциями? Ведь по-любому пригодятся кому-нибудь из вас, а достать код из PCdisplay новичку не под силу (к тому же он там чутка кривоват…). Так что представляю вашему вниманию GyverLCDbars – набор удобных инструментов для украшения ваших проектов графическими элементами: полосками загрузки и графиками. Актуальная версия всегда лежит у меня на GitHub https://github.com/AlexGyver/GyverLCDbars. ТЫКНИ для прямой загрузки архива.
В библиотеке вас ждёт 6 примеров: 4 типа полос загрузки и два примера с графиком.
Как этим пользоваться? Да очень просто. Одна функция для инициализации “кастомных” символов, вторая – для вывода нужного элемента с настройками его размера и позиции на дисплее!
Полоса загрузки: fillBar(столбец, строка, ширина, значение)
- Столбец: отвечает за положение левой точки полосы, нумерация идёт слева направо с нуля
- Строка: отвечает за положение левой точки полосы, нумерация идёт сверху вниз с нуля
- Ширина: полная ширина полосы по горизонтали. Очевидно, что ширина + стартовая позиция по горизонтали (столбец) не должны превышать ширину дисплея в символах по горизонтали
- Значение: число от 0 до 100 – процент заполнения полосы. Любая ваша величина приводится к диапазону 0-100 при помощи ардуиновской функции map
- Особенность: если вы используете свои кастомные символы, то перед выводом полосок нужно обязательно вызвать initBar() для загрузки в память дисплея символов полосы! Полоски занимают разное количество мест в зависимости от типа, подробнее смотрите в самих примерах
График из массива: drawPlotArray(столбец, строка, ширина, высота, мин. значение, макс. значение, массив) – смотри пример!
График в реальном времени: drawPlot(столбец, строка, ширина, высота, мин. значение, макс. значение, величина)
- Столбец: нумерация идёт слева направо с нуля. Начало координат графика – нижняя левая точка!
- Строка: нумерация идёт сверху вниз с нуля. Начало координат графика – нижняя левая точка!
- Ширина: ширина графика по горизонтали. Очевидно, что ширина + стартовая позиция по горизонтали (столбец) не должны превышать ширину дисплея в символах по горизонтали
- Высота: высота графика по вертикали. Очевидно, что высота+ стартовая позиция по вертикали (строка) не должны превышать высоту дисплея в символах по вертикали. То есть для 2004 максимум высота 4, для 1602 максимум 2.
- Мин. значение: минимальное значение для графика, ниже него строиться не будет (тип данных int -32,768 to 32,767)
- Макс. значение: максимальное значение для графика, выше него строиться не будет (тип данных int -32,768 to 32,767)
- Величина: значение, которое будет построено на графике с краю, предыдущие столбики автоматически сдвинутся в сторону при вызове функции drawPlot. Тип данных int -32,768 to 32,767
- Также в примере есть готовый кусок кода для расчёта и вывода максимального и минимального значения на текущем графике!
- Особенность: если вы используете свои кастомные символы, то перед выводом графика нужно обязательно вызвать initPlot() для загрузки в память дисплея символов графика! Они занимают все места, с 0 по 7!
Символьный дисплей “LCD2004” может выводить 20 символов в каждой из 4 строк, имеет голубую подсветку, которую можно отключить с помощью джампера (перемычки) на плате. Для подключения “LCD2004” к микроконтроллеру имеется интерфейс “I2C”.
Символьный дисплей – вид сзади
Подключение LCD2004 к Arduino через I2C:
- GND – общий
- VCC – ” +5 В”
- SDA – последовательная линия данных – на Arduino Uno и Nano А4 (SDA), на Arduino Mega – 20 (SDA)
- SCL – последовательная линия синхронизации – на Arduino Uno и Nano А5 (SCL), на Arduino Mega – 21 (SCL)
Схема подключения 2004-lcd к Arduino через I2C
Источник: