В этом эксперименте создадим "бегущую строку" на 4-х разрядной светодиодной матрице. Потенциометр будем использовать для регулирования скорости.
Приступаем к написанию скетча. Строку для вывода будем хранить в переменной text:
String text = "Arduino-KIT";
Размер матрицы по горизонтали 32 позиции. Длина "бегущей строки" равна длине строки умноженной на 6 (5 ширина символа + 1 интервал между символами).
Переменная offset – координата начала строки. Начиная с этой координаты, выводим символы на матрицу.
Крайнее левое положение:
offset=0-text.length()*6;
По достижении крайнего положения устанавливаем offset=32.
Количество матриц по-горизонтали берем с запасом, чтобы не происходило сбоев с выводом.
int numberOfHorizontal = 15;
Скорость движения регулируем потенциометром.
Содержимое скетча представлено в листинге.
// подключение библиотек
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Max72xxPanel.h>
// пин CS
int pinCS = 10;
// количество матриц по-горизонтали (берем с запасом!!!)
int numberOfHorizontal = 4;
// количество матриц по-вертикали
int numberOfVertical = 1;
// создание объекта
Max72xxPanel matrix = Max72xxPanel(pinCS, numberOfHorizontal,
numberOfVertical);
// строка для вывода
String text = "Arduino-KIT 2019";
// текущее смещение от 0
int offset=32;
// максимальное значение скорости
int maxspeed1=100;
// минимальное значение скорости
int minspeed1=1000;
void setup() {
// яркость от 0 до 15
matrix.setIntensity(7);
}
void loop() {
// очистка экрана
matrix.fillScreen(LOW);
// поворот 90°
matrix.setRotation( 0, 1 );
matrix.setRotation( 1, 1 );
matrix.setRotation( 2, 1 );
matrix.setRotation( 3, 1 );
// вывод строки с позиции offset
for ( int i = 0 ; i < text.length(); i++ ) {
if(i*6+offset>(-6) && i*6+offset<32) {
matrix.drawChar(i*6+offset, 0, text[i], HIGH, LOW, 1);
}
}
matrix.write();
// задержка (скорость)
int speed1=(analogRead(A0),0,1023,minspeed1,maxspeed1);
delay(speed1);
// изменение смещения
offset=offset-1;
// в начало - позиция 32
if(offset+text.length()*6==0) {
offset=32;
}
}
Загружаем скетч на плату Arduino и наблюдаем "бегущую строку", потенциометром регулируем скорость.