as stated above what are multi-dimensioned arrays and could i apply it to a servo motor in programming. Been trying to give the servos different angle position and is it possible to give it different function within the array at different speed control? Heres my script.
#include <Servo.h>
//Define the 10 servo motors
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
Servo servo5;
Servo servo6;
Servo servo7;
Servo servo8;
Servo servo9;
Servo servo10;
unsigned long startTime1 = millis();
unsigned long startTime2 = millis();
unsigned long startTime3 = millis();
unsigned long startTime4 = millis();
unsigned long startTime5 = millis();
unsigned long startTime6 = millis();
unsigned long startTime7 = millis();
unsigned long startTime8 = millis();
unsigned long startTime9 = millis();
unsigned long startTime10 = millis();
unsigned long MOVING_TIME1 = 42100;
unsigned long MOVING_TIME2 = 42200;
unsigned long MOVING_TIME3 = 42300; //moving time is (x) seconds
unsigned long MOVING_TIME4 = 42400;
unsigned long MOVING_TIME5 = 42500;
unsigned long MOVING_TIME6 = 42600;
unsigned long MOVING_TIME7 = 42700;
unsigned long MOVING_TIME8 = 42800; //moving time is (x) seconds
unsigned long MOVING_TIME9 = 42900;
unsigned long MOVING_TIME10 = 42000;
// Lists of positions for each servo to cycle through
byte servo1positions[] = {180,90,90,90,90,90,90,90,90,90,90};
byte servo2positions[] = {0,0,90,90,90,90,90,90,90,90,90};
byte servo3positions[] = {0,0,0,90,90,90,90,90,90,90,90};
byte servo4positions[] = {0,0,0,0,90,90,90,90,90,90,90};
byte servo5positions[] = {0,0,0,0,0,90,90,90,90,90,90};
byte servo6positions[] = {180,180,180,180,180,180,90,90,90,90,90};
byte servo7positions[] = {180,180,180,180,180,180,180,90,90,90,90};
byte servo8positions[] = {180,180,180,180,180,180,180,180,90,90,90};
byte servo9positions[] = {180,180,180,180,180,180,180,180,180,90,90};
byte servo10positions[] = {0,0,0,0,0,0,0,0,0,0,90};
// Current index into the list of position
byte servo1index = 0;
byte servo2index = 0;
byte servo3index = 0;
byte servo4index = 0;
byte servo5index = 0;
byte servo6index = 0;
byte servo7index = 0;
byte servo8index = 0;
byte servo9index = 0;
byte servo10index = 0;
unsigned long moveStartTime;
int startPos1 = 0;
int startPos2 = 45;
int startPos3 = 90;
int startPos4 = 135;
int startPos5 = 180;
int stopPos1 = 0;
int stopPos2 = 45;
int stopPos3 = 90;
int stopPos4 = 135;
int stopPos5 = 180;
int startAngle1 = 0;
int startAngle2 = 30;
int startAngle3 = 60;
int startAngle4 = 90;
int startAngle5 = 120;
int startAngle6 = 150;
int startAngle7 = 180;
int stopAngle1 = 0;
int stopAngle2 = 30;
int stopAngle3 = 60;
int stopAngle4 = 90;
int stopAngle5 = 120;
int stopAngle6 = 150;
int stopAngle7 = 180;
void setup()
{
// define the servo signal pins
servo1.attach(2);
servo2.attach(3);
servo3.attach(4);
servo4.attach(5);
servo5.attach(6);
servo6.attach(8);
servo7.attach(9);
servo8.attach(10);
servo9.attach(11);
servo10.attach(12);
moveStartTime = millis(); // start moving
}
void loop() {
unsigned long progress = millis() - moveStartTime;
unsigned long currentTime = millis();
if (progress <= MOVING_TIME1) {
long angle = map(progress, 0, MOVING_TIME1, startAngle1, stopAngle7);
servo1.write(angle);
}
if (progress <= MOVING_TIME2) {
long angle = map(progress, 0, MOVING_TIME2, startAngle7, stopAngle1);
servo2.write(angle);
}
if (progress <= MOVING_TIME3) {
long angle = map(progress, 0, MOVING_TIME3, startAngle7, stopAngle1);
servo3.write(angle);
}
if (progress <= MOVING_TIME4) {
long angle = map(progress, 0, MOVING_TIME4, startAngle7, stopAngle1);
servo4.write(angle);
}
if (progress <= MOVING_TIME5) {
long angle = map(progress, 0, MOVING_TIME5, startAngle7, stopAngle1);
servo5.write(angle);
}
if (progress <= MOVING_TIME6) {
long angle = map(progress, 0, MOVING_TIME6, startAngle7, stopAngle1);
servo6.write(angle);
}
if (progress <= MOVING_TIME7) {
long angle = map(progress, 0, MOVING_TIME7, startAngle1, stopAngle7);
servo7.write(angle);
}
if (progress <= MOVING_TIME8) {
long angle = map(progress, 0, MOVING_TIME8, startAngle1, stopAngle7);
servo8.write(angle);
}
if (progress <= MOVING_TIME9) {
long angle = map(progress, 0, MOVING_TIME9, startAngle1, stopAngle7);
servo9.write(angle);
}
if (progress <= MOVING_TIME10) {
long angle = map(progress, 0, MOVING_TIME10, startAngle1, stopAngle7);
servo10.write(angle);
}
if (currentTime - startTime1 >= 1000)
{
startTime1 = currentTime;
servo1index = (servo1index + 1) % sizeof servo1positions;
servo1.write(servo1positions[servo1index]);
}
if (currentTime - startTime2 >= 2000)
{
startTime2 = currentTime;
servo2index = (servo2index + 1) % sizeof servo2positions;
servo2.write(servo2positions[servo2index]);
}
if (currentTime - startTime3 >= 3000)
{
startTime3 = currentTime;
servo3index = (servo3index + 1) % sizeof servo3positions;
servo3.write(servo3positions[servo3index]);
}
if (currentTime - startTime4 >= 4000)
{
startTime4 = currentTime;
servo4index = (servo4index + 1) % sizeof servo4positions;
servo4.write(servo4positions[servo4index]);
}
if (currentTime - startTime5 >= 5000)
{
startTime5 = currentTime;
servo5index = (servo5index + 1) % sizeof servo5positions;
servo5.write(servo5positions[servo5index]);
}
if (currentTime - startTime6 >= 6000)
{
startTime6 = currentTime;
servo6index = (servo6index + 1) % sizeof servo6positions;
servo6.write(servo6positions[servo6index]);
}
if (currentTime - startTime7 >= 7000)
{
startTime7 = currentTime;
servo7index = (servo7index + 1) % sizeof servo7positions;
servo7.write(servo7positions[servo7index]);
}
if (currentTime - startTime8 >= 8000)
{
startTime8 = currentTime;
servo8index = (servo8index + 1) % sizeof servo8positions;
servo8.write(servo8positions[servo8index]);
}
if (currentTime - startTime9 >= 9000)
{
startTime9 = currentTime;
servo9index = (servo9index + 1) % sizeof servo9positions;
servo9.write(servo9positions[servo9index]);
}
if (currentTime - startTime10 >= 10000)
{
startTime10 = currentTime;
servo10index = (servo10index + 1) % sizeof servo10positions;
servo10.write(servo10positions[servo10index]);
}
}