#include <Servo.h>
int basePin = 11; /* Base servo */
int shoulderPin = 10; /* Shoulder servo */
int elbowPin = 9; /* Elbow servo */
int gripperPin = 6; /* Gripper servo */
int xdirPin = 0; /* Base - joystick1*/
int ydirPin = 1; /* Shoulder - joystick1 */
int zdirPin = 3; /* Elbow - joystick2 */
int gdirPin = 2; /* Gripper - joystick2 */
int posBase = 90;
int posShoulder = 90;
int posElbow = 90;
int posGripper = 90;
Servo servoBase;
Servo servoShoulder;
Servo servoElbow;
Servo servoGripper;
//------------------------------------------------------------------------
void setup() {
Serial.begin(9600);
pinMode(xdirPin, INPUT);
pinMode(ydirPin, INPUT);
pinMode(zdirPin, INPUT);
pinMode(gdirPin, INPUT);
servoBase.attach(basePin);
servoShoulder.attach(shoulderPin);
servoElbow.attach(elbowPin);
servoGripper.attach(gripperPin);
servoBase.write(posBase);
servoShoulder.write(posShoulder);
servoElbow.write(posElbow);
servoGripper.write(posGripper);
}
//------------------------------------------------------------------------
void loop() {
float dx = map(analogRead(xdirPin), 0, 1023, -5.0, 5.0);
float dy = map(analogRead(ydirPin), 0, 1023, 5.0, -5.0);
float dz = map(analogRead(zdirPin), 0, 1023, 5.0, -5.0);
float dg = map(analogRead(gdirPin), 0, 1023, 5.0, -5.0);
posBase += dx;
posShoulder += dy;
posElbow += dz;
posGripper += dg;
if (posBase < 0 ) posBase = 0 ;
if (posBase > 180 ) posBase = 180;
if (posShoulder < 0 ) posShoulder = 0 ;
if (posShoulder > 180 ) posShoulder = 180;
if (posElbow < 0 ) posElbow = 0 ;
if (posElbow > 180 ) posElbow = 180;
if (posGripper < 0 ) posGripper = 0 ;
if (posGripper > 180 ) posGripper = 180;
servoBase.write(posBase);
servoShoulder.write(posShoulder);
servoElbow.write(posElbow);
servoGripper.write(posGripper);
delay(100); // Adjust to your convenience
}