极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: jj王立捷

编程基础问题

[复制链接]
发表于 2016-12-25 10:04:59 | 显示全部楼层 |阅读模式
我现在用Arduino来控制步进电机 ,但是怎么跳出loop循环啊  
回复

使用道具 举报

发表于 2016-12-25 11:56:45 | 显示全部楼层
貌似不能跳出loop吧
回复 支持 反对

使用道具 举报

发表于 2016-12-25 12:15:58 | 显示全部楼层
.....为什么 要跳出LOOP啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-26 14:37:32 | 显示全部楼层
是这样的哦 我用这个板子控制一个步进电机驱动器型号是2MD320,我给输出口脉冲但是这个loop一直循环也不知道给了多少个脉冲,本来这个步进电机是1600个脉冲转一转但是由于loop一直在循环脉冲给了多少也不知道导致步进电机一直转也不知道转到什么位置了  。
回复 支持 反对

使用道具 举报

发表于 2016-12-26 23:03:26 | 显示全部楼层
在内层再添加一层循环,比如while(1)然后就可以跳出了,明白不?
回复 支持 反对

使用道具 举报

发表于 2016-12-27 08:30:01 | 显示全部楼层
以下是我学42步进电机时的例子,你可以参考。
用的是4988驱动。效果是正转一圈暂停一下,再反转一圈暂停一下。不停重复。


int x;

void setup()
{
  pinMode(6,OUTPUT); // Enable: EN可以使用单片机端口控制,也可以直接连接GND使能
  pinMode(5,OUTPUT); // steps:脉冲个数
  pinMode(4,OUTPUT); // dir:为方向控制
  digitalWrite(6,LOW); // Set Enable low
}

void loop()
{
    digitalWrite(4,HIGH); // Set Dir high
    for(x = 0; x < 200; x++) // Loop 200 times
  {
      digitalWrite(5,HIGH); // Output high
      delayMicroseconds(800); // Wait 1/2 a ms
      digitalWrite(5,LOW); // Output low
      delayMicroseconds(800); // Wait 1/2 a ms
    }
  delay(1000); // pause one second
  
  digitalWrite(4,LOW); // Set Dir low
  
  for(x = 0; x < 200; x++) // Loop 2000 times
  {
      digitalWrite(5,HIGH); // Output high
      delayMicroseconds(800); // Wait 1/2 a ms
      digitalWrite(5,LOW); // Output low
      delayMicroseconds(800); // Wait 1/2 a ms
    }
    delay(1000); // pause one second
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-27 21:40:32 | 显示全部楼层
vague1945 发表于 2016-12-26 23:03
在内层再添加一层循环,比如while(1)然后就可以跳出了,明白不?

哦哦,就是一直让程序在这个循环里面被,死循环。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-27 21:44:57 | 显示全部楼层
leisd 发表于 2016-12-27 08:30
以下是我学42步进电机时的例子,你可以参考。
用的是4988驱动。效果是正转一圈暂停一下,再反转一圈暂停一 ...

这个程序是不是一直在正转---停止1秒----反转----停止1秒啊。我用的是2MD320驱动器驱动的步进电机声音有点大,不知道您知道什么方法让步进电机工作时候声音小一点么
回复 支持 反对

使用道具 举报

发表于 2016-12-28 10:51:06 | 显示全部楼层
加润滑油,还有底座要瓷实,哈哈。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-30 09:13:15 | 显示全部楼层
可惜我的是直线电机里面的步进电机啊
回复 支持 反对

使用道具 举报

发表于 2016-12-30 15:42:27 | 显示全部楼层
一直郁闷为何操控步进 电机不用tone函数
回复 支持 反对

使用道具 举报

发表于 2016-12-30 17:25:53 | 显示全部楼层
jj王立捷 发表于 2016-12-27 21:44
这个程序是不是一直在正转---停止1秒----反转----停止1秒啊。我用的是2MD320驱动器驱动的步进电机声音有 ...

可能是电机不同吧,我没用过别的电机。
你可以改一改“delayMicroseconds(800); // Wait 1/2 a ms"中的数值,太大或是太小也会出现抖动。
我也是菜鸟,帮不了多少。
希望你在最后解决好了后,能在本贴中总结。让我们大家也学习一下。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-3 21:52:43 | 显示全部楼层
好的谢谢你的解答,我也是小白一个 以后相互学习共同进步吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-3 21:53:26 | 显示全部楼层
tone是干什么的啊 呵呵不知道哎
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-25 20:33 , Processed in 0.044736 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表