// 2相4线步进电机控制示例
const int stepPins[4] = {2, 3, 4, 5}; // 定义四个控制引脚
// 步进电机旋转顺序(4相8拍)
const int stepSequence[8][4] = {
{1, 0, 0, 0},
{1, 1, 0, 0},
{0, 1, 0, 0},
{0, 1, 1, 0},
{0, 0, 1, 0},
{0, 0, 1, 1},
{0, 0, 0, 1},
{1, 0, 0, 1}
};
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(stepPins[i], OUTPUT);
}
}
void loop() {
// 顺时针旋转一圈
for (int i = 0; i < 512; i++) { // 512步 = 360° (1.8°/步 × 512 = 921.6°)
for (int j = 0; j < 8; j++) { // 8拍
setStep(stepSequence[j]);
delayMicroseconds(1000); // 控制速度
}
}
delay(1000);
}
void setStep(int sequence[]) {
for (int i = 0; i < 4; i++) {
digitalWrite(stepPins[i], sequence[i]);
}
}
|