LCD 1602 бегущая строка на Ардуино
Бегущая строка на дисплее LCD 1602 I2C Arduino может быть выполнена различными способами. Наиболее простой способ выполнить эту задачу — это использование цикла for в программе. Подробно рассмотрим два примера бегущей строчки на жк дисплее. Первый — простой скетч с циклом for. Второй, более сложный вариант, учитывающий количество символов в строке, выводимой на дисплей Arduino Uno.
Мы уже рассматривали LCD 1602 подключение к Ардуино ранее в наших уроках. При использовании стандартной библиотеки LiquidCrystal.h можно использовать команду для прокрутки экрана: autoscroll(); . Библиотека для дисплея Arduino с I2C модулем LiquidCrystal_I2C.h лишена этой возможности, поэтому потребуется в программе использовать цикл for или while для прокрутки строки на жк экране.
Подключение LCD 1602 к Arduino UNO через I²C
LCD 1602 i2c | Arduino Uno | Arduino Nano | Arduino Mega |
GND | GND | GND | GND |
VCC | 5V | 5V | 5V |
SDA | A4 | A4 | 20 |
SCL | A5 | A5 | 21 |

Управляем элементом бегущей строки Adafruit с Arduino. Часть 1. Подключение
- каждый раз в цикле for меняется переменная i , а значит и положение курсора. Через 200 мс надпись очищается и выводится в новом месте;
- бегущие буквы на дисплее можно сделать и с помощью цикла while Arduno.
Как сделать бегущую строку на LCD 1602
Подключение LCD 1602 к Arduino UNO через I²C
LCD 1602 i2c | Arduino Uno | Arduino Nano | Arduino Mega |
GND | GND | GND | GND |
VCC | 5V | 5V | 5V |
SDA | A4 | A4 | 20 |
SCL | A5 | A5 | 21 |
Напомним, что дисплей имеет 16 символов в одной строке (от 0 до 15), но в контроллере дисплея заложена память на 40 символов в строке. При использовании дисплея с модулем I2C для сборки схемы вам потребуется всего 4 провода. После подключения дисплея, загрузите следующий код. Пояснения к программе даны ниже, если у вас останутся вопросы, вы можете их оставить в комментариях к посту.
#3 Пример
Выводим надпись «Русский язык» на дисплей LCD1602 подключённый по шине I2C:
Выводим время прошедшее после старта на дисплей LCD1602 подключённый по шине I2C:
- address: Адрес дисплея на шине I2C — 0x27 или 0x3F
- col:
- row:
- RS: № вывода Arduino к которому подключён вывод RS
- E: № вывода Arduino к которому подключён вывод E
- D0. D3: № выводов Arduino к которым подключены выводы D0-D3
- D4. D7: № выводов Arduino к которым подключены выводы D4-D7
- col: количество столбцов реализованное у дисплея
- row: количество строк реализованное у дисплея
- col: количество столбцов реализованное у дисплея
- row: количество строк реализованное у дисплея
- size: размер символов, указывается константой:
LCD_5x8DOTS (по умолчанию), или LCD_5x10DOTS
Функции управления дисплеем:
Функции управления курсором:
Функции указывающие направление и выравнивание:
Функции ввода текста и символов:

