Помогите, как вывести весь текст

LucasV
Offline
Зарегистрирован: 08.02.2020

Добрый день, дело в том, что я разобрался (насколько смог) в библиотеках adafruit_st7735 и adafruit_gfx, но застрял на том, что не понимаю как сделать прокрутку большого текста, так чтобы верхние строки уходили за верхние границы оставляя место для новых нижних строк. Дисплей tft 1,44x1,44. Спасибо

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

никак. Нужна платформа посильнее обычной Ардуины. :))

LucasV
Offline
Зарегистрирован: 08.02.2020

В принципе, есть еще и NodeMCU там памяти больше, если в этом дело

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

LucasV пишет:

В принципе, есть еще и NodeMCU там памяти больше, если в этом дело

А скорости обновления экрана как у вас. Сколько у вас обновляется картинка целиком. Или вам устроит скоролл методом паралитика.

LucasV
Offline
Зарегистрирован: 08.02.2020

Обновление целиком не быстрое, а скролл, сейчас, меня устроит любой ;) главное чтобы было.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Так в чем дело. Очистил буфер. Напечатал новую запись со сдвигом на шаг текста и вывел на экран. И  так по кругу пока событие скрол еще работает.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Ну, показывайте, как Вы это делаете и объясняйте в чём затык.

LucasV
Offline
Зарегистрирован: 08.02.2020

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

LucasV
Offline
Зарегистрирован: 08.02.2020

https://m.youtube.com/watch?v=DZTgc73amNU -что-то в этом духе

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Простите, Вы читать умеете?

Я же Вам сказал: "Ну, показывайте, как Вы это делаете и объясняйте в чём затык".

Если 

LucasV пишет:

Есть скетч

покажите его.

И объясните, в чём Ваша проблема. Только объясняйте не хотелку, а именно проблему по скетчу.

LucasV
Offline
Зарегистрирован: 08.02.2020

Немного коряво, с телефона пишу

b707
Offline
Зарегистрирован: 26.05.2017

LucasV пишет:

Немного коряво, с телефона пишу

не надо писать с телефона. Войдите с обычного компа и вставтье код по правилам, иначе с вами никто общаться не будет.

ЗЫ - чтоб два раза не вставать - выкладывайте, пожалуйста, код, где вы пытались сделать скролл. В этом коде никакого скролла нет и значит и обсуждать в нем нечего.

LucasV
Offline
Зарегистрирован: 08.02.2020
#include "ESP8266WiFi.h"
#include <Adafruit_GFX.h>    // Core graphics library
#include <Adafruit_ST7735.h> // Hardware-specific library
#include <SPI.h>
//Экран:VCC-5v, Led-3.3v, GND- земля
#define TFT_CS     5 // CS
#define TFT_RST    4 // Reset                  
#define TFT_DC     2 // A0
#define TFT_SCLK 11 // SCK
#define TFT_MOSI 13 // SDA
Adafruit_ST7735 tft = Adafruit_ST7735(TFT_CS,  TFT_DC, TFT_RST);
#define BLACK 0x0000 
#define RED 0xF800 
#define GREEN 0x07E0
#define WHITE 0xFFFF
#define BLUE 0x001F
#define CYAN 0x07FF
#define YELLOW 0xFFE0
#define MAGENTA 0xF81F
void setup() {
  Serial.begin(115200);
tft.initR(INITR_144GREENTAB); // Инициализация экрана

tft.fillScreen(ST7735_BLACK); //очистка и заливка экрана
   WiFi.mode(WIFI_STA);
  WiFi.disconnect();
  delay(100);
 tft.setRotation(3); 
  tft.fillScreen(ST7735_BLACK);
}

void loop() {

  tft.setCursor(0, 10); 
  tft.setTextSize(1);
  tft.println("Scan...."));
  delay(100);
  tft.setCursor(0, 20);
  int n = WiFi.scanNetworks();
  tft.print(utf8rus("Ok"));
  delay(200);
   tft.fillScreen(ST7735_BLACK);
   tft.setTextSize(1);
   tft.setCursor(0, 10);
   tft.setTextColor(GREEN);
  if (n == 0) {
    tft.println(utf8rus("No net"));
  } else {
    tft.print(n);
    tft.println(utf8rus(" net"));
    tft.println("_________________");
    delay(100);
    for (int i = 0; i < n; ++i) {
    tft.setTextColor(WHITE);
     // tft.print(i + 1);
     // tft.print(": ");
      tft.println(WiFi.SSID(i));
      tft.setTextColor(RED);
      tft.print("-----(");
      tft.print(WiFi.RSSI(i));
      tft.print(")");
      tft.println((WiFi.encryptionType(i) == ENC_TYPE_NONE) ? "" : "");
      delay(100);
    }
  }
  Serial.println("");

  // Wait a bit before scanning again
  delay(60000);
}

 

LucasV
Offline
Зарегистрирован: 08.02.2020

Я не знаю как сделать скролл, поэтому его нет. Не знаю с чего начать

nik182
Offline
Зарегистрирован: 04.05.2015

В строке 53 выводить только столько строк, сколько выводится на дисплей, а строки 53 - 64 окружить ещё одним for который будет перебирать номера строки с которой будет начинаться отображение. Ну правильно суммировать переменные двух for ,что бы на экран выводилось то что надо. Получится эмуляция скрола.  

b707
Offline
Зарегистрирован: 26.05.2017

LucasV пишет:

Я не знаю как сделать скролл, поэтому его нет. Не знаю с чего начать

так вам выше уже сказали - скролл в целом делается несложно. В первый раз вы выводите свой текст в первой строки, как в вашем скетче. Через некоторое время - выводите тот же текст, но начиная со второй строки (второй строки текста, а не экрана). потом с третьей и тд... Таким образом у вас текст постепенно "уезжает" вверх за границу экрана

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

1 Создать String начать печатать туда. 

2 А потом печатать от туда на экран, предварительно очистив экран.

LucasV
Offline
Зарегистрирован: 08.02.2020

Ок, Спасибо большое!

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015