Помощь в исправлении

Итак, всем привет. Накалякал я тут скетч для манипулятора, способного запоминать и воспроизводить записанные действия. Сервы управляются четырьмя потенциометрами, есть кнопка записи и кнопка воспроизведения. В чем суть моей проблемы - задержка при записи “пустых” шагов сервы, то есть при которых серва не двигается при воспроизведении, но задержка есть, и приходится ждать н-ное количество секунд, прежде чем начнется воспроизводиться не “пустая” ячейка. Нужно как то от этого избавится, всякое пробовал делать, ниче не робит, чат GPT тоже не понимает , что я от него хочу, а если понимает, то делает какую то нерабочую срань. А может просто я пенек.

#include <Servo.h>

Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;

int VegaPin1 = A0;
int VegaPin2 = A1;
int VegaPin3 = A2;
int VegaPin4 = A3;

int buttonPin1 = 6;
int buttonPin2 = 7;
int clearBut = 5;


int buttonState1 = 0;
int buttonState2 = 0;
int clearButState = 0;


int record[10][4];
int step = 0;

int currentPos[4] = {0, 0, 0, 0};

void setup() {
  servo1.attach(9);
  servo2.attach(10);
  servo3.attach(11);
  servo4.attach(12);
  //отправляем крутилки на сервы

  pinMode(buttonPin1, INPUT);
  pinMode(buttonPin2, INPUT);
  
  
  pinMode(4, OUTPUT);
  pinMode(3, OUTPUT);
}

void loop() {
  // Запись 
  buttonState1 = digitalRead(buttonPin1);
  if (buttonState1 == HIGH && step < 10) {
    recordActions();
  }

  // Воспроизведение 
  buttonState2 = digitalRead(buttonPin2);
  if (buttonState2 == HIGH) {
    digitalWrite(3, HIGH);
    playbackActions();
    digitalWrite(3, LOW);
  }
  
  clearButState = digitalRead(clearBut);
  if (clearButState == HIGH)
  {
    clear();
  }
    
  

  // Считываем
  // Управляем
  int value1 = map(analogRead(VegaPin1), 0, 1024, 0, 180);
  int value2 = map(analogRead(VegaPin2), 0, 1024, 0, 180);
  int value3 = map(analogRead(VegaPin3), 0, 1024, 0, 180);
  int value4 = map(analogRead(VegaPin4), 0, 1024, 0, 180);

  servo1.write(value1);
  servo2.write(value2);
  servo3.write(value3);
  servo4.write(value4);
}

void recordActions() {
  record[step][0] = map(analogRead(VegaPin1), 0, 1024, 10, 180);
  record[step][1] = map(analogRead(VegaPin2), 0, 1024, 10, 180);
  record[step][2] = map(analogRead(VegaPin3), 0, 1024, 10, 180);
  record[step][3] = map(analogRead(VegaPin4), 0, 1024, 10, 180);
  
  currentPos[0] = record[step][0];
  currentPos[1] = record[step][1];
  currentPos[2] = record[step][2];
  currentPos[3] = record[step][3];
  
   if (step == 9) {
     Serial.println("максимум шагов");
    digitalWrite(4, HIGH);
     
  }

  step++;
  delay(1000);  // Задержка что бы не бахнуло
}


void playbackActions() {
  for (int i = 0; i < step; i++)  {
    if (record[i][0] != 0 || record[i][1] != 0 || record[i][2] != 0 || record[i][3] != 0) {
      servo1.write(record[i][0]);
      servo2.write(record[i][1]);
      servo3.write(record[i][2]);
      servo4.write(record[i][3]);
      delay(1000);  // Задержка что бы не бахнуло                                     
    }
  }
}
void clear(){
  step = 0;
    digitalWrite(4, LOW);
}

if (record!=0))servoY.write(record);

я тоже так думал…

не помогло??

та если честно вообще не понял, что там прописано, если не в тягость, вставьте код по правилам

писать по человечески не могу, поэтому на словах: каждый раз перед исполнением записанной команды проверяем ее равенство нулю стр.104-107 стр.103 комментируем

такое пробовал, не получилось