You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Arduino步进电机代码添加双按键手动控制功能

Arduino Uno 步进电机按键控制合并方案

硬件连接确认

  • 按键1 → 引脚8,按键2 → 引脚9(使用内部上拉输入)
  • 步进电机:DIR+→引脚3,EN+→引脚4,PUL+→引脚5

合并后的完整可运行代码

#include <Stepper.h>

// 步进电机配置(沿用原代码参数)
const int stepsPerRevolution = 25600;
Stepper myStepper(stepsPerRevolution, 3, 4);

// 按键与使能引脚定义
const int switchForward = 8;  // 正转按键
const int switchReverse = 9;  // 反转按键
const int enPin = 5;

// 按键消抖变量
int lastForwardState = HIGH;
int lastReverseState = HIGH;
unsigned long lastDebounceTime = 0;
const unsigned long debounceDelay = 50;

void setup() {
  Serial.begin(9600);
  myStepper.setSpeed(100);

  // 配置按键为内部上拉输入
  pinMode(switchForward, INPUT_PULLUP);
  pinMode(switchReverse, INPUT_PULLUP);
  // 使能电机(低电平有效)
  pinMode(enPin, OUTPUT);
  digitalWrite(enPin, LOW);
}

void loop() {
  int currentForwardState = digitalRead(switchForward);
  int currentReverseState = digitalRead(switchReverse);
  unsigned long currentMillis = millis();

  // 处理正转按键
  if (currentForwardState != lastForwardState) {
    lastDebounceTime = currentMillis;
  }
  if ((currentMillis - lastDebounceTime) > debounceDelay) {
    if (currentForwardState != lastForwardState) {
      if (currentForwardState == LOW) {
        Serial.println("顺时针旋转一圈");
        myStepper.step(stepsPerRevolution);
      }
      lastForwardState = currentForwardState;
    }
  }

  // 处理反转按键
  if (currentReverseState != lastReverseState) {
    lastDebounceTime = currentMillis;
  }
  if ((currentMillis - lastDebounceTime) > debounceDelay) {
    if (currentReverseState != lastReverseState) {
      if (currentReverseState == LOW) {
        Serial.println("逆时针旋转一圈");
        myStepper.step(-stepsPerRevolution);
      }
      lastReverseState = currentReverseState;
    }
  }
}

核心修改说明

  • 保留原Stepper库驱动逻辑,确保电机转动稳定性与原代码一致
  • 用软件消抖解决按键机械抖动问题,避免误触发
  • 采用INPUT_PULLUP模式,无需外接上拉电阻,简化硬件连接
  • 按键触发逻辑:按下对应按键,电机完成一圈指定方向旋转,松开无动作
  • 电机使能引脚持续低电平,保证电机处于可运行状态

内容的提问来源于stack exchange,提问作者Iceman SA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 03:44:53