- We want to run 3 motors. After adjusting the +90 maintenance at the beginning, the stepper motors should run continuously by going 180 degrees backwards and 180 degrees forward respectively. https://www.youtubehttps://www.youtube.com/watch?v=c2jxorPyzvg.com/watch?v=c2jxorPyzvg It should be like in this video
{
"version": 1,
"author": "Anonymous maker",
"editor": "wokwi",
"parts": [
{ "type": "wokwi-arduino-uno", "id": "uno", "top": 10.2, "left": 153, "attrs": {} },
{
"type": "wokwi-stepper-motor",
"id": "stepper1",
"top": -240.01,
"left": 349.02,
"attrs": { "size": "8", "arrow": "orange" }
},
{
"type": "wokwi-stepper-motor",
"id": "stepper2",
"top": -240.01,
"left": 253.02,
"attrs": { "size": "8", "arrow": "orange" }
},
{
"type": "wokwi-stepper-motor",
"id": "stepper3",
"top": -240.01,
"left": 157.02,
"attrs": { "size": "8", "arrow": "orange" }
},
{
"type": "wokwi-a4988",
"id": "drv1",
"top": -139,
"left": 360.4,
"rotate": 270,
"attrs": {}
},
{
"type": "wokwi-a4988",
"id": "drv2",
"top": -139,
"left": 264.4,
"rotate": 270,
"attrs": {}
},
{
"type": "wokwi-a4988",
"id": "drv3",
"top": -139,
"left": 168.4,
"rotate": 270,
"attrs": {}
}
],
"connections": [
[ "stepper3:A-", "drv3:2B", "green", [ "v0" ] ],
[ "stepper3:A+", "drv3:2A", "green", [ "v0" ] ],
[ "stepper3:B+", "drv3:1A", "green", [ "v0" ] ],
[ "stepper3:B-", "drv3:1B", "green", [ "v0" ] ],
[ "stepper2:A-", "drv2:2B", "green", [ "v0" ] ],
[ "stepper2:A+", "drv2:2A", "green", [ "v0" ] ],
[ "stepper2:B+", "drv2:1A", "green", [ "v0" ] ],
[ "stepper2:B-", "drv2:1B", "green", [ "v0" ] ],
[ "stepper1:A-", "drv1:2B", "green", [ "v0" ] ],
[ "stepper1:A+", "drv1:2A", "green", [ "v0" ] ],
[ "stepper1:B+", "drv1:1A", "green", [ "v0" ] ],
[ "stepper1:B-", "drv1:1B", "green", [ "v0" ] ],
[ "drv2:STEP", "uno:1", "blue", [ "v19.2", "h86.4" ] ],
[ "drv1:STEP", "uno:0", "green", [ "v96" ] ],
[ "drv3:STEP", "uno:2", "orange", [ "v28.8", "h163.2" ] ],
[ "drv1:DIR", "uno:3", "purple", [ "v48", "h-38.4" ] ],
[ "drv2:DIR", "uno:4", "yellow", [ "v48", "h38.4" ] ],
[ "drv3:DIR", "uno:5", "cyan", [ "v57.6", "h124.8" ] ],
[ "drv1:SLEEP", "drv1:RESET", "black", [ "v9.6", "h-9.6" ] ],
[ "drv2:SLEEP", "drv2:RESET", "black", [ "v9.6", "h-9.6" ] ],
[ "drv3:SLEEP", "drv3:RESET", "black", [ "v9.6", "h-9.6" ] ]
],
"dependencies": {}
}
diagram codes
- Edit your post
- copy/cut your code
- format your code (in an IDE)
- click < CODE > button in the edited message box
- paste your code where you see
type or paste your code here
You do not want to use pins 0 or 1. This sketch uses pins other than 0 and 1...
Files for WOKWI.COM
sketch.ino
int stepPin[] = {7, 5, 3}; // motor step pins
int dirPin[] = {6, 4, 2}; // motor direction pins
bool CW = 1, CCW = 0; // clockwise, counterclockwise
int deg, dir, mot; // degrees, direction, motor
#define stepsPerRevolution 200
#define steps 200
void setup() {
Serial.begin(115200);
for (int i = 0; i < 5; i++) {
pinMode(stepPin[i], OUTPUT); // configure step pins as output
pinMode(dirPin[i], OUTPUT); // configure direction pins as output
}
dir = CW;
deg = steps/4;
for (int mot = 0; mot < 3; mot++) {
runMotor(mot, dir, deg); // make 'mot' motor run in 'dir' direction for 'deg' degrees
delay(250); // pause between moving motors
}
}
void loop() {
dir = !dir;
deg = steps/2;
for (int mot = 0; mot < 3; mot++) {
runMotor(mot, dir, deg); // make 'mot' motor run in 'dir' direction for 'deg' degrees
delay(250); // pause between moving motors
}
}
void runMotor(int motor, bool direction, int degrees)
{
digitalWrite(dirPin[motor], direction);
// this condition is processor-blocking and will not allow multiple events to occur in parallel
for (int i = 0; i < deg; i++) { // steps per revolutino, typically 200
digitalWrite(stepPin[motor], HIGH); // start of start pulse
delayMicroseconds(2000);
digitalWrite(stepPin[motor], LOW); // end of start pulse
delayMicroseconds(2000);
}
}
diagram.json
{
"version": 1,
"author": "Anonymous maker",
"editor": "wokwi",
"parts": [
{ "type": "wokwi-arduino-uno", "id": "uno", "top": -28.2, "left": 153, "attrs": {} },
{
"type": "wokwi-stepper-motor",
"id": "stepper1",
"top": -240.01,
"left": 349.02,
"attrs": { "size": "8", "arrow": "orange" }
},
{
"type": "wokwi-stepper-motor",
"id": "stepper2",
"top": -240.01,
"left": 253.02,
"attrs": { "size": "8", "arrow": "orange" }
},
{
"type": "wokwi-stepper-motor",
"id": "stepper3",
"top": -240.01,
"left": 157.02,
"attrs": { "size": "8", "arrow": "orange" }
},
{
"type": "wokwi-a4988",
"id": "drv1",
"top": -139,
"left": 360.4,
"rotate": 270,
"attrs": {}
},
{
"type": "wokwi-a4988",
"id": "drv2",
"top": -139,
"left": 264.4,
"rotate": 270,
"attrs": {}
},
{
"type": "wokwi-a4988",
"id": "drv3",
"top": -139,
"left": 168.4,
"rotate": 270,
"attrs": {}
}
],
"connections": [
[ "stepper3:A-", "drv3:2B", "green", [ "v0" ] ],
[ "stepper3:A+", "drv3:2A", "green", [ "v0" ] ],
[ "stepper3:B+", "drv3:1A", "green", [ "v0" ] ],
[ "stepper3:B-", "drv3:1B", "green", [ "v0" ] ],
[ "stepper2:A-", "drv2:2B", "green", [ "v0" ] ],
[ "stepper2:A+", "drv2:2A", "green", [ "v0" ] ],
[ "stepper2:B+", "drv2:1A", "green", [ "v0" ] ],
[ "stepper2:B-", "drv2:1B", "green", [ "v0" ] ],
[ "stepper1:A-", "drv1:2B", "green", [ "v0" ] ],
[ "stepper1:A+", "drv1:2A", "green", [ "v0" ] ],
[ "stepper1:B+", "drv1:1A", "green", [ "v0" ] ],
[ "stepper1:B-", "drv1:1B", "green", [ "v0" ] ],
[ "drv1:SLEEP", "drv1:RESET", "black", [ "v9.6", "h-9.6" ] ],
[ "drv2:SLEEP", "drv2:RESET", "black", [ "v9.6", "h-9.6" ] ],
[ "drv3:SLEEP", "drv3:RESET", "black", [ "v9.6", "h-9.6" ] ],
[ "uno:2", "drv1:DIR", "green", [ "v-19.2", "h23.3" ] ],
[ "uno:3", "drv1:STEP", "green", [ "v-28.8", "h32.8" ] ],
[ "uno:4", "drv2:DIR", "green", [ "v-48", "h-44.1" ] ],
[ "uno:5", "drv2:STEP", "green", [ "v-38.4", "h-44.2" ] ],
[ "uno:6", "drv3:DIR", "green", [ "v-28.8", "h-101.9" ] ],
[ "uno:7", "drv3:STEP", "green", [ "v-19.2", "h-111.6" ] ]
],
"dependencies": {}
}
This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.