Ошибка выполнения кода(мигание L светодиодом)

Xytabich
Offline
Зарегистрирован: 04.06.2015

Сделал свой код для управления сервой(ибо другие очень уж медленные), но при выполнении происходит какая то ошибка. Что может быть причиной, если компилятор ничего не показал?

Вот код:

int timer = 0;

int startPin = 2;

int servos[4] = {500,500,500,500};

void setup()
{
  for(int i = 0; i < sizeof(servos); i++) pinMode(i+startPin, OUTPUT);
}

void loop()
{
  if(millis() > timer + 20)
  {
    for(int i = 0; i < sizeof(servos); i++) digitalWrite(i+startPin, HIGH);
    int list[sizeof(servos)];
    for(int i = 0; i < sizeof(list); i++)
    {
      for(int j = 0; j < sizeof(servos); j++)
      {
        if(i==0)
        {
          if(j==0) list[i] = servos[j];
          else if(servos[j] < list[i]) list[i] = servos[j];
        }
        else
        {
          if(j==0) list[i] = servos[j];
          else if(servos[j] < list[i] && servos[j] > list[i-1]) list[i] = servos[j];
        }
      }
    }
    for(int i = 0; i < sizeof(list); i++)
    {
      if(i==0) delayMicroseconds(servos[list[i]]);
      else delayMicroseconds(servos[list[i]] - servos[list[i-1]]);
      digitalWrite(list[i]+startPin, LOW);
    }
    timer = millis();
  }
}

 

Araris
Offline
Зарегистрирован: 09.11.2012

Переменную timer объявите как unsigned long, а не как int.