Help with this code and its algorithm¡¡¡¡¡¡

jremington:
For a beginner, that may take hours or even days of study.

Do not be discouraged, and if you have specific questions about particular lines of code, post them on this forum.

the "void execute automata ()" and in the "void translation matrix ()" I can not understand them completely well but I'll leave them here if I can help

void matriz_de_traslacion()
{
  Serial.print("\n\t\t\t\t\t\t\t\tCALCULO DE MATRIZ");Serial.print(figura);
  //convierte la EEPROM en matriz
  for(EE=0;EE<5;EE++)
  {
    memor[EE]=EEPROM.read(eprom);
    eprom++;
  }
  EE=0;
  //calcular diferencias
  diferencia[0] = abs (registro[0]-memor[0]);
  diferencia[1] = abs (registro[1]-memor[1]);
  diferencia[2] = abs (registro[2]-memor[2]);
  diferencia[3] = abs (registro[3]-memor[3]);
  diferencia[4] = abs (registro[4]-memor[4]);
  // se elimino la sección de filtrado (no hay vibraciones causadas por los potencio metros)
  //calcular limite de secciones (la mayor distancia)
  limite = max(diferencia[0],diferencia[1]);
  limite = max(limite,diferencia[2]);
  limite = max(limite,diferencia[3]);
  limite = max(limite,diferencia[4]);
  Serial.print("\n\t\t\t\t\t\t\t   LIMITE=");Serial.print(limite);
  //calcula dirección e incremento en grados de cada sección
  if(registro[0]>memor[0]) direccion[0]=(0-diferencia[0])/limite; else direccion[0]=diferencia[0]/limite;
  if(registro[1]>memor[1]) direccion[1]=(0-diferencia[1])/limite; else direccion[1]=diferencia[1]/limite;
  if(registro[2]>memor[2]) direccion[2]=(0-diferencia[2])/limite; else direccion[2]=diferencia[2]/limite;
  if(registro[3]>memor[3]) direccion[3]=(0-diferencia[3])/limite; else direccion[3]=diferencia[3]/limite;
  if(registro[4]>memor[4]) direccion[4]=(0-diferencia[4])/limite; else direccion[4]=diferencia[4]/limite;
  Serial.print("\n\t\t\t\t\t\t\t\tEJECUTANDO_MEMORIA ");Serial.print(figura);
  primer_seccion=false;
}

and this


void ejecutar_automata()
{
  if(seccion<=limite)
  {
    Serial.print("\n\t\t\t\t\t\t\t\tSECCION="); Serial.print(seccion);
    seccion++;
    if(seccion == 1)              time = retardo*4;       
    else if(seccion == 10)        time = retardo*3;   
    else if(seccion == 20)        time = retardo*2; 
    else if(seccion == 30)        time = retardo*1;
    if(seccion == limite-40)      time = retardo*2;
    else if(seccion == limite-30) time = retardo*3;
    else if(seccion == limite-20) time = retardo*4;
    else if(seccion == limite-10) time = retardo*5; 
    registro[0]+=direccion[0];
    registro[1]+=direccion[1];
    registro[2]+=direccion[2];
    registro[3]+=direccion[3];
    registro[4]+=direccion[4];
    servo1.write(registro[0]);
    servo2.write(registro[1]);
    servo3.write(registro[2]);
    servo4.write(registro[3]);
    servo5.write(registro[4]);
  }
  else
  {
    limite=0;
    seccion=1;
    figura++;
    primer_seccion=true;
  }

Those two Voids that are inside the program that let them down and see are those who can not understand their algorithm