Помогите создать замену строки скроллом

neyasbltb_88
Offline
Зарегистрирован: 19.01.2017

Как новичок в программировании, я буду признателен любой помощи в решении такой задачи. Нужно сделать замещение скроллингом одной строки (в моем примере это 01234) на другую (56789), и чтобы последняя оставалась на месте. За 2 дня упорных раздумий смог добиться только того, чтобы уезжала первая строка, а вторую все никак не получается туда прикрутить. На гифке изобразил желаемый результат. И прикрепляю скетч с тем, что у меня пока получилось сделать. Arduino Nano, дисплей от Nokia 5110 с библиотекой Adafruit.

#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>

//(CLK, DIN, DC, CE, RST)
Adafruit_PCD8544 display = Adafruit_PCD8544(8, 9, 10, 11, 12);
int Vcc = 7;
int Bl = 6;
int Gnd = 5;

String scr1("01234");
String scr2("56789");
int scrollPosition = scr2.length();

void setup() {
pinMode(Vcc, OUTPUT);
digitalWrite(Vcc, HIGH);
pinMode(Bl, OUTPUT);
analogWrite(Bl, 150);
pinMode(Gnd, OUTPUT);
digitalWrite(Gnd, LOW);
Serial.begin(9600);
display.begin();
display.cp437(true);
display.setContrast(50);
display.setTextColor(BLACK);
display.clearDisplay();
display.display();

}

void loop() {


display.clearDisplay();
display.setCursor(0,16);
Scroll(scr1, scr2, 5);
display.display();
delay(1000);

}

void Scroll(String message1, String message2, int num)  //Текст1, Текст2, Количество показываемых символов
{

for (int i = scrollPosition; i < scrollPosition + num; i++)
{

if ((i >= message1.length()) || (i < 0))
{
display.print(" ");
break;
}
else
{
display.print(message1.charAt(i));
}
}
scrollPosition++;

if ((scrollPosition >= message1.length()) && (scrollPosition > 0))
{
scrollPosition = -5;
}

}

 

neyasbltb_88
Offline
Зарегистрирован: 19.01.2017