arduino 控制双电机画圆

在arduino中控制电机的基础可以查看该博主的博客讲解十分详细同时也可以进行更好的理解工作原理和控制器功能的使用

 

#include <math.h>

const int dirPinX = 4; // X轴方向引脚
const int stepPinX = 7; // X轴脉冲引脚
const int dirPinY = 9; // Y轴方向引脚
const int stepPinY = 8; // Y轴脉冲引脚

const float radius = 50.0; // 圆的半径(步数)
const int numSteps = 360; // 圆周上的点数

void setup() {
  pinMode(dirPinX, OUTPUT);
  pinMode(stepPinX, OUTPUT);
  pinMode(dirPinY, OUTPUT);
  pinMode(stepPinY, OUTPUT);
}

void moveMotor(int dirPin, int stepPin, bool dir, int steps) {
  digitalWrite(dirPin, dir);
  for (int i = 0; i < steps; i++) {
    digitalWrite(stepPin, HIGH);
    delayMicroseconds(500); // 设置脉冲信号持续时间
    digitalWrite(stepPin, LOW);
    delayMicroseconds(500); // 设置脉冲信号间隔时间
  }
}

void loop() {
  for (int i = 0; i <= numSteps; i++) {
    float theta = 2.0 * PI * i / numSteps; // 计算当前角度
    float x = radius * cos(theta); // 计算 X 坐标
    float y = radius * sin(theta); // 计算 Y 坐标

    // 计算 X 轴步数
    int stepsX = round(x);
    // 计算 Y 轴步数
    int stepsY = round(y);

    // 控制 X 轴步进电机运动
    if (stepsX > 0) {
      moveMotor(dirPinX, stepPinX, HIGH, stepsX);
    } else if (stepsX < 0) {
      moveMotor(dirPinX, stepPinX, LOW, -stepsX);
    }

    // 控制 Y 轴步进电机运动
    if (stepsY > 0) {
      moveMotor(dirPinY, stepPinY, HIGH, stepsY);
    } else if (stepsY < 0) {
      moveMotor(dirPinY, stepPinY, LOW, -stepsY);
    }

     // 延迟以观察效果
  }
}

arduino控制42步进电机——先动起来_arduino控制步进电机-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/weixin_45344328/article/details/131904817?spm=1001.2014.3001.5506

  • 11
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值