【Arduino】不使用库函数控制步进电机怎么使其运行到某位置停止

6 篇文章 1 订阅
4 篇文章 0 订阅


前言

Arduino的最吸引地方之一就是有丰富的库函数。

对于控制步进电机运动,给出脉冲即可,但是自己从底层写起来也不容易。一般会使用到Stepper库或AccelStepper库,但是库函数对于不同的步进电机有个驱动频率不同,所以一般就简化使用库函数。

一、面包板接线? 

二、使用步骤

1.引入控制

代码如下(示例):

#include <SoftwareSerial.h>
//这是软串口通讯arduino和esp8266-Mode连接的库函数
SoftwareSerial youSerial(50, 51); 

设置接收信号串口,当然也可以使用默认串口0或1。

这边相对应的可以使用蓝牙等串口通讯模块的使用。

2.驱动电机代码(不使用库)

代码如下(示例):

for(int x = 0; x < (10000000000000000 ); x++) {
    digitalWrite(stepPin,HIGH);
    delayMicroseconds(1000);
    digitalWrite(stepPin,LOW);
    delayMicroseconds(1000); 
  }

现在电机持续运行。

这边可以外接微触开关进行停止只需添加一个break跳出for循环即可。

这边在for循环下再写一个串口判断和读取,就可以用break轻易的解决步进电机运行到某点截止。

全部代码如下

#include <SoftwareSerial.h>
//这是软串口通讯arduino和esp8266-Mode连接的库函数
SoftwareSerial youSerial(50, 51); 

// 定义电机控制用常量
 char getstr;
// A4988连接Arduino引脚号
const int dirPin = 2;  // 方向引脚
const int stepPin = 3; // 步进引脚
 
// 电机每圈步数
const int STEPS_PER_REV = 20000;
 
void setup() {
  
  // Arduino控制A4988步进和方向的引脚为输出模式
  pinMode(stepPin,OUTPUT); 
  pinMode(dirPin,OUTPUT);
    Serial.begin(9600);
  youSerial.begin(9600);
}
void loop() {
 if(youSerial.available() > 0)
  {
  getstr=youSerial.read();

  }

  switch(getstr){
   case 'w': 
   digitalWrite(dirPin,HIGH);
  
  // 电机快速旋转
  for(int x = 0; x < (STEPS_PER_REV ); x++) {
    if(youSerial.available() > 0)
  {
  getstr=youSerial.read();
     if(getstr=='A'||getstr=='D')
    {break;}
  }
    digitalWrite(stepPin,HIGH);
    delayMicroseconds(1000);
    digitalWrite(stepPin,LOW);
    delayMicroseconds(1000);
     
  
  }
     Serial.println("run");
     break;
   case 'a': 

    digitalWrite(dirPin,LOW);
  
  // 电机快速旋转
  for(int x = 0; x < (STEPS_PER_REV ); x++) {
    if(youSerial.available() > 0)
  {
  getstr=youSerial.read();
     if(getstr=='A'||getstr=='D')
    {break;}
  }
    digitalWrite(stepPin,HIGH);
    delayMicroseconds(1000);
    digitalWrite(stepPin,LOW);
    delayMicroseconds(1000);
    
  }
     Serial.println("left");
    break; 
  }
}

总结

这个主要是对c语言的理解,我们有些机械学生对for循环的理解不是很深刻,在遇到问题时经常需要搜寻帮助,希望对你有所帮助。

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿德奶绿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值