作者st40182 ()
看板Electronics
标题[问题] 关於使用Arduino 控制步进马达
时间Sat Jan 12 17:49:02 2019
大家好
想请教一下使用Arduino控制步进马达的部分
我的程式流程是这样:
从电脑端(python)发送一个讯号
Arduino接受到讯号之後会转一步
接着转完後会再回传一个讯号给电脑
电脑端那边已经完成
但是Arduino这边有些问题
这是我的程式码的部分
Ideone:
https://ideone.com/DL0fHu
#include <Stepper.h>
Stepper stepper(400, 9, 8, 7, 6);
int m=0;
int New_m=0;
//先订两个参数 m 与 New_m
void setup() {
Serial.begin(115200);
}
void loop() {
while (1){
if(Serial.available() > 0) {
char data = Serial.read();
m=m+1;
//当接受到电脑发送的资料的时候m+1
if (New_m!=m){
stepper.setSpeed(10);
stepper.step(1);
delay(500);
New_m=m;
}
//当New_m !=m 时,则马达走1步
//之後再将New_m修改成当前m的值
Serial.print(data);
}
}
}
目前我自己做的结果
从电脑端发出讯号後
马达会自己走自己的不理会电脑的讯号
但是电脑端接收到的Arduino讯号却是正常的
想请问马达这段要修改哪边才会达到我想要的目的?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 120.105.133.228
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Electronics/M.1547286547.A.BC7.html
1F:推 Schottky: 那个while(1)是多余的,loop()本身就会不断被执行 01/12 18:55
2F:推 Schottky: 你贴在文章里的程式码和ideone上面的不一样,ideone那 01/12 19:02
3F:→ Schottky: 版有个变数 r 没有给值,所以会一直转个不停 01/12 19:02
谢谢~
刚刚试了一下之後大致正常了
只是stepper.step(1)这段
如果把1改成别的数字的话那前几次也会不听命令
刚刚测试了一下用5以下的话都会正常
可是来到10之後马达又自己转自己的了
会是因为转速跟不上资料传送的速度而导致的吗?
※ 编辑: st40182 (120.105.133.228), 01/12/2019 19:37:11
4F:→ st40182: 後来找到问题解决了~ 01/12 20:53