0% found this document useful (0 votes)
3 views

Code

programming code

Uploaded by

Gunjan Bhatnagar
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views

Code

programming code

Uploaded by

Gunjan Bhatnagar
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

#include <Wire.

h>

#include <Adafruit_PWMServoDriver.h>

#include <AccelStepper.h>

// Initialize PCA9685 PWM driver (for servos)

Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();

// Define servo limits (pulse length in microseconds)

#define SERVO_MIN 150 // Minimum pulse length count (adjust as needed)

#define SERVO_MAX 600 // Maximum pulse length count (adjust as needed)

// Define pins for stepper motors connected to TB6600

#define STEP1_DIR_PIN 2

#define STEP1_STEP_PIN 3

#define STEP2_DIR_PIN 4

#define STEP2_STEP_PIN 5

#define STEP3_DIR_PIN 6

#define STEP3_STEP_PIN 7

#define STEP4_DIR_PIN 8

#define STEP4_STEP_PIN 9

// Initialize AccelStepper objects for each stepper motor

AccelStepper stepper1(AccelStepper::DRIVER, STEP1_STEP_PIN, STEP1_DIR_PIN);

AccelStepper stepper2(AccelStepper::DRIVER, STEP2_STEP_PIN, STEP2_DIR_PIN);

AccelStepper stepper3(AccelStepper::DRIVER, STEP3_STEP_PIN, STEP3_DIR_PIN);


AccelStepper stepper4(AccelStepper::DRIVER, STEP4_STEP_PIN, STEP4_DIR_PIN);

// Function to set a servo to a specific angle

void setServoAngle(uint8_t servoNum, int angle) {

int pulseLength = map(angle, 0, 180, SERVO_MIN, SERVO_MAX);

pwm.setPWM(servoNum, 0, pulseLength);

void setup() {

Serial.begin(9600); // Initialize serial communication for debugging

// Initialize the PCA9685 PWM driver

pwm.begin();

pwm.setPWMFreq(60); // Analog servos run at ~60 Hz

// Setup stepper motors' speed and acceleration

stepper1.setMaxSpeed(500); // Adjust speed for your motor specifications

stepper2.setMaxSpeed(500);

stepper3.setMaxSpeed(500);

stepper4.setMaxSpeed(500);

stepper1.setAcceleration(250); // Adjust acceleration for your motor

stepper2.setAcceleration(250);

stepper3.setAcceleration(250);

stepper4.setAcceleration(250);
Serial.println("Setup complete!");

void loop() {

// Control the servos

Serial.println("Moving servos...");

setServoAngle(0, 180); // Set servo 0 to 180 degrees

setServoAngle(1, 45); // Set servo 1 to 45 degrees

setServoAngle(2, 135); // Set servo 2 to 135 degrees

setServoAngle(3, 180); // Set servo 3 to 180 degrees

setServoAngle(4, 0); // Set servo 4 to 0 degrees

setServoAngle(5, 90); // Set servo 5 to 90 degrees

// Move stepper motors to their target positions

Serial.println("Moving steppers...");

stepper1.moveTo(1000); // Move stepper 1 to position 1000

stepper2.moveTo(500); // Move stepper 2 to position 500

stepper3.moveTo(1500); // Move stepper 3 to position 1500

stepper4.moveTo(2000); // Move stepper 4 to position 2000

// Run the steppers until they reach their target positions

while (stepper1.distanceToGo() != 0 || stepper2.distanceToGo() != 0 ||

stepper3.distanceToGo() != 0 || stepper4.distanceToGo() != 0) {

stepper1.run();
stepper2.run();

stepper3.run();

stepper4.run();

delay(2000); // Wait for a while before repeating the loop

You might also like