Бегущая строка на Arduino управление со смартфона
- напряжение, требуемое для питания устройства, – 5 Вольт;
- масса – 7 грамм;
- размер – 19х42 мм;
- рабочая частотность – 16 МГц;
- флеш память – 16 Кб;
- оперативная память – 2 Кб;
- цифровые пины – 14 штук, причем 6 можно использовать, как ШИМ-выходы
- требуемое питание при входе – около 12 Вольт.
Выводим на LCD 1602 русский шрифт
QAPASS дисплей поддерживает 8 новых символов (пронумерованных от 0 до 7) размером 5 на 8 пикселей. Букву на кириллице, как и символ, можно задать массивом из восьми байт, характеризующих соответствующую строку. Можно добавить до 8 символов, поэтому используйте при выводе сочетание латинских и кириллических букв, как на примере. Загрузите скетч с надписью «Я ❤ сайт»
Скетч с русскими буквами на LCD I2C
Пояснения к коду:
- Массивы строк в функции byte simvol = ; можно прописывать в строку;
- Слово сайт использует набор русских и латинских букв.
- Процедура void loop() в скетче не используется, но все равно присутствует.
Поиск «готового решения» бегущей строки на Си результата не дал. Поэтому пришлось делать самому.
Этот «кусок» кода позволяет выводить бегущую строку (справа-налево), в любом месте и с использованием любого количества знакомест, в LCD индикаторах с контроллером HD44780 или аналогичном.
«. исходная строка. » — строка символы из которой нужно выводить в «бегущей» строке;
Для организации бегущей строки выбран такой алгоритм:
1. Отображаемые символы сдвигаются справо налево. Крайний левый при этом «теряется».
2. После сдвига, в крайний правый символ копируется очередной символ из исходной строки.
3. При достижении конца исходной строки, очередным становится первый символ исходной строки.
Для сдвига символов — для сдвигаемой ячейки считывается код символа из экранного ОЗУ (DDRAM) HD44780 и записывается в левостоящую ячейку ОЗУ.
Согласно DataSheet на HD44780 левый символ верхней строки имеет адрес в DDRAM — 0x00, а левый символ нижней строки — 0x40. При этом нужно помнить, что для того чтобы обратиться именно к экранному ОЗУ (а не к ОЗУ знакогенератора) необходимо чтобы бит RS был равен 1 (RS является старшим битом в байте адреса см.DataSheet).
В итоге получаем, что для того чтобы «обратиться» ко второму слева символу верхней строки необходимо «работать» с адресом 0x01 | 0x80 = 0x81 .
Функции записи и чтения «внутреннего содержимого» HD44780 есть в библиотеке (прототипы в lcd.h ). поэтому..собственно программа:
В данном примере бегущая строка выводиться в разряды с 8 (0xC7) по 16 нижней строки 16-ти разрядного индикатора.
unsigned char n_sim=1,m_end=43; //43 — дина строки в примере
.
n_sim — указатель положения текущего символа в исходной строке;
m_end — общее количество символов в исходной строке;
beg_str — бит «разрещающий» сдвиг. C его помощью можно регулировать скорость «бега»;
Скорее всего, в каждом из существующих компиляторов Си имеются библиотечные функции для работы с HD44780. Поэтому «переделать» программу под «свой» компилятор не составит труда.
Исходную строку я «готовлю» при помощи известной утилиты «HD44780.exe». При ее использовании, в коментариях, указывается длина строки: «»
Управляем элементом бегущей строки Adafruit с Arduino. Часть 1. Подключение
Потом подключаем верхние выводы, которые отвечают за доставку информации трёх цветов к верхней половине дисплея
Тоже самое проделаем с нижним уровнем для цветовых сигналов.
Далее подключаем сигнальные шины, которые выбирают, какие линии сейчас будут задействованы в выборе картинки.
Пин CLK подключается к 11 входу arduino mega.
Ну и остался последний пин OE. Он также одинаково подключается к Mega и Uno, напоминаю всё подключение я описываю к Uno, потому-что нет смысла подключать столь требовательный дисплей к контроллеру с маленьким объёмом памяти, о чём предупреждается и на сайте adafruit.
После всех итераций, если вы проверяете всё, как и я, на коленке, должно получиться что-то подобноеУже не терпится включить и посмотреть, что-же получится? Но ещё нужно подготовить тестовую прошивку, что я и опишу в следующей части, и попробуем сделать свои изображения, используя команды библиотеки adafruit.

Заключение
А где же обещанное управление со смартфона?
В принципе результатом я остался доволен, как-никак первый раз так много паял и всё сразу заработало. Но захотелось большего, и я подумал добавить управление с Android смартфона по Bluetooth. Для Arduino есть готовый модуль HC-06. Схема его подключения к Arduino выглядит следующим образом:
Подробности подключения к Arduino и соединения со смартфоном описаны в этой статье: Блютуз модуль HC-06 подключение к Arduino. Соединение с телефоном и компьютером
В соответствии с этим код был изменён. И решил добавить ускоренное пролистывание текста, инверсное зажигание светодиодов и пролистывание текста с мерцанием. Ссылки на код для Android и Arduino будут ниже. В результате получилась вот такая штука:
