查看: 507|回复: 8

[未解决] arduino控制步进电机驱动器,电机不停

[复制链接]
  • TA的每日心情
    开心
    2019-11-4 13:37
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2019-10-20 23:36 | 显示全部楼层 |阅读模式
    用arduino 控制步进电机驱动器,共阳接线,程序如下,但电机转起来不停,请高手指点,谢谢!

    int vcc = 2;
    int pls = 3;
    int dir = 4;
    int ena = 5;
    void setup() {
      // put your setup code here, to run once:
           pinMode(vcc,OUTPUT);//
            pinMode(pls,OUTPUT); // Step  
           pinMode(dir,OUTPUT); // Dir
           pinMode(ena,OUTPUT);
           Serial.begin(9600);//设置波特率为9600
    }
    void loop() {
      // put your main code here, to run repeatedly:
         digitalWrite(vcc,HIGH); //
         digitalWrite(dir,HIGH); // Set dir high  
         digitalWrite(ena,HIGH);//set ena high
        for(int i = 0; i <= 100; i++) // Loop 1600 times  
        {         
          digitalWrite(3,HIGH); // set pls high
            delay(10); // Wait   ms
            digitalWrite(3,LOW); // set pls low
            delay(10); // Wait  ms   
        }
        digitalWrite(vcc,LOW);
       }
  • TA的每日心情
    开心
    2019-11-20 06:06
  • 签到天数: 387 天

    [LV.9]以坛为家II

    发表于 2019-10-23 03:40 | 显示全部楼层
    程序没有让步进电机让停止的控制怎么会停呢void loop()总在循环啊
  • TA的每日心情
    开心
    2019-11-4 13:37
  • 签到天数: 5 天

    [LV.2]偶尔看看I

     楼主| 发表于 2019-10-23 13:48 | 显示全部楼层
    lwq1947 发表于 2019-10-23 03:40
    程序没有让步进电机让停止的控制怎么会停呢void loop()总在循环啊

    能否指导一下,怎么修改程序?谢谢!
  • TA的每日心情
    开心
    2019-11-20 06:06
  • 签到天数: 387 天

    [LV.9]以坛为家II

    发表于 2019-10-23 17:04 | 显示全部楼层
    请问你要停止的条件要求,是用按钮还是时间长短控制.
  • TA的每日心情
    开心
    2019-11-4 13:37
  • 签到天数: 5 天

    [LV.2]偶尔看看I

     楼主| 发表于 2019-10-23 19:32 | 显示全部楼层
    用时间长短控制,运转60s让电机停止。
  • TA的每日心情

    2019-10-28 18:14
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    发表于 2019-10-23 19:59 | 显示全部楼层
    添加一个变量用来表示电机的启动和停止(也可以用bool),用if来判断,起初变量默认为true,执行电机代码,当60S到达后变量变为false,停止执行电机代码。
  • TA的每日心情
    开心
    2019-11-20 06:06
  • 签到天数: 387 天

    [LV.9]以坛为家II

    发表于 2019-10-24 11:48 | 显示全部楼层
    最简单的方法是用下面的程序,arduino通电后步进电机会转60秒.若按下arduino的复位键步进电机又会转60秒.
    int vcc = 2;
    int pls = 3;
    int dir = 4;
    int ena = 5;
    int i=1;           //新加的
    void setup() {
      // put your setup code here, to run once:
           pinMode(vcc,OUTPUT);//
            pinMode(pls,OUTPUT); // Step  
           pinMode(dir,OUTPUT); // Dir
           pinMode(ena,OUTPUT);
           Serial.begin(9600);//设置波特率为9600
    }
    void loop() {
        if(i<3000){
         digitalWrite(vcc,HIGH); //
         digitalWrite(dir,HIGH); // Set dir high  
         digitalWrite(ena,HIGH);//set ena high
        for(i = 1; i <=3000; i++) // Loop 3000 times  
        {         
          digitalWrite(3,HIGH); // set pls high
            delay(10); // Wait   ms
            digitalWrite(3,LOW); // set pls low
            delay(10); // Wait  ms   
        }
       }
       else digitalWrite(vcc,LOW);
      }
  • TA的每日心情
    开心
    2019-11-4 13:37
  • 签到天数: 5 天

    [LV.2]偶尔看看I

     楼主| 发表于 2019-10-26 09:07 | 显示全部楼层
    谢谢lwq1947 老师耐心指导,问题已解决:
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    为拍月亮而生的便携望远镜系统。
    为拍月亮而生的便携望远镜
    参赛项目: 便携望远镜系统 参赛组员: 1人 布丁:嵌入式软件、上位机软件、电路、结
    基于机器视觉的智能分拣机械臂
    基于机器视觉的智能分拣机
    本作品是一个基于机器视觉的智能机械臂操作平台,其采用atmega32单片机作为主控制系统
    小白求助
    小白求助
    也许我这个问题也许看起来有些幼稚。。。 还在入门的路上打滚,在看《爱上Arduino》这
    SpiderRobot 蜘蛛
    SpiderRobot 蜘蛛
    关于SpiderRobot 项目实行方案 之前有人推荐我做这个项目,于是乎就有了这个 h
    没有合适的模块,想到自己焊接芯片
    没有合适的模块,想到自己
    有些模块没有加工过的模块销售,想着自己要是能把芯片焊在一起也是一样的。只是这个尺
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表