Manejo de Arrays con Potenciometros para Robot ARM

Buenas Noches a todos,

soy nuevo por el foro y este es mi primer post.

he armado un circuito que controla un robot del tipo paletizador con cuatro grados de libertad, estoy intentando realizar varios modos de programar sus movimientos, una de ellas es con un joystick.

he buscado por internet como menciona en el foro pero en la mayoria solo salen ejemplos sencillos como 1+1 = 2.

quisiera poder culminar parte del programa que haga lo siguiente:

1.- en estado de stanby, los movimientos del robot pueden realizarse con el joystick, hasta alli todo bien, los datos de los potenciometros se muestras en el monitor serial. (LISTO)

2.- al presionar el boton de grabar, el programa lo detecta y empieza a grabar sus posiciones en forma de arreglos, los valores se muestran en el monitor serial BIEN...

3 al presionar nuevamente el boton, dicho arreglo no se muestra en el monitor serial, he intentado con for pero no se donde esta el problema

estoy usando un arduino UNO.

puede ser algo sencillo para ustedes pero para mi me resolveria la vida y terminar el proyecto.

gracias por la ayuda que pudieran ofrecerme, cualquier duda que tengan, estare al pendiente....

int DatosPot[2] = {0,0};
int NewDatos[2] = {0,0};
int pin_Boton = 8; // pin 8 en proteus
int estado_Boton = 0;
int ultimo_Estado_Boton = 0;
int memoria[250];
int direccion_memoria = 0;
int grabar = 0;
unsigned long tiempoPrevio = 0;
unsigned long tiempoActual;
int intervalo;
int memoriaTiempo[250];  

void setup() {
  Serial.begin(9600);
  
  pinMode(pin_Boton, INPUT);
}

void loop() {
  
 long sensorValues[2];
 
  if (grabar == 0) {
     sensorValues[0] = analogRead(A0)/4;
     sensorValues[1] = analogRead(A1)/4;
  NewDatos[0] = map(sensorValues[0], 0, 255, 0, 180);
  NewDatos[1] = map(sensorValues[1], 0, 255, 0, 180);
  if ((abs(NewDatos[0] - DatosPot[0]) > 2) || (abs(NewDatos[1] - DatosPot[1]) > 2)){
    
    DatosPot[0] = NewDatos[0];
    DatosPot[1] = NewDatos[1];
      Serial.print("Valores : ");
      Serial.print(DatosPot[0]);
      Serial.print("  ");
      Serial.println(DatosPot[1]);
  }
  }
  delay(10);
  
  if ( grabar == 1) {
    if (direccion_memoria < 250) {
      
      sensorValues[0] = analogRead(A0)/4;
     sensorValues[1] = analogRead(A1)/4;
  NewDatos[0] = map(sensorValues[0], 0, 255, 0, 180);
  NewDatos[1] = map(sensorValues[1], 0, 255, 0, 180);
  if ((abs(NewDatos[0] - DatosPot[0]) > 2) || (abs(NewDatos[1] - DatosPot[1]) > 2)){
          
         tiempoActual = millis();
         intervalo = tiempoActual - tiempoPrevio;
         tiempoPrevio = tiempoActual;
         
         
         DatosPot[0] = NewDatos[0];
         DatosPot[1] = NewDatos[1];

         
      for(int e = 0; e < 250; e = e + 1) {
         for (int i =0; i < 2; i = i + 1) {
          memoria[e] = NewDatos[i];
          }
         memoriaTiempo[direccion_memoria] = intervalo;
      }
  
        Serial.print("posicion en memoria: ");
        Serial.print(direccion_memoria);
        Serial.print("  -->  valor: ");
        Serial.print(NewDatos[0]);
        Serial.print("  ");
        Serial.print(NewDatos[1]);
        Serial.print("  -->  intervalo: ");
        Serial.println(intervalo);
        direccion_memoria++;
        
        }
    }
    delay(100);
        
//a partir de aqui es que no consigo que el array se muestre en el puerto serial
  
  } else if (grabar > 1) {
    memoriaTiempo[0] = 100;   
    memoria[direccion_memoria] = 350; 
    direccion_memoria = 0;
    delay(50); 
    while(true) {

     if ((direccion_memoria < 250) && (memoria[direccion_memoria] != 350)) {

        Serial.print("memoria-direccion : ");
        Serial.print(direccion_memoria);
        Serial.print("  -->  Valores: ");
        Serial.print(memoria[direccion_memoria]);  //aca deberia aparecer el valor del arreglo en memoria posicion 0
        Serial.print("  ");
        //Serial.print(NewDatos[1]); // aca el segundo valor que por alguna razon solo me muestra el ultimo numero guardado en todos los intervalos del ciclo 
        Serial.print("  -->  intervalo: ");
        Serial.println(memoriaTiempo[direccion_memoria]);
        
      delay(memoriaTiempo[direccion_memoria]);
      direccion_memoria++;   
           
       }
      else {
        direccion_memoria = 0;
        Serial.println("  --- Repetir---  ");
        delay(200);
        
      }
    }
    
  }

    estado_Boton = digitalRead(pin_Boton);
  if (estado_Boton != ultimo_Estado_Boton) {
    if (estado_Boton == HIGH) {
      grabar++;
      Serial.println();
      Serial.print("   Boton presionado: ");
      Serial.println(grabar);
    } 
    else {
    }
    delay(50);
  }
  ultimo_Estado_Boton = estado_Boton;
  
}

Mira el privado y edita el post.
Ademas el programa esta incompleto, falta el setup y las definiciones globales y librerías si las hubiera.

Buenas Nuevamente... ya resolvi el problema....

saludos.... y gracias por la ayuda