将 NEMA 17 步进电机与 A4988 步进驱动器连接,由 Arduino Uno 控制。 其他元件包括 12V 电源、面包板、连接引脚和电容器。Connects a NEMA 17 stepper motor with an A4988 stepper drive, controlled by an Arduino Uno. Other components include a 12V Power supplier, a breadboard, connect pins and capacitors. NEMA17 stepper motor has 200 steps, or 1.8 degrees per step resolution, 2 phases.

// Step the motor
// define the pins
#define EN_PIN 7 //enable
#define STEP_PIN 8 //step
#define DIR_PIN 9 //direction
void setup()
{
pinMode(LED_BUILTIN, OUTPUT);
//set pin modes
pinMode(EN_PIN, OUTPUT); // set the EN_PIN as an output
digitalWrite(EN_PIN, HIGH); // deactivate driver (LOW active)
pinMode(DIR_PIN, OUTPUT); // set the DIR_PIN as an output
digitalWrite(DIR_PIN, LOW); // set the direction pin to low
pinMode(STEP_PIN, OUTPUT); // set the STEP_PIN as an output
digitalWrite(STEP_PIN, LOW); // set the step pin to low
digitalWrite(EN_PIN, LOW); // activate driver
}
// This function sets the number of steps, the direction and the speed
// steps: a full rotation requires 1600 steps
// direction: 1 = clockwise, 0 = anticlockwise
// speed: number of microseconds between each step, min 100
void rotateMotor(int steps, bool direction, int speed) {
// Set the motor direction
digitalWrite(DIR_PIN, direction);
// Step the motor
for (int i = 0; i < steps; i++) {
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(speed);
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(speed);
}
}
void loop()
{
//make steps
//rotateMotor(1600,1,100); // full fast rotation clockwise
//digitalWrite(LED_BUILTIN, HIGH);
delay(1000); // one second delay
//rotateMotor(1600,0,1000); // full slow rotation anticlockwise
// digitalWrite(LED_BUILTIN, LOW);
//delay(1000); // one second delay
//rotateMotor(400,1,500); // quarter rotation clockwise
//delay(1000); // one second delay
//rotateMotor(400,0,500); // quarter rotation anticlockwise
//delay(1000); // one second delay
}