Go Down

Topic: help in controlling several servo motors (Read 542 times) previous topic - next topic

goonred

hi guys, we are having a hard time programming several servo motors, can someone help us on how to made servo motors moves simultaneously we madly need help regarding this one

DuaneB

Hi,
   There are lots of people that can help you on these forums, but to get anyones interest you really need to put more detail in the question.

Try editing your question to include the code you are using, a quick description of the circuit and power supply and a description of the problem. Your problem may be something very simple such as insufficient power for the number of servos, but right now we have nothing to go on.

Duane B
Read this
http://rcarduino.blogspot.com/2012/04/servo-problems-with-arduino-part-1.html
then watch this
http://rcarduino.blogspot.com/2012/04/servo-problems-part-2-demonstration.html

Rcarduino.blogspot.com

goonred

here is what we are really trying to do but with the use of Arduino

http://www.youtube.com/watch?v=6tD3dsDzbeg

zoomkat

Test code for two servos.

Code: [Select]

// zoomkat 12-13-11 serial servo (2) test
// for use with serial monitor
// for IDE 1.0
// Powering a servo from the arduino usually DOES NOT WORK.
// two servo setup with two servo commands
// send eight character string like 15001500 or 14501550

#include <Servo.h>
String readString, servo1, servo2;
Servo myservo1;  // create servo object to control a servo
Servo myservo2;

void setup() {
  Serial.begin(9600);
  myservo1.attach(6);  //the pin for the servo control
  myservo2.attach(7);
  Serial.println("two-servo-test-1.0"); // so I can keep track of what is loaded
}

void loop() {

  while (Serial.available()) {
    delay(3);  //delay to allow buffer to fill
    if (Serial.available() >0) {
      char c = Serial.read();  //gets one byte from serial buffer
      readString += c; //makes the string readString
    }
  }

  if (readString.length() >0) {
      Serial.println(readString); //see what was received
     
      // expect a string like 07002100 containing the two servo positions     
      servo1 = readString.substring(0, 4); //get the first four characters
      servo2 = readString.substring(4, 8); //get the next four characters
     
      Serial.println(servo1);  //print to serial monitor to see results
      Serial.println(servo2);

      int n1 = servo1.toInt();
      int n2 = servo2.toInt();
     
      myservo1.writeMicroseconds(n1); //set servo position
      myservo2.writeMicroseconds(n2);
    readString="";
  }
}

Consider the daffodil. And while you're doing that, I'll be over here, looking through your stuff.   8)

jeff08

is that code for simultaneous movement of servo motors??

retrolefty


is that code for simultaneous movement of servo motors??


The rotational speed of R/C servos is so slow compared to arduino program execution speed that yes all servos controlled by the servo library can be 'simultaneously controlled'. A position command sent to the servo library is only one instruction is time span, the servo library continuously keeps sending the last position command on a interrupt basis while the sketch continuous on to other statements in the sketch. How long a servo takes to reach the commanded position is of course determined by it's starting position relative to the new commanded position, and a little dependent on the mechanical load attached to the servo.

If a Arduino can turn on and off 125 leds in my 5x5x5 led cube without me seeing any sign of flicker is it controlling all 125 leds simultaneously? No but in reality it appears to be.

Lefty

goonred

i will try this code thanks for the help!! by the way is a servo controller also a best way of controlling several servo motors?

zoomkat

Quote
by the way is a servo controller also a best way of controlling several servo motors


If you have a lot of servos or the servos have to do things like move slowly, a dedicated servo controller can take the load off of the arduino coding.
Consider the daffodil. And while you're doing that, I'll be over here, looking through your stuff.   8)

retrolefty


i will try this code thanks for the help!! by the way is a servo controller also a best way of controlling several servo motors?


The servo library being interrupt driven and once enabled and attached, places little overhead on a typical sketch. But again that really is dependent on what other things your sketch has to accomplish. Dedicated hardware servo controllers have there place in life. Keep in mind that a Arduino board itself could become a great 'hardware servo' controller, receiving servo commands from another arduino board via serial, I2C, or SPI communication methods. Hardware servo controllers are nothing more then dedicated microcontrollers assigned just one task and communicate with a 'master' controller.

Lefty


Go Up