Проблема с массивами.
- Войдите на сайт для отправки комментариев
Пт, 18/07/2014 - 17:35
Работаю с большим количеством сервоприводов и для контроля нужны такие же большие объемы данных, то есть массивы. Проблема в том, что программа в самом контроллере перестает выполняться после того, как количество элементов в массиве, или же, что особенно странно, суммарное количество элементов в нескольких массивах превышает значение приблизительно в 3990 элементов. Компилятор на такое превышение ожидаемо не ругается, но в контроллере программа просто не запускается иными словами, лампочка горит, но скетч не идет.
Програмный код:
#include <Servo.h>
Servo Leftlung, Rightlung, Leftknee, Rightknee, Leftfoot, Rightfoot, Backknee, Backfoot, Backbody, Gun;
byte LeftlungAngle, RightlungAngle, LeftkneeAngle, RightkneeAngle, LeftfootAngle, RightfootAngle, BackkneeAngle, BackbodyAngle, BackfootAngle, GunAngle;
int countup,
Leftlungarray,
Rightlungarray,
Backbodyarray,
Leftkneearray,
Rightkneearray,
Backkneearray,
Leftfootarray,
Rightfootarray,
Backfootarray,
Gunarray,
awake[4000] = {
дофига элементов
};
void setup()
{
Leftlung.attach(45);
Rightlung.attach(30);
Backbody.attach(44);
Leftknee.attach(41);
Rightknee.attach(34);
Backknee.attach(31);
Leftfoot.attach(42);
Rightfoot.attach(33);
Backfoot.attach(43);
Gun.attach(32);
Leftlungarray = 0;
Rightlungarray = 1;
Backbodyarray = 2;
Leftkneearray = 3;
Rightkneearray = 4;
Backkneearray = 5;
Leftfootarray = 6;
Rightfootarray = 7;
Backfootarray = 8;
Gunarray =9;
countup = 0;
}
void loop()
{
LeftlungAngle = awake[Leftlungarray] ;
RightlungAngle = awake[Rightlungarray];
BackbodyAngle = awake[Backbodyarray];
LeftkneeAngle = awake[Leftkneearray];
RightkneeAngle = awake[Rightkneearray];
BackkneeAngle = awake[Backkneearray];
LeftfootAngle = awake[Leftfootarray];
RightfootAngle = awake[Rightfootarray];
BackfootAngle = awake[Backfootarray];
GunAngle = awake[Gunarray];
Leftlungarray = (Leftlungarray + 10);
Rightlungarray = (Rightlungarray + 10);
Backbodyarray = (Backbodyarray + 10);
Leftkneearray = (Leftkneearray + 10);
Rightkneearray = (Rightkneearray + 10);
Backkneearray = (Backkneearray + 10);
Leftfootarray = (Leftfootarray+ 10);
Rightfootarray = (Rightfootarray + 10);
Backfootarray = (Backfootarray + 10);
Gunarray = (Gunarray + 10);
Leftlung.write(LeftlungAngle);
Rightlung.write(RightlungAngle);
Backbody.write(BackbodyAngle);
Leftknee.write(LeftkneeAngle);
Rightknee.write(RightkneeAngle);
Backknee.write(BackkneeAngle);
Leftfoot.write(LeftfootAngle);
Rightfoot.write(RightfootAngle);
Backfoot.write(BackfootAngle);
Gun.write(GunAngle);
countup = (countup + 1);
delay(10);
}
дык понятное дело. а озу сколько?
>> Servo Gun;
оптимистично.
IMHO либо ставить внешнюю память, либо переходить на другой контроллер, либо, если эти массивы readonly искать закономерности, заниматься апроксимацией и заменять функциями-формулами.