#include <Servo.h>
//#include <ESP32_Servo.h> // include servo library
// Define 8 Servos
Servo myServo1; // Front Left Pivot Servo
Servo myServo2; // Front Left Lift Servo
Servo myServo3; // Back Left Pivot Servo
Servo myServo4; // Back Left Lift Servo
Servo myServo5; // Back Right Pivot Servo
Servo myServo6; // Back Right Lift Servo
Servo myServo7; // Front Right Pivot Servo
Servo myServo8; // Front Right Lift Servo
void setup()
{
// Attach servos to Arduino Pins
myServo1.attach(21);
myServo2.attach(19);
myServo3.attach(33);
myServo4.attach(25);
myServo5.attach(27);
myServo6.attach(14);
myServo7.attach(12);
myServo8.attach(13);
myServo1.write(90);
myServo2.write(90);
myServo3.write(90);
myServo4.write(90);
myServo5.write(90);
myServo6.write(90);
myServo7.write(90);
myServo8.write(90);
}
void loop()
{
}
Code #2
#include <Servo.h>
//#include <ESP32_Servo.h> // include servo library
// Define the delay between function calls (in milliseconds)
const unsigned long FUNCTION_DELAY = 2000; // 2 seconds
const unsigned long t = 2;
const unsigned long tt = 5;
// Define 8 Servos
Servo myServo1; // Front Left Pivot Servo
Servo myServo2; // Front Left Lift Servo
Servo myServo3; // Back Left Pivot Servo
Servo myServo4; // Back Left Lift Servo
Servo myServo5; // Back Right Pivot Servo
Servo myServo6; // Back Right Lift Servo
Servo myServo7; // Front Right Pivot Servo
Servo myServo8; // Front Right Lift Servo
void setup()
{
// Attach servos to Arduino Pins
myServo1.attach(21);
myServo2.attach(19);
myServo3.attach(33);
myServo4.attach(25);
myServo5.attach(27);
myServo6.attach(14);
myServo7.attach(12);
myServo8.attach(13);
center_servos();
Serial.println("center");
delay(2000);
}
void loop()
{
//Move Forward 10 step
for (int i = 0; i < 10; i++) {
moveLegServos_Forward();
}
center_servos();
delay(FUNCTION_DELAY);
// Move Backward 10 step
for (int i = 0; i < 10; i++) {
moveLegServos_Backward();
}
center_servos();
delay(FUNCTION_DELAY);
// Move Right 10 step
for(int i = 0; i < 10; i++) {
moveLegServos_Right();
}
center_servos();
delay(FUNCTION_DELAY);
// Move Left 10 step
for (int i = 0; i < 10; i++) {
moveLegServos_Left();
}
center_servos();
delay(FUNCTION_DELAY);
// dance 10 step
for (int i = 0; i < 5; i++) {
dance();
}
center_servos();
delay(FUNCTION_DELAY);
// pushup 10 step
for (int i = 0; i < 10; i++) {
pushup();
}
center_servos();
delay(FUNCTION_DELAY);
}
// Move Spider Robot Forward Function
void moveLegServos_Forward()
{
// Control the servo actions for each leg
// Left side leg - Leg 1
moveLeg_Left_Forward(myServo8, myServo7, myServo8);
// Left side leg - Leg 4
moveLeg_Left_Forward(myServo2, myServo1, myServo2);
// Left side leg - Legs 1 and 4
for (int angle = 0; angle <= 90; angle += 2) {
myServo7.write(angle);
myServo1.write(angle);
delay(tt);
}
// Right side leg - Leg 2
moveLeg_Right_Forward(myServo6, myServo5, myServo6);
// Right side leg - Leg 3
moveLeg_Right_Forward(myServo4, myServo3, myServo4);
// Right side leg - Legs 2 and 3
for (int angle = 180; angle >= 90; angle -= 2) {
myServo5.write(angle);
myServo3.write(angle);
delay(tt);
}
}
// Move Spider Robot Backward Function
void moveLegServos_Backward()
{
// Control the servo actions for each leg
// Left side leg - Leg 1
moveLeg_Left_Backward(myServo2, myServo1, myServo2);
// Left side leg - Leg 4
moveLeg_Left_Backward(myServo8, myServo7, myServo8);
// Left side leg - Legs 1 and 4
for (int angle = 180; angle >= 90; angle -= 2) {
myServo1.write(angle);
myServo7.write(angle);
delay(tt);
}
// Right side leg - Leg 2
moveLeg_Right_Backward(myServo4, myServo3, myServo4);
// Right side leg - Leg 3
moveLeg_Right_Backward(myServo6, myServo5, myServo6);
// Right side leg - Legs 2 and 3
for (int angle = 0; angle <= 90; angle += 2) {
myServo3.write(angle);
myServo5.write(angle);
delay(tt);
}
}
// Move Spider Robot Right Function
void moveLegServos_Right() {
// Control the Right turn servo actions for each leg
moveLeg_Right(myServo8, myServo7, myServo5); // Leg 4
moveLeg_Right(myServo2, myServo1, myServo7); // Leg 3
moveLeg_Right(myServo4, myServo3, myServo1); // Leg 2
moveLeg_Right(myServo6, myServo5, myServo3); // Leg 1
}
// Move Spider Robot Left Function
void moveLegServos_Left() {
// Control the Left turn servo actions for each leg
moveLeg_Left(myServo8, myServo7, myServo1); // Leg 4
moveLeg_Left(myServo6, myServo5, myServo7); // Leg 3
moveLeg_Left(myServo4, myServo3, myServo5); // Leg 2
moveLeg_Left(myServo2, myServo1, myServo3); // Leg 1
}
// Spider Robot dance Function
void dance(){
// Move the selected servos from 0 to 180 degrees
for (int angle = 0; angle <= 180; angle += 2) {
myServo1.write(angle);
myServo3.write(angle);
myServo5.write(angle);
myServo7.write(angle);
delay(t); // Delay between each angle change (adjust as needed)
}
// Move the selected servos from 180 to 0 degrees
for (int angle = 180; angle >= 0; angle -= 2) {
myServo1.write(angle);
myServo3.write(angle);
myServo5.write(angle);
myServo7.write(angle);
delay(t); // Delay between each angle change (adjust as needed)
}
center_servos();
delay(100);
lean_left();
delay(300);
lean_right();
delay(300);
lean_left();
delay(300);
lean_right();
delay(300);
lean_left();
delay(300);
lean_right();
delay(300);
lean_left();
delay(300);
lean_right();
delay(500);
center_servos();
delay(300);
bow();
center_servos();
}
// Spider Robot pushup Function
void pushup(){
// Move the selected servos from 0 to 180 degrees
for (int angle = 0; angle <= 180; angle += 2) {
myServo2.write(angle);
myServo4.write(angle);
myServo6.write(angle);
myServo8.write(angle);
delay(10); // Delay between each angle change (adjust as needed)
}
// Move the selected servos from 180 to 0 degrees
for (int angle = 180; angle >= 0; angle -= 2) {
myServo2.write(angle);
myServo4.write(angle);
myServo6.write(angle);
myServo8.write(angle);
delay(10); // Delay between each angle change (adjust as needed)
}
}
// Move Spider Robot Forward logic
void moveLeg_Left_Forward(Servo& liftServo, Servo& pivotServo , Servo& oppositePivotServo)
{
// Move the lift servo from 90 to 180
for (int angle = 90; angle <= 180; angle += 2) {
liftServo.write(angle);
delay(tt);
}
// Move the pivot servo from 90 to 0
for (int angle = 90; angle >= 0; angle -= 2) {
pivotServo.write(angle);
delay(tt);
}
// Move the lift servo from 180 to 90
for (int angle = 180; angle >= 90; angle -= 2) {
liftServo.write(angle);
delay(tt);
}
}
void moveLeg_Right_Forward(Servo& liftServo, Servo& pivotServo , Servo& oppositePivotServo)
{
// Move the lift servo from 90 to 180
for (int angle = 90; angle <= 180; angle += 2) {
liftServo.write(angle);
delay(tt);
}
// Move the pivot servo from 90 to 180
for (int angle = 90; angle <= 180; angle += 2) {
pivotServo.write(angle);
delay(tt);
}
// Move the lift servo from 180 to 90
for (int angle = 180; angle >= 90; angle -= 2) {
liftServo.write(angle);
delay(tt);
}
}
// Move Spider Robot Backward logic
void moveLeg_Left_Backward(Servo& liftServo, Servo& pivotServo, Servo& oppositePivotServo)
{
// Move the lift servo from 90 to 180
for (int angle = 90; angle <= 180; angle += 2) {
liftServo.write(angle);
delay(tt);
}
// Move the pivot servo from 90 to 180
for (int angle = 90; angle <= 180; angle += 2) {
pivotServo.write(angle);
delay(tt);
}
// Move the lift servo from 180 to 90
for (int angle = 180; angle >= 90; angle -= 2) {
liftServo.write(angle);
delay(tt);
}
}
void moveLeg_Right_Backward(Servo& liftServo, Servo& pivotServo, Servo& oppositePivotServo)
{
// Move the lift servo from 90 to 180
for (int angle = 90; angle <= 180; angle += 2) {
liftServo.write(angle);
delay(tt);
}
// Move the pivot servo from 90 to 0
for (int angle = 90; angle >= 0; angle -= 2) {
pivotServo.write(angle);
delay(tt);
}
// Move the lift servo from 180 to 90
for (int angle = 180; angle >= 90; angle -= 2) {
liftServo.write(angle);
delay(tt);
}
}
// Move Spider Robot Right logic
void moveLeg_Right(Servo& liftServo, Servo& pivotServo , Servo& oppositePivotServo)
{
// Move the lift servo from 90 to 180
for (int angle = 90; angle <= 180; angle += 2) {
liftServo.write(angle);
delay(t);
}
// Move the pivot servo from 90 to 0
for (int angle = 90; angle >= 0; angle -= 2) {
pivotServo.write(angle);
delay(t);
}
// Move the opposite pivot servo from 0 to 90
for (int angle = 0; angle <= 90; angle += 2) {
oppositePivotServo.write(angle);
delay(t);
}
// Move the lift servo from 90 to 180
for (int angle = 180; angle >= 90; angle -= 2) {
liftServo.write(angle);
delay(t);
}
}
// Move Spider Robot Left logic
void moveLeg_Left(Servo& liftServo, Servo& pivotServo , Servo& oppositePivotServo)
{
// Move the lift servo from 90 to 180
for (int angle = 90; angle <= 180; angle += 2) {
liftServo.write(angle);
delay(t);
}
// Move the pivot servo from 90 to 180
for (int angle = 90; angle <= 180; angle += 2) {
pivotServo.write(angle);
delay(t);
}
// Move the opposite pivot servo from 180 to 90
for (int angle = 180; angle >= 90; angle -= 2) {
oppositePivotServo.write(angle);
delay(t);
}
// Move the lift servo from 180 to 90
for (int angle = 180; angle >= 90; angle -= 2) {
liftServo.write(angle);
delay(t);
}
}
void bow()
{
center_servos();
delay(200);
myServo2.write(15);
myServo8.write(15);
delay(700);
myServo2.write(90);
myServo8.write(90);
delay(700);
}
void lean_left()
{
myServo2.write(15);
myServo4.write(15);
myServo6.write(150);
myServo8.write(150);
}
void lean_right()
{
myServo2.write(150);
myServo4.write(150);
myServo6.write(15);
myServo8.write(15);
}
// All Servos Centor function
void center_servos()
{
myServo1.write(90);
myServo2.write(90);
myServo3.write(90);
myServo4.write(90);
myServo5.write(90);
myServo6.write(90);
myServo7.write(90);
myServo8.write(90);
}