I don’t expect to get much help, but i’ll post this up and see what happens
I’m trying to control 12 servos for my Lynxmotion Scout, it’s really just some code to test maximum and minimum joint angles
My problem is that the code worked fine on my Arduino Mega 2560 ADK with just six servos, but after modding the code to run 12
not even a single servo will run. I soldered up a basic… servo… holder thing, that routes pins to the correct spots on the board, and I’ve checked the hardware countless
times. Can someone give a read through to my code and give me some help.
Also… source code for a full Lynxmotion scout controlled via serial cable? I’ve looked everywhere, but yet to stumble upon anything.
Pins 2-13 are used for PWM
/** Adjust these values for your servo and setup, if necessary **/
int servo1 = 2; // control pin for servo motor
int servo2 = 3;
int minPulse = 900; // minimum servo position
int maxPulse = 2100; // maximum servo position
int minPulse2 = 900; // minimum servo position
int maxPulse2 = 2100; // maximum servo position
int turnRate = 100; // servo turn rate increment (larger value, faster rate)
int turnRate2 = 100;
int refreshTime = 20; // time (ms) between pulses (50Hz)
int refreshTime2 = 20; // time (ms) between pulses (50Hz
int servo3 = 4; // control pin for servo motor
int servo4 = 5;
int minPulse3 = 900; // minimum servo position
int maxPulse3 = 2100; // maximum servo position
int minPulse4 = 900; // minimum servo position
int maxPulse4 = 2100; // maximum servo position
int turnRate3 = 100; // servo turn rate increment (larger value, faster rate)
int turnRate4 = 100;
int refreshTime3 = 20; // time (ms) between pulses (50Hz)
int refreshTime4 = 20; // time (ms) between pulses (50Hz)
int servo5 = 6; // control pin for servo motor
int servo6 = 7;
int minPulse5 = 900; // minimum servo position
int maxPulse5 = 2100; // maximum servo position
int minPulse6 = 900; // minimum servo position
int maxPulse6 = 2100; // maximum servo position
int turnRate5 = 100; // servo turn rate increment (larger value, faster rate)
int turnRate6 = 100;
int refreshTime5 = 20; // time (ms) between pulses (50Hz)
int refreshTime6 = 20; // time (ms) between pulses (50Hz)
int servo7 = 8; // control pin for servo motor
int servo8 = 9;
int minPulse7 = 900; // minimum servo position
int maxPulse7 = 2100; // maximum servo position
int minPulse8 = 900; // minimum servo position
int maxPulse8 = 2100; // maximum servo position
int turnRate7 = 100; // servo turn rate increment (larger value, faster rate)
int turnRate8 = 100;
int refreshTime7 = 20; // time (ms) between pulses (50Hz)
int refreshTime8 = 20; // time (ms) between pulses (50Hz
int servo9 = 10; // control pin for servo motor
int servo10 = 11;
int minPulse9 = 900; // minimum servo position
int maxPulse9 = 2100; // maximum servo position
int minPulse10 = 900; // minimum servo position
int maxPulse10 = 2100; // maximum servo position
int turnRate9 = 100; // servo turn rate increment (larger value, faster rate)
int turnRate10 = 100;
int refreshTime9 = 20; // time (ms) between pulses (50Hz)
int refreshTime10 = 20; // time (ms) between pulses (50Hz)
int servo11 = 12; // control pin for servo motor
int servo12 = 13;
int minPulse11 = 900; // minimum servo position
int maxPulse11 = 2100; // maximum servo position
int minPulse12 = 900; // minimum servo position
int maxPulse12 = 2100; // maximum servo position
int turnRate11 = 100; // servo turn rate increment (larger value, faster rate)
int turnRate12 = 100;
int refreshTime11 = 20; // time (ms) between pulses (50Hz)
int refreshTime12 = 20; // time (ms) between pulses (50Hz)
// The Arduino will calculate these values for you -------------------------------------------------------------------------------------------------------------------------------------------------------------
int centerServo; // center servo position
int centerServo2; // center servo position
int pulseWidth; // servo pulse width
int pulseWidth2;
int moveServo; // raw user input
int moveServo2;
long lastPulse = 0; // recorded time (ms) of the last pulse
long lastPulse2 = 0; // recorded time (ms) of the last pulse
int centerServo3; // center servo position
int centerServo4; // center servo position
int pulseWidth3; // servo pulse width
int pulseWidth4;
int moveServo3; // raw user input
int moveServo4;
long lastPulse3 = 0; // recorded time (ms) of the last pulse
long lastPulse4 = 0; // recorded time (ms) of the last pulse
int centerServo5; // center servo position
int centerServo6; // center servo position
int pulseWidth5; // servo pulse width
int pulseWidth6;
int moveServo5; // raw user input
int moveServo6;
long lastPulse5 = 0; // recorded time (ms) of the last pulse
long lastPulse6 = 0; // recorded time (ms) of the last pulse
int centerServo7; // center servo position
int centerServo8; // center servo position
int pulseWidth7; // servo pulse width
int pulseWidth8;
int moveServo7; // raw user input
int moveServo8;
long lastPulse7 = 0; // recorded time (ms) of the last pulse
long lastPulse8 = 0; // recorded time (ms) of the last pulse
int centerServo9; // center servo position
int centerServo10; // center servo position
int pulseWidth9; // servo pulse width
int pulseWidth10;
int moveServo9; // raw user input
int moveServo10;
long lastPulse9 = 0; // recorded time (ms) of the last pulse
long lastPulse10 = 0; // recorded time (ms) of the last pulse
int centerServo11; // center servo position
int centerServo12; // center servo position
int pulseWidth11; // servo pulse width
int pulseWidth12;
int moveServo11; // raw user input
int moveServo12;
long lastPulse11 = 0; // recorded time (ms) of the last pulse
long lastPulse12 = 0; // recorded time (ms) of the last pulse
void setup() {
pinMode(servo1, OUTPUT); // Set servo pin as an output pin
pinMode(servo2, OUTPUT); // Set servo pin as an output pin
pinMode(servo3, OUTPUT); // Set servo pin as an output pin
pinMode(servo4, OUTPUT); // Set servo pin as an output pin
pinMode(servo5, OUTPUT); // Set servo pin as an output pin
pinMode(servo6, OUTPUT); // Set servo pin as an output pin
pinMode(servo7, OUTPUT); // Set servo pin as an output pin
pinMode(servo8, OUTPUT); // Set servo pin as an output pin
pinMode(servo9, OUTPUT); // Set servo pin as an output pin
pinMode(servo10, OUTPUT); // Set servo pin as an output pin
pinMode(servo11, OUTPUT); // Set servo pin as an output pin
pinMode(servo12, OUTPUT); // Set servo pin as an output pin
centerServo = maxPulse - ((maxPulse - minPulse)/2);
centerServo2 = maxPulse2 - ((maxPulse2 - minPulse2)/2);
pulseWidth = centerServo; // Give the servo a starting point (or it floats)
pulseWidth2 = centerServo2; // Give the servo a starting point (or it floats)
centerServo3 = maxPulse3 - ((maxPulse3 - minPulse3)/2);
centerServo4 = maxPulse4 - ((maxPulse4 - minPulse4)/2);
pulseWidth3 = centerServo3; // Give the servo a starting point (or it floats)
pulseWidth4 = centerServo4; // Give the servo a starting point (or it floats)
centerServo5 = maxPulse5 - ((maxPulse5 - minPulse5)/2);
centerServo6 = maxPulse6 - ((maxPulse6 - minPulse6)/2);
pulseWidth5 = centerServo5; // Give the servo a starting point (or it floats)
pulseWidth6 = centerServo6; // Give the servo a starting point (or it floats)
centerServo7 = maxPulse7 - ((maxPulse7 - minPulse7)/2);
centerServo8 = maxPulse8 - ((maxPulse8 - minPulse8)/2);
pulseWidth7 = centerServo7; // Give the servo a starting point (or it floats)
pulseWidth8 = centerServo8; // Give the servo a starting point (or it floats)
centerServo9 = maxPulse9 - ((maxPulse9 - minPulse9)/2);
centerServo10 = maxPulse10 - ((maxPulse10 - minPulse10)/2);
pulseWidth9 = centerServo9; // Give the servo a starting point (or it floats)
pulseWidth10 = centerServo10; // Give the servo a starting point (or it floats)
centerServo11 = maxPulse11 - ((maxPulse11 - minPulse11)/2);
centerServo12 = maxPulse12 - ((maxPulse12 - minPulse12)/2);
pulseWidth11 = centerServo11; // Give the servo a starting point (or it floats)
pulseWidth12 = centerServo12; // Give the servo a starting point (or it floats)
Theres More…