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