СОДЕРЖАНИЕ ►
Бегущая строка на дисплее LCD 1602 I2C Arduino может быть выполнена различными способами. Наиболее простой способ выполнить эту задачу — это использование цикла for в программе. Подробно рассмотрим два примера бегущей строчки на жк дисплее. Первый — простой скетч с циклом for. Второй, более сложный вариант, учитывающий количество символов в строке, выводимой на дисплей Arduino Uno.

Мы уже рассматривали LCD 1602 подключение к Ардуино ранее в наших уроках. При использовании стандартной библиотеки LiquidCrystal.h можно использовать команду для прокрутки экрана: autoscroll();. Библиотека для дисплея Arduino с I2C модулем LiquidCrystal_I2C.h лишена этой возможности, поэтому потребуется в программе использовать цикл for или while для прокрутки строки на жк экране.
Как сделать бегущую строку на LCD 1602
Для этого занятия потребуется:
- Arduino Uno / Arduino Nano / Arduino Mega;
- жк дисплей LCD 1602;
- провода папа-мама.

| 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 провода. После подключения дисплея, загрузите следующий код. Пояснения к программе даны ниже, если у вас останутся вопросы, вы можете их оставить в комментариях к посту.
Скетч бегущей строки на LCD 1602 I2C
#include "Wire.h" // библиотека для протокола I2C #include "LiquidCrystal_I2C.h" // библиотека для дисплея LiquidCrystal_I2C LCD(0x27,16,2); // присваиваем имя дисплею void setup() { LCD.init(); // инициализация LCD дисплея LCD.backlight(); // включение подсветки дисплея LCD.print("HELLO!"); // выводим надпись delay(1000); } void loop() { // передвигаем надпись вправо for (int i = 0; i < 10; i++) { LCD.setCursor(i, 0); LCD.print("HELLO!"); delay(200); LCD.clear(); // очищаем экран } // передвигаем надпись влево for (int i = 10; i > 0; i--) { LCD.setCursor(i, 0); LCD.print("HELLO!"); delay(200); LCD.clear(); // очищаем экран } }
Пояснения к коду:
- каждый раз в цикле for меняется переменная
i, а значит и положение курсора. Через 200 мс надпись очищается и выводится в новом месте; - бегущие буквы на дисплее можно сделать и с помощью цикла while Arduno.
В следующем примере используем команды из стандартной библиотеки LiquidCrystal.h — подключать ее в скетче не обязательно. Используем функции scrollDisplayRight и scrollDisplayLeft для перемещения строчки на дисплее в цикле for. При этом нам уже не требуется указывать местоположение надписи с помощью команды setCursor. Загрузите из следующего примера программу с перемещением надписи на дисплее.
Скетч для бегущей строчки на жк дисплее
#include "Wire.h" // библиотека для протокола I2C #include "LiquidCrystal_I2C.h" // библиотека для дисплея LiquidCrystal_I2C LCD(0x27,16,2); // присваиваем имя дисплею void setup() { LCD.init(); // инициализация LCD дисплея LCD.backlight(); // включение подсветки дисплея LCD.print("HELLO!"); // выводим надпись delay(1000); } void loop() { // передвигаем надпись вправо for (int i = 0; i < 10; i++) { LCD.scrollDisplayRight(); delay(200); } // передвигаем надпись влево for (int i = 10; i > 0; i--) { LCD.scrollDisplayLeft(); delay(200); } }
Пояснения к коду:
- условия цикла for можно менять — зависит от количества символов в строчке;
- при использовании
scrollDisplayуже не требуется очищать экран с помощью командыclear(), что уменьшает размер кода и производительность платы.










ПОЧЕМУ СКЕТЧ ТАК КРИВО СДЕЛАН?!!
Критикуя, предложите свой вариант 🙂
Можно после текст отобразить
Сделайте бегущую строку на дисплее в void setup и выводите текст после этого
И я тоже так думаю компилирую скетч, а он пишет Ошибка компиляции для платы Arduino Uno.
Если выходит ошибка, то это еще не значит, что проблема в скетче с бегущей строкой
А как сделать бегущую строку, которая выходит из левой части экрана?
В скетче два примера дано и слева — направо тоже
Все работает замечательно,даже на ESP32
Добрый день подскажите у меня только одна буква бегает в лево и право 1602А дисплей. Что делать???