perhaps a little help with servo control??


hello everyone,

here's goal, pretty simple - little prototype larger project....

i need able control 9 servo's 1 board (decimilia) independently.  i'm bit new @ writing code however, approach write separate functions each servo, , call functions in main loop in whatever order necessary achieve desired effect.  

i have code runs of them @ once, (just test see if power supply sufficient) -
how modify or re-write code independent control , choreographed sequence of actuations?

code: [select]


#define servoa 13
#define servob 12
#define servoc 11
#define servod 10
#define servoe 9
#define servof 8
#define servog 7
#define servoh 6
#define servoi 5


#define min_pulse 600
#define max_pulse 2400
#define delta 1800


int lastpulse = 0;
int refreshtime = 20;

long randnumber;

void setup()
{
 int i;
 pinmode(servoa, output);
 pinmode(servob, output);
 pinmode(servoc, output);
 pinmode(servod, output);
 pinmode(servoe, output);
 pinmode(servof, output);
 pinmode(servog, output);
 pinmode(servoh, output);
 pinmode(servoi, output);
 
 digitalwrite(servoa, low);
 digitalwrite(servob, low);
 digitalwrite(servoc, low);
 digitalwrite(servod, low);
 digitalwrite(servoe, low);
 digitalwrite(servof, low);
 digitalwrite(servog, low);
 digitalwrite(servoh, low);
 digitalwrite(servoi, low);

 
 serial.begin(9600);
 for (i=0; i<10; i++)
 {
   digitalwrite(servoa, high);
   digitalwrite(servob, high);
   digitalwrite(servoc, high);
   digitalwrite(servod, high);
   digitalwrite(servoe, high);
   digitalwrite(servof, high);
   digitalwrite(servog, high);
   digitalwrite(servoh, high);
   digitalwrite(servoi, high);
   
   delaymicroseconds((min_pulse + max_pulse)/2);
   
   digitalwrite(servoa, low);
   digitalwrite(servob, low);
   digitalwrite(servoc, low);
   digitalwrite(servod, low);
   digitalwrite(servoe, low);
   digitalwrite(servof, low);
   digitalwrite(servog, low);
   digitalwrite(servoh, low);
   digitalwrite(servoi, low);
   
   delay(20);
 }
 serial.println("servo should @ center");

 delay(20);
}

void loop()

{
 int i;
 static int pulse_width;
 
 randnumber = random(600, 2400);
 delay(3000);
 
 pulse_width = randnumber;
 serial.println(pulse_width, dec);
 
/*
 if (millis() - lastpulse >= refreshtime) {
   digitalwrite(servoa, high);
   digitalwrite(servob, high);
   digitalwrite(servoc, high);
   digitalwrite(servod, high);
   digitalwrite(servoe, high);
   digitalwrite(servof, high);
   digitalwrite(servog, high);
   digitalwrite(servoh, high);
   digitalwrite(servoi, high);
   
   delaymicroseconds(pulse_width);
   
   digitalwrite(servoa, low);
   digitalwrite(servob, low);
   digitalwrite(servoc, low);
   digitalwrite(servod, low);
   digitalwrite(servoe, low);
   digitalwrite(servof, low);
   digitalwrite(servog, low);
   digitalwrite(servoh, low);
   digitalwrite(servoi, low);
   
   delay(20);
   
   lastpulse = millis();
 }
}
*/
 
   for (i=0; i<100; i++)
{
     digitalwrite(servoa, high);
     digitalwrite(servob, high);
     digitalwrite(servoc, high);
     digitalwrite(servod, high);
     digitalwrite(servoe, high);
     digitalwrite(servof, high);
     digitalwrite(servog, high);
       digitalwrite(servoh, high);
       digitalwrite(servoi, high);

     delaymicroseconds(pulse_width);

     digitalwrite(servoa, low);
     digitalwrite(servob, low);
     digitalwrite(servoc, low);
     digitalwrite(servod, low);
     digitalwrite(servoe, low);
     digitalwrite(servof, low);
     digitalwrite(servog, low);
       digitalwrite(servoh, low);
       digitalwrite(servoi, low);

     delay(20);
 }
}




thanks in advance !!

q. supply adequate power 9 servo's ?


Arduino Forum > Forum 2005-2010 (read only) > Software > Syntax & Programs > perhaps a little help with servo control??


arduino

Comments