okay so as the title says im in need some help with the following code....
What im wanting todo is press buttons to make certain stepper motors move in a certain direction,
So far if i press Button number 1 Motor One turns clockwise if i press Motor button 2 Motor One turns Anti clockwise.... the bit im stuck on is getting it to see that im pressing Motor button 3 and 4 for Motor Two Direction clockwise and anticlockwise im using the Arduino Mega 2560 and the stepper drivers are A4988
// constants won't change. They're used here to set pin numbers:
const int motorButton1 = 2; // Motor one
const int motorButton2 = 3; // Motor one
const int stepPin0 = 52; // Motor one
const int dirPin1 = 53; // Motor one
const int motorButton3 = 4; // Motor Two
const int motorButton4 = 5; // Motor Two
const int stepPin2 = 50; // Motor Two
const int dirPin3 = 51; // Motor Two
// variables will change:
int buttonState0 = 0; // variable for reading the pushbutton status for Motor One
int buttonState1 = 0; // variable for reading the pushbutton status for Motor One
int buttonState2 = 0; // variable for reading the pushbutton status for Motor Two
int buttonState3 = 0; // variable for reading the pushbutton status for Motor Two
void setup() {
pinMode(motorButton1, INPUT_PULLUP); // Motor one
pinMode(motorButton2, INPUT_PULLUP); // Motor one
pinMode(stepPin0,OUTPUT); // Motor one
pinMode(dirPin1,OUTPUT); // Motor one
pinMode(motorButton3, INPUT_PULLUP); // Motor one
pinMode(motorButton3, INPUT_PULLUP); // Motor one
pinMode(stepPin2,OUTPUT); // Motor one
pinMode(dirPin3,OUTPUT); // Motor one
}
void loop() {
buttonState0 = digitalRead(motorButton1); // read the status of the pushbutton value Motor One:
buttonState1 = digitalRead(motorButton2); // read the status of the pushbutton value Motor One:
buttonState2 = digitalRead(motorButton3); // read the status of the pushbutton value Motor Two:
buttonState3 = digitalRead(motorButton4); // read the status of the pushbutton value Motor Two:
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
if (buttonState0 == LOW) {
// turn LED on:
digitalWrite(dirPin1,HIGH);
digitalWrite(stepPin0,HIGH);
delayMicroseconds(500);
digitalWrite(stepPin0,LOW);
delayMicroseconds(500);
for(int x = 0; x < 42; x++);
}
if (buttonState1 == LOW) {
// turn LED off:
digitalWrite(dirPin1,LOW);
digitalWrite(stepPin0,LOW);
delayMicroseconds(500);
digitalWrite(stepPin0,HIGH);
delayMicroseconds(500);
for(int x = 0; x < 42; x++);
}
if (buttonState2 == LOW) {
// turn LED on:
digitalWrite(dirPin3,HIGH);
digitalWrite(stepPin2,HIGH);
delayMicroseconds(500);
digitalWrite(stepPin2,LOW);
delayMicroseconds(500);
for(int x = 0; x < 42; x++);
}
if (buttonState3 == LOW) {
// turn LED off:
digitalWrite(dirPin3,LOW);
digitalWrite(stepPin2,LOW);
delayMicroseconds(500);
digitalWrite(stepPin2,HIGH);
delayMicroseconds(500);
for(int x = 0; x < 42; x++);
}
}
im stuck on is getting it to see that im pressing Motor button 3 and 4 for Motor Two Direction clockwise and anticlockwise
At its simplest just repeat the code for the first 2 buttons and the motor using different names for the variables and obviously different pins. There are better ways to do this but start simple
UKHeliBob:
At its simplest just repeat the code for the first 2 buttons and the motor using different names for the variables and obviously different pins. There are better ways to do this but start simple
for(int x = 0; x < 42; x++);
What is the purpose of this line of code ?
I have tried Repeating the code with different names for the Variables and different pins the code i have put above is supposed to beable to run the two steppermotor a5988 and its not for some reason
im not 100% sure i think its somthing todo with timing how fast the pins go from low to high to the stepper a4988 driver for(int x = 0; x < 42; x++); example 42 for one revolution
The first thing that I would do is to make the variable names consistent. State names should have the same number suffix as the pins they relate to, what happened to stepPin1, dirPin0 and dirPin2, for instance. Incorporating motor names, or at leas M0, M1 etc into the pin names for each motor would also make the code easier to read. Remove nonsense comments such as
// turn LED on:
and
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
Add some Serial.print()s to the program so that you know which parts are being executed and the value of pertinent variables at that point
UKHeliBob:
The first thing that I would do is to make the variable names consistent. State names should have the same number suffix as the pins they relate to, what happened to stepPin1, dirPin0 and dirPin2, for instance. Incorporating motor names, or at leas M0, M1 etc into the pin names for each motor would also make the code easier to read. Remove nonsense comments such as
// turn LED on:
and
// check if the pushbutton is pressed. If it is, the buttonState is HIGH:
Add some Serial.print()s to the program so that you know which parts are being executed and the value of pertinent variables at that point
i have made these changes and i have just ordered 6 New Dual L298N H Bridge Stepper Motor Drivers as the a4988 stepper drivers i was using dont seam to be working as i think i might of broken them
well the 6 H-bridge stepper drivers arrived today and the bad news is i have a total of 8 stepper motors i can only drive 2 motors out of the 8 with these h-bridge drivers, as the motors that dont work with them are drawing 4.6ish amps and the stepper driver is on rated to 2amps per coil, hmmm, what to try next?
anybody got and spare stepper drivers they could send my way for me to try before i go ahead and buy others as i dont want to wast to much money....