МУНИЦИПАЛЬНОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ДОПОЛНИТЕЛЬНОГО ОБРАЗОВАНИЯ
«ЦЕНТР ДЕТСКОГО ТЕХНИЧЕСКОГО ТВОРЧЕСТВА»
Методическая разработка
«Работа с LCD дисплеем.
Анимация бегущей строки»
к дополнительной общеобразовательной
общеразвивающей программе
технической направленности
«Лаборатория робототехники»
Возраст детей: 10-15 лет
Автор: Костычев Вадим Александрович
г. Заречный Пензенской области
2022 г.
В ходе изучения робототехники, схемотехники и программирования на основе платформы Arduino большую роль играет разработка проектов. Они позволяют отработать как навыки программирования, так и сборки электрических цепей устройств. Данная разработка призвана отработать навыки работы с LCD-дисплеями, а именно – работу с бегущей строкой.
Целью данной разработки является повышение интереса учащихся к техническому творчеству посредством работы с платформой Arduino.
Данная методическая разработка используется как обучающий пример по дополнительной общеобразовательной общеразвивающей программе технической направленности «Лаборатория робототехники». С их помощью учащиеся смогут понять, с помощью каких алгоритмов можно запрограммировать «Бегущую строку». Данные проекты рассчитаны на стартовый уровень обучения.
«Бегущая строка»
«Бегущую строку» возможно запрограммировать несколькими разными способами. В данной разработке программирование будет осуществляться двумя способами: при помощи встроенных методов прокрутки и без них. Каждый из этих способов удобен для использования в различных условиях.
Принципиальная схема
Бегущая строка без специальных методов прокрутки
«Бегущая строка» без использования специальных методов прокрутки работает на основе цикла for и метода clear(). Метод clear() позволяет стереть текст с экрана, а каждая новая интерация переменной i перемещает курсор на следующую позицию. После этого печатается заранее заданный текст.
Важно отметить диапазон работы цикла for. Если мы движемся слева направо, то первая позиция переменной i должна быть равна 0, а условие выполняться пока i I text.
Листинг программы
#include // библиотека для работы с модулем I2C
#include // библиотека для работы с ЖК-экраном
LiquidCrystal_I2C LCD(0x27, 16, 2); // объявление имени экрана(адреса, кол-ва ячеек, строк)
int stime = 500; // переменная задержки прокрутки 500 мс
String text = "Hello"; // данная строковая переменная будет хранить текст для вывода
void setup() { // единоразовая функция настройки работы платы
LCD.init(); // инициализация работы ЖК-экрана
LCD.backlight(); // включение подсветки экрана
LCD.clear() // отчистка экрана перед началом работы
}
void loop() { // повторяющаяся функция
for (int i = 0; i
// text.length() определяет кол-во символов в строке
LCD.setCursor(i, 0); // установка курсора в ячейку i первой строки
LCD.print(text); // // печать текста из переменной text
delay(stime); // задержка для корректного отображения на экране
LCD.clear(); // отчищаем экран
}
for (int i = 16 - text.length(); i 0; i--) { // цикл прокрутки текста влево.
// text.length() определяет кол-во символов в строке. Двигаемся переменной i до 0 позиции
LCD.setCursor(i, 0); // установка курсора в ячейку i первой строки
LCD.print(text); // печать текста из переменной text
delay(stime); // задержка для корректного отображения на экране
LCD.clear(); // отчищаем экран
}
}
Бегущая строка с использованием метода scrollDisplay
Алгоритм данного алгоритма схож с прошлым алгоритмом, но при помощи методов scrollDisplayLeft() и scrollDisplayRight() плата самостоятельно двигает курсор строки. Однако цикл for мы указываем аналогичным образом, как и в прошлом примере.
Важно отметить, что при использовании данных методов нет необходимости использовать отчистку экрана, а также перепечатывать текст – он печатается только один раз, а затем только перемещается по строке дисплея.
Листинг программы
#include // библиотека для работы с I2C
#include // библиотека для работы с ЖК-экраном
LiquidCrystal_I2C LCD(0x27, 16, 2); // объявление имени экрана, адреса, кол-ва ячеек, строк
int stime = 500; // переменная задержки прокрутки на 500 мс
String text = "Hello world!";
void setup() { // единоразовая функция настройки работы платы
LCD.init(); // инициализация работы ЖК-экрана
LCD.backlight(); // включение подсветки экрана
LCD.clear(); // отчистка экрана
LCD.print(text); // единоразовая печать прокручиваемого текста
}
void loop() { // повторяющаяся функция
for (int i = 0; i
LCD.scrollDisplayRight(); // прокрутка вправо
delay(stime); // задержка в 500 мс для коррекного отображения экраном
}
for (int i = 16; i 0; i--) { // цикл прокрутки текста влево (16-6 символов)
LCD.scrollDisplayLeft(); // прокрутка влево
delay(stime); // задержка в 500 мс для коррекного отображения экраном
}
}