[問題] 關於使用Arduino 控制步進馬達

看板Electronics作者時間7年前 (2019/01/12 17:49), 7年前編輯推噓2(202)
留言4則, 2人參與, 7年前最新討論串1/1
大家好 想請教一下使用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://www.ptt.cc/bbs/Electronics/M.1547286547.A.BC7.html

01/12 18:55, 7年前 , 1F
那個while(1)是多餘的,loop()本身就會不斷被執行
01/12 18:55, 1F

01/12 19:02, 7年前 , 2F
你貼在文章裡的程式碼和ideone上面的不一樣,ideone那
01/12 19:02, 2F

01/12 19:02, 7年前 , 3F
版有個變數 r 沒有給值,所以會一直轉個不停
01/12 19:02, 3F
謝謝~ 剛剛試了一下之後大致正常了 只是stepper.step(1)這段 如果把1改成別的數字的話那前幾次也會不聽命令 剛剛測試了一下用5以下的話都會正常 可是來到10之後馬達又自己轉自己的了 會是因為轉速跟不上資料傳送的速度而導致的嗎? ※ 編輯: st40182 (120.105.133.228), 01/12/2019 19:37:11

01/12 20:53, 7年前 , 4F
後來找到問題解決了~
01/12 20:53, 4F
文章代碼(AID): #1SERWJl7 (Electronics)