49741933o 发表于 2014-6-8 10:17:14

怎样控制电机的运动?

我已经有了前进、后退、停止的子函数了,怎样用arduino控制电机的前进几秒、后退几秒、停止,关键是停止,动起来容易,但好像停不下来{:soso_e115:} 。。求助大神解析!!
另外millis()函数怎么用啊?是从启动程序就开始计时,还是程序运行到这一行才开始计时?我上面这个问题可以用millis()解决吗?困惑了我好几天了,求解!!!谢谢.......

49741933o 发表于 2014-6-8 10:23:16

补充下:我是看了《爱上Arduino》第2版这本书p55-56,于是想到了能不能用millis()..大概想法就是如果读取的数据过了多少毫秒仍然没变,就执行相应的语句。

nust_奔跑 发表于 2014-6-8 10:41:53

millis()函数是上电就开始计时的。
你的问题通过delay来实现吧,例如前进两秒,则先调用前进子程序,然后delay延时2秒钟,最后调用停止子程序,让电机停止旋转。

49741933o 发表于 2014-6-8 11:40:43

nust_奔跑 发表于 2014-6-8 10:41 static/image/common/back.gif
millis()函数是上电就开始计时的。
你的问题通过delay来实现吧,例如前进两秒,则先调用前进子程序,然后d ...

我是有个if条件,我把直滑式电阻器分成3部分,0~341,341~682,682~1023.如果读取的数据小于341,就执行前进一段时间t,后退两秒,前进两秒,再后退一段时间t,最后停止。它是能够完成上述的动作,但停止没用,注意到没?它一直在循环这几个动作,但我只要一次这样的动作。。
   if(val< 341){
    t=0.0088*(341-val);//时间单位为S,所以下面delay()里面的时间乘了1000
    qianjin();
    delay(t*1000+1000);
    houtui();
    delay(1000);
    qianjin();
    delay(1000);
    houtui();
    delay(t*1000+1000);
    if(millis()-startTime<=5000)
    tingzhi();
    }    一段程序。。。希望大神解析,改正

hsr18299 发表于 2014-6-9 00:28:19

因為 if(millis()-startTime<=5000)不會為真
所以不會執行 tingzhi();

把5000改成50000試試

wz10105031 发表于 2014-6-9 10:34:46

楼上正解:):):):):):):):):)
页: [1]
查看完整版本: 怎样控制电机的运动?