Cabiar texto en pantalla led

Con este sketch logré enviar una cadena de texto y configurar la pantalla desde un teléfono con bluetooth, hacia una pantalla led de 8x32.
Ahora intento enviar dos textos y que se cambien al finalizar la reproducción del efecto, sin embargo, no entiendo la lógica de los delay (que he alternado en //***) y por más que hago cáculos de timing, los mensajes no se intercambian en una secuencia 1:1… se cambian en secuencas al azar como 1:8, 5:9…
¿Alguna pista sobre esto? me imagino que tiene que ver con los Hz del arduino nano…

// modificación de parola hello wolrd con https://docs.google.com/document/d/1rtW8fwd410V7BRXLe46xTon6wBY1nVkhDOBJ_v1w43I/edit
// del video https://www.youtube.com/watch?v=D3UTljEQeNQ
// solucionado con https://forum.arduino.cc/index.php?topic=469191.0
// introduciendo https://www.prometec.net/android-bt/
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#include<SoftwareSerial.h>
#include <Separador.h>
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4
#define CLK_PIN   13
#define DATA_PIN  11
#define CS_PIN    10

struct sCatalog
{
  textEffect_t  effect;   // text effect to display
  uint16_t      speed;    // speed multiplier of library default
 // uint16_t      pause;    // pause multiplier for library default
};
sCatalog  catalog[] =
{
  { PA_PRINT,1},
  { PA_SCROLL_UP,5},
  { PA_SCROLL_DOWN,5},
  { PA_SCROLL_LEFT,5},
  { PA_SCROLL_RIGHT,5},
#if ENA_SPRITE
  { PA_SPRITE,5},
#endif
#if ENA_MISC
  { PA_SLICE,1},
  { PA_MESH,20},
  { PA_FADE,20},
  { PA_DISSOLVE,7},
  { PA_BLINDS,7},
  { PA_RANDOM,3},
#endif
#if ENA_WIPE
  { PA_WIPE,5},
  { PA_WIPE_CURSOR,4},
#endif
#if ENA_SCAN
  { PA_SCAN_HORIZ,4},
  { PA_SCAN_HORIZX,4},
  { PA_SCAN_VERT,3},
  { PA_SCAN_VERTX,3},
#endif
#if ENA_OPNCLS
  { PA_OPENING,3},
  { PA_OPENING_CURSOR,4},
  { PA_CLOSING,3},//, "CLOSE", 3, 1 },
  { PA_CLOSING_CURSOR,4},
#endif
#if ENA_SCR_DIA
  { PA_SCROLL_UP_LEFT,7},
  { PA_SCROLL_UP_RIGHT,7},
  { PA_SCROLL_DOWN_LEFT,7},
  { PA_SCROLL_DOWN_RIGHT,7},
#endif
#if ENA_GROW
  { PA_GROW_UP,7},//, "GRW_U", 7, 1 },
  { PA_GROW_DOWN,7},//, "GRW_D", 7, 1 },
#endif
};


uint8_t i = 0;
uint8_t k = 0;


SoftwareSerial BT1(2, 3);

int speed1;
int num_efecto=1;
int pausa=10;
uint8_t in;
char dato = 0;
String texto;

String texto_entrada;
String textob;
String textoc;

char charBuf[200];
char charBufb[200];

MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
Separador s;

void setup(void)
{

  for (uint8_t i = 0; i < ARRAY_SIZE(catalog); i++)
  {
 //   catalog[i].speed *= P.getSpeed();
//   catalog[i].pause *= 500;
  }

  BT1.begin(38400);
  P.begin();
  P.setIntensity(15);
  P.displayText("HOLA", PA_CENTER, 50, 1000, PA_FADE, PA_FADE);
  
  speed1 = 20;
  i = 1;
}
void loop()
{
  static textPosition_t just = PA_LEFT;
  static uint8_t i = 0;
  static uint8_t j = 0;

  if (BT1.available())
  {
    delay(100); // Esperar la captura de todos los caracteres
    
    texto_entrada = BT1.readString();
    texto = s.separa(texto_entrada, ',', 0);           // #1 texto Nro.1 para la pantalla
    
    i = s.separa(texto_entrada, ',', 1).toInt()-1;     // #2 número que corresponde con la animación
    k = s.separa(texto_entrada, ',', 2).toInt()-1;
    speed1 = s.separa(texto_entrada, ',', 3).toInt();  // #4 velocidad del texto
    in = s.separa(texto_entrada, ',', 4).toInt();      // #5 intensiadad de brillo del los leds
    pausa = s.separa(texto_entrada, ',', 5).toInt();   // #6
    texto.toCharArray(charBuf, 200) ;                  //   transformar la cadena "texto" a una matriz "charbuf" que maneja la pantalla
    
    textob = s.separa(texto_entrada, ',', 6);          // #7 texto Nro.2 para la pantalla
    textob.toCharArray(charBufb, 200);                //
    
    BT1.flush();
    P.setIntensity(in);
  }


        
          while ( P.displayAnimate())// verdadero si termina de animar... entonces:
          {
           
           if (num_efecto=-1){
              P.displayText(charBuf, PA_LEFT, speed1, pausa, catalog[i].effect, catalog[k].effect);             
           //***
           }
           if (num_efecto=1){
              P.displayText(charBuf, PA_LEFT, speed1, pausa, catalog[i].effect, catalog[k].effect);             
           //***
           }
             
             P.displayReset();
              num_efecto*=-1;
          //***
          }
          
}

Puedes consultarlo aqui.

Ya lo resolví, hice una matriz con los distintos buffers, ahora quiero que cada buffer tenga un efecto distinto. Lo logré pero de una manera poco elegante. Cuando lo haga de forma elegante lo publico acá.

Gracias