ARDUINO Плавная прокрутку содержимого экрана Nokia 5110 arduino

IgnatiyOS

✩✩✩✩✩✩✩
2 Апр 2019
6
0
Добрый день! только начал изучать ардуино и ее особенности, прикупил дисплей Nokia 5110 и Arduino Nano V3.0. написал простенькую программу, которая читает вывод COM порта.. Появилась необходимость скроллить текст на дисплее автоматически. Но после танцев с бубнами, так ничего не удалось сделать, ибо с ардуинкой работаю только месяц :(
На форуме амперки нашел тему скролла строки , в попытках переработать код, вываливается в ошибку, да и скролл строки мне не очень интересен.. мне нужно скроллить несколько строк, например есть 20 строк, а дисплей поддерживает только 6. Нужно сделать так, чтобы при достижении порога в 6 строк и более дисплей начинал передвигать изображение вверх, имитируя скролл обычной страницы.. подскажите плиз, куда можно копнуть и что почитать чтобы добиться желаемого результата? даже готов заплатить за работу:D
 

Wan-Derer

★★★★★✩✩
Команда форума
31 Июл 2018
2,132
412
Москва
wan-derer.ru
@IgnatiyOS, Сделать в памяти МК виртуальный экран: массив символов, которые должны отображаться на экране. Программа сначала пишет то что надо отображать в этот массив, а потом запускает процедуру отображения.
Размер массива будет 20 строк, отображение - начиная с N-ной. Если скролл вверх, отображаем с N+1, если вниз - с N-1.

Скролл будет построчный. В этом случае для отображения можно использовать обычную библиотеку вывода символов.

Если нужен попиксельный скролл, .... ну тогда можно сделать то же самое, но не с кодами символов, а с их растровым изображением. Но тогда надо много памяти, Nano точно не хватит. Или мудрить с алгоритмом, растеризуя строки символов налету.
 
  • Лойс +1
Реакции: IgnatiyOS

IgnatiyOS

✩✩✩✩✩✩✩
2 Апр 2019
6
0
библиотека Adafruit не поддерживает scrolling текста.. пришлось делать на LCD5110_Graph
Кому интересно, вот код..

единственное в чем косяк этой библиотеки, так это то что на ней дисплей мерцает и это очень не приятно. может конечно сам дисплей мозги пудрит но это я хз.. если убирать задержку, то более менее терпимо.. подозреваю конечно что мерцание происходит еще частого обновления содержимого на дисплее.. короч я не знаю)

C++:
//      SCK  - Pin 11
//      MOSI - Pin 10
//      DC   - Pin 9
//      RST  - Pin 7
//      CS   - Pin 8
#include <LCD5110_Graph.h>

LCD5110 myGLCD(11,10,9,7,8);

extern uint8_t SmallFont[];

int y;

void setup()
{
  Serial.begin(9600);
  myGLCD.InitLCD();
  myGLCD.setFont(SmallFont);
}

void loop()
{
  myGLCD.update();
  y = (0, 0);
  for (int i=84; i>=-(34*6); i--)
  {
    myGLCD.print("test text scroll", i, y);
    myGLCD.update();
    //delay(10);
  }
}