Hello
I’m trying to make my second steppermotor work according to the code. I know that I’m doing something wrong but what is it? Here is my code:
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
#include <AccelStepper.h>
#define SERVOMIN 125
#define SERVOMAX 575
#define SERVO_FREQ 60
#define motorInterfaceType 1
#define motorInterfaceType 2
#define dirPin1 5
#define stepPin1 4
#define dirPin2 6
#define stepPin2 7
int motor1pin1 = 8;
int motor1pin2 = 9;
int enableDriver1 = 10;
int enableDriver2 = 12;
int microSwitchMuratcan = 3;
int microSwitchCammy = 2;
uint8_t servonum = 0;
AccelStepper stepper1 = AccelStepper(motorInterfaceType, stepPin1, dirPin1);
AccelStepper stepper2 = AccelStepper(motorInterfaceType, stepPin2, dirPin2);
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x40);
void setup() {
pinMode(enableDriver1, INPUT);
pinMode(enableDriver2, INPUT);
pinMode(microSwitchMuratcan, INPUT);
pinMode(microSwitchCammy, INPUT);
pinMode(motor1pin1, OUTPUT);
pinMode(motor1pin2, OUTPUT);
stepper1.setMaxSpeed(800);
stepper2.setMaxSpeed(800);
pwm.begin();
pwm.setPWMFreq(SERVO_FREQ);
}
void loop() {
if(digitalRead(microSwitchMuratcan) == HIGH)
{
digitalWrite(motor1pin1, LOW);
digitalWrite(motor1pin2, LOW);
delay(2000);
pwm.setPWM(3, 0, 235);
delay(2000);
{
digitalWrite(enableDriver1, LOW);
digitalWrite(enableDriver2, HIGH);
stepper1.setCurrentPosition(0);
while(stepper1.currentPosition() != 400)
{
stepper1.setSpeed(800);
stepper1.runSpeed();
}
delay(2000);
digitalWrite(enableDriver1, HIGH);
digitalWrite(enableDriver2, LOW);
stepper2.setCurrentPosition(0);
while(stepper2.currentPosition() != 400)
{
stepper2.setSpeed(800);
stepper2.runSpeed();
}
delay(2000);
digitalWrite(enableDriver1, LOW);
digitalWrite(enableDriver2, HIGH);
stepper1.setCurrentPosition(0);
while(stepper1.currentPosition() != -400)
{
stepper1.setSpeed(-800);
stepper1.runSpeed();
}
delay(2000);
pwm.setPWM(3, 0, 90);
delay(1000);
digitalWrite(motor1pin1, HIGH);
digitalWrite(motor1pin2, LOW);
delay(5000);
}
} else {
digitalWrite(motor1pin1, HIGH);
digitalWrite(motor1pin2, LOW);
}