Hii Sir I wanted to control my servos using pca9685 servo driver & I want exactly same control like using arduino's digital pins but I'm not able to combine this servo driver to fit in my arduino code..
How do I combine them ??
Here's is my normal arduino based code-
#include <VarSpeedServo.h>
//Joystick controlled robot
VarSpeedServo myServo1; // eyeblink right
VarSpeedServo myServo2; // eyeblink left
VarSpeedServo myServo3; // eye look right
VarSpeedServo myServo4; // eye look left
VarSpeedServo myServo5; // eye look up down
int servo1 = 7;
int servo2 = 5;
int servo3 = 6;
int servo4 = 9;
int servo5 = 11;
int joyX = 0;
int joyY = 1;
int button1 = 2;
int press1 = 90;
int JoySlack = 25; // Dead spot size
int center = 519; // Reading when joystick centered
void setup() {
Serial.begin(9600);
myServo1.attach(servo1);
myServo2.attach(servo2);
myServo3.attach(servo3);
myServo4.attach(servo4);
myServo5.attach(servo5);
pinMode(button1, INPUT);
digitalWrite(2, HIGH);
}
void loop() {
Serial.print("X-axis: ");
Serial.print(analogRead(joyX));
Serial.print(" | ");
Serial.print("Y-axis: ");
Serial.print(analogRead(joyY));
Serial.println(" | ");
delay(200);
press1 = digitalRead(button1);
if (press1 == LOW)
{
myServo1.write(0);
myServo2.write(0);
myServo3.write(0);
}
else {
myServo1.write(180);
myServo2.write(180);
myServo3.write(180);
}
int valX = analogRead(joyX);
int valY = analogRead(joyY);
if ((abs(valX - center) > JoySlack) || (abs(valY - center) > JoySlack))
{
valX = map(valX, 50, 1023, 0, 180);
valY = map(valY, 50, 1023, 0, 180);
myServo2.write(valX);
myServo1.write(valX);
myServo3.write(valY);
myServo4.write(valX);
myServo5.write(valY);
}
else
{
myServo2.write(90);
myServo1.write(90);
myServo3.write(90);
myServo4.write(90);
myServo5.write(90);
}
delay(200);
}
And here is I tried for pca9685 multi servo driver but got confused and not able to write to fit in my previous code
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
//Joystick controlled robot
Adafruit_PWMServoDriver myServo1; // eyeblink right
Adafruit_PWMServoDriver myServo2; // eyeblink left
Adafruit_PWMServoDriver myServo3; // eye look right
Adafruit_PWMServoDriver myServo4; // eye look left
Adafruit_PWMServoDriver myServo5; // eye look up down
int servo1 = 7;
int servo2 = 5;
int servo3 = 6;
int servo4 = 9;
int servo5 = 11;
int joyX = 0;
int joyY = 1;
int button1 = 2;
int press1 = 90;
int JoySlack = 25; // Dead spot size
int center = 519; // Reading when joystick centered
void setup() {
Serial.begin(9600);
myServo1.attach(servo1);
myServo2.attach(servo2);
myServo3.attach(servo3);
myServo4.attach(servo4);
myServo5.attach(servo5);
pinMode(button1, INPUT);
digitalWrite(2, HIGH);
}
void loop() {
Serial.print("X-axis: ");
Serial.print(analogRead(joyX));
Serial.print(" | ");
Serial.print("Y-axis: ");
Serial.print(analogRead(joyY));
Serial.println(" | ");
delay(200);
press1 = digitalRead(button1);
if (press1 == LOW)
{
myServo1.write(0);
myServo2.write(0);
myServo3.write(0);
}
else {
myServo1.write(180);
myServo2.write(180);
myServo3.write(180);
}
int valX = analogRead(joyX);
int valY = analogRead(joyY);
if ((abs(valX - center) > JoySlack) || (abs(valY - center) > JoySlack))
{
valX = map(valX, 50, 1023, 0, 180);
valY = map(valY, 50, 1023, 0, 180);
myServo2.write(valX);
myServo1.write(valX);
myServo3.write(valY);
myServo4.write(valX);
myServo5.write(valY);
}
else
{
myServo2.write(90);
myServo1.write(90);
myServo3.write(90);
myServo4.write(90);
myServo5.write(90);
}
delay(200);
}
Could you please help me on this??