Ошибка выполнения кода(мигание L светодиодом)
- Войдите на сайт для отправки комментариев
Втр, 03/11/2015 - 21:51
Сделал свой код для управления сервой(ибо другие очень уж медленные), но при выполнении происходит какая то ошибка. Что может быть причиной, если компилятор ничего не показал?
Вот код:
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();
}
}
Переменную timer объявите как
unsignedlong, а не как int.