Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 3366|回復: 2
打印 上一主題 下一主題

關於步進馬達同時轉動

[複製鏈接]
跳轉到指定樓層
1#
發表於 2015-12-6 18:23:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
想請問一下大家,我目前寫出來的程式是碼達1轉完後碼達2才開始轉,但我希望的是2顆馬達同時轉動,想請問一下大家要如何修改?

以下是我的程式:

#include<Stepper.h>
const int PIRSensor = 7 ;            // 紅外線動作感測器連接的腳位
const int stepsPerRevolution1 = 2048; //馬達1一圈2048步
const int stepsPerRevolution2 = 2048; //馬達2一圈2048步
int sensorValue = 0;                 // 紅外線動作感測器訊號變數
int pos = 0;
Stepper myStepper1(stepsPerRevolution1, 8, 10, 9, 11);
Stepper myStepper2(stepsPerRevolution2, 2, 4, 3, 5);
const int pd6 = 6;      // 高
const int senRead6 = 2; // 高
const int ledr = 13;
int limit = 850;
int c = 0;


void setup() {
  pinMode(PIRSensor, INPUT);      
  myStepper1.setSpeed(5);
  myStepper2.setSpeed(6);
  Serial.begin(9600);
  pinMode(pd6,OUTPUT);
  pinMode(ledr,OUTPUT);
  digitalWrite(pd6,HIGH);
}

void loop(){

sensorValue = digitalRead(PIRSensor);  // 讀取 PIR Sensor 的狀態

if (sensorValue == HIGH && pos == 0 && c==0 ) {
delay(500) ;  
Serial.println("clockwise");
myStepper1.step(388);
myStepper2.step(-388);

pos = 388;
}

else if(sensorValue == LOW && pos == 388 && c==0)  {
delay(500);
Serial.println("counterclockwise");
myStepper1.step(-388);
myStepper2.step(388);
pos = 0;
}

int  val3 = analogRead(senRead6);  

if (val3>=limit) {
    digitalWrite(ledr,HIGH);
    c = 1;
}
else if(val3<=limit) {
   digitalWrite(ledr,LOW);
   c = 0;
  }
}
2#
發表於 2015-12-7 08:04:57 | 只看該作者
Stepper 不支援同時走多個馬達
最簡單的方法就是自己寫迴圈, 一個迴圈走一步
不然就是用 AccelStepper
自己 GOOGLE 一下 accelstepper arduino, 就可找到下載點
它就支援多馬達同時轉
3#
 樓主| 發表於 2015-12-8 19:55:10 | 只看該作者
謝謝!!  
已成功使用 AccelStepper 解決了。
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-11-23 16:25 , Processed in 0.048565 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表