Двойная задержка выполнения скрипта

Есть такой скрипт, на ардуино (крутит шаговый двигатель). Подскажите как сделать так чтобы этот скрипт выполнялся 10 секунд, потом была задержка на 40 секунд и так циклично?

int in1 = 2;
int in2 = 3;
int in3 = 4;
int in4 = 5;
const int dl = 5;

void setup() {
  pinMode(in1, OUTPUT);
  pinMode(in2, OUTPUT);
  pinMode(in3, OUTPUT);
  pinMode(in4, OUTPUT);
}

void loop() {
  digitalWrite(in1, LOW); //A/
  digitalWrite(in2, LOW); //B/
  digitalWrite(in3, HIGH); //A
  digitalWrite(in4, HIGH); //B
  delay(dl);

  digitalWrite(in1, LOW); //A/
  digitalWrite(in2, LOW); //B/
  digitalWrite(in3, LOW); //A
  digitalWrite(in4, HIGH); //B
  delay(dl);

  digitalWrite(in1, LOW); //A/
  digitalWrite(in2, HIGH); //B/
  digitalWrite(in3, HIGH); //A
  digitalWrite(in4, LOW); //B
  delay(dl);

  digitalWrite(in1, LOW); //A/
  digitalWrite(in2, HIGH); //B/
  digitalWrite(in3, LOW); //A
  digitalWrite(in4, LOW); //B
  delay(dl);

  digitalWrite(in1, LOW); //A/
  digitalWrite(in2, HIGH); //B/
  digitalWrite(in3, LOW); //A
  digitalWrite(in4, LOW); //B
  delay(dl);

  digitalWrite(in1, HIGH); //A/
  digitalWrite(in2, LOW); //B/
  digitalWrite(in3, LOW); //A
  digitalWrite(in4, LOW); //B
  delay(dl);

  digitalWrite(in1, HIGH); //A/
  digitalWrite(in2, LOW); //B/
  digitalWrite(in3, LOW); //A
  digitalWrite(in4, HIGH); //B
  delay(dl); 
  
  digitalWrite(in1, LOW); //A/
  digitalWrite(in2, LOW); //B/
  digitalWrite(in3, LOW); //A
  digitalWrite(in4, HIGH); //B
  delay(dl);

}

Ответы (1 шт):

Автор решения: Sergey

Черновик:

#include <time.h>
#include <unistd.h>

void RunScript() {
{
    time_t t1, t2;

    t1 = time(NULL);
    while (1) {
        loop()
        t2 = time(NULL);
        if (t2-t1 > 10) break;
    }
}
. . .
int main(int argc, char *argv[]) {

   while (1) {
      RunScript()
      sleep(40)
    }
}

Не тестировал, так что - могут быть опечатки. Но, я думаю, идея понятна.

→ Ссылка