Robofun 機器人論壇

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

步進馬達-外部中斷

[複製鏈接]
跳轉到指定樓層
1#
發表於 2013-3-25 16:46:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
各位大家好:最近在寫Arduino控制兩顆馬達時,碰到一些小問題,我想用極限開關使馬達訊號中斷,是否應該使用attachInterrupt()函數來寫?
還有我對Arduino的函示庫也不是很瞭解,我的程式裡面"steps"是指馬達每轉一圈所需的步數,不知道我這樣說是否有誤?
但如果我已經接了一顆馬達驅動器,而馬達驅動器可以切的步數是500步,那兩個之間是否有衝突?若我將steps改成500會造成馬達左右晃動。
還是說有接馬達驅動器的話,用Arduino的函式庫來寫根本就是錯的?
而我要加極限開關,使用attachInterrupt()函數,其中stateChange()裡的程式該如何編寫?
在我用parseInt()函數時,我輸入兩個數字並且用逗號隔開會有一個問題,當我輸入200,100時,Arduino串口會讀不到數值,當我輸入200,100,時,多一個逗號Arduino,就能讀到輸入之數值,為什麼會有這樣子的情況?
以下是我的程式碼:
#include <Stepper.h>
const int steps = 200;
int step1,step2;
Stepper myStepper1(steps,8,9);
Stepper myStepper2(steps,5,6);
const int sensorPin = 0;
const int limitPin = 0;
const int ledPin = 13;
volatile int limitState ;
void setup(){
  pinMode(limitPin,INPUT);
  Serial.begin(9600);
attachInterrupt(limitPin,stateChange,CHANGE);
}
void loop(){
  int value = analogRead(sensorPin);
  limitState = analogRead(limitPin);
  int motorSpeed = map(value,0,1023,0,100);
  if (motorSpeed > 0 ){
    myStepper1.setSpeed(motorSpeed);
    myStepper2.setSpeed(motorSpeed);
        while ( Serial.available() > 0){
        step1 = Serial.parseInt();
        delay(2);
        step2 = Serial.parseInt();
        delay(2);
      if (Serial.read() == ','){     
         myStepper1.step(step1);
         myStepper2.step(step2);


      Serial.println(step1);
      Serial.println(step2);
      }
      }      
  }
  }


void stateChange(){
  step1=0;
  step2=0;


}


謝謝大家幫忙!
2#
發表於 2013-3-31 12:41:25 | 只看該作者
回復 1# milk1152


   >> 碰到一些小問題,我想用極限開關使馬達訊號中斷,是否應該使用attachInterrupt()函數來寫?
如果是用極限開關使馬達切斷電源,是不需要使用attachInterrupt()函數來寫
有關步進馬達請看我發表的文章用Arduino控制一顆步進馬達!
http://www.robofun.net/forum/viewthread.php?tid=6893
------------------------------------
用Arduino控制三顆步進馬達!
http://www.robofun.net/forum/viewthread.php?tid=6905
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2025-1-31 20:01 , Processed in 0.316822 second(s), 7 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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