writeMicroseconds (); Servo programming issue HELP

I am new to programming with the Arduino. Basically I bought a cheap robot arm off ebay and started programming it a few weeks ago. I have a DC adapter hooked up/powering the arduino with 7.5V through the DC jack. I have the Servo which I believe was registered for 4.8-6.6V and i am powering them off 6V of power from a separate 4AA Battery holder. I’ve read that powering bigger motors and stuff with the 5V from the Arduino isn’t enough power for the motors, and usually gives people a lot of trouble, and it did for me. So I went to Radio Shack and bought some items.

I’ve attached a video of my problem, which is only with 1 specific motor on the arm. The others seem to work great/good enough for me with the code I am going to post at the end of this. Basically I am writing a very simple code and moving the motors with .writeMicroseconds(); and just so you people are aware, I wrote the code for 2 motors as of now, but I am only using the 1st one SeansServo1.

Anyway, the gripper, base, and some other motors have been tested using the code and it does what i am telling it to do. But when I change the values of .writeMicroseconds(1500); to lets say writeMicroseconds(600); the servos don’t move. But it doesn’t seem to mind inserting values 1000,1500, or 3000. Any other numbers and I get some strange effects. But even choosing .writeMicroseconds(1000) which does work is too much movement, and inserting a lesser value the motors won’t move?

The motor that is giving me an issue is actually a pair that seem to do almost the same thing (lift the arm up) but when it reads my code it jumps way forward and then makes small movements, hitting its head on the ground as seen in the video. Whenever I change the writeMicroseconds to a smaller amount to stop this from happening the motors either click and dont move, or jitter and react strangely.

Was curious if there was a way to have it move in much smaller movements I guess. Not sure exactly, or maybe use a different command to move that one/two particular motors. Anyone have any advice for me or can post an example code would be very appreciated.

Please take a look at my video before giving any advice to understand and visually see what exactly is going on, and like I said the code works properly on all the other motors except for that particular one. Thanks

The picture is wired with the gripper just so you can visually see how I have it wired/configured that motor/gripping device works fine using that code. Only the one in the video is giving the issue.

Video: https://youtu.be/ggnee9j_KuM

#include <Servo.h>

Servo SeansServo1;
Servo SeansServo2;

//Test3

/*October 2nd 2016

  • Testing servos at different times
    */

void setup()
{
SeansServo1.attach (6);
SeansServo2.attach (7);

}
void loop()
{

SeansServo1.writeMicroseconds (3000);
delay(2000);
SeansServo2.writeMicroseconds (1000);
delay(2000);
SeansServo1.writeMicroseconds (1500);
delay(1000);
SeansServo2.writeMicroseconds (1000);
delay(1000);

}

In general a servo operates with a pulse width between 1000 and 2000 µsecs. Those numbers roughly correspond to 0 degrees and 180 degrees.

However each model will be a little different and some experiments are needed to find the precise limits.

You should also be aware that the Servo library imposes limits so that silly numbers don't get through. You probably need to look at the code in the library to see what they are. And, of course, there is nothing to prevent you altering the code in the library if you need to. Just make a back-up copy in case you make a mess.

...R