簡體   English   中英

Arduino步進電機循環怪異行為

[英]Arduino stepper motor loop weird behaviour

我在我的Arduino上使用了步進電機,並順時針旋轉它,所以我做了一個功能,可以一次打開一根電線的電壓。 這有效,但是當我將函數放入循環中時不起作用。

代碼是:

void setup() {
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);  
}

void turnRight(int delayTime) {
  for(int i; i<=4; i++){
    digitalWrite(9+i, LOW);
    digitalWrite(10+i, HIGH);  
    delay(delayTime);
  } 
}

void turnLeft(int delayTime) {
  for(int i; i<=4; i++){
    digitalWrite(14-i, LOW);
    digitalWrite(13-i, HIGH);  
    delay(delayTime);
  }    
}

void loop() {

  int p=0;
  while(p<=100){
    turnRight(25);
    p++;

  }

}

該代碼使電動機停頓,並以一種振動的方式非常快速地左右移動,這意味着電線可能以錯誤的順序接通。 但是,當我運行此代碼:

void setup() {
  pinMode(13, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(10, OUTPUT);  
}

void turnRight(int delayTime) {
  for(int i; i<=4; i++){
    digitalWrite(9+i, LOW);
    digitalWrite(10+i, HIGH);  
    delay(delayTime);
  } 
}

void turnLeft(int delayTime) {
  for(int i; i<=4; i++){
    digitalWrite(14-i, LOW);
    digitalWrite(13-i, HIGH);  
    delay(delayTime);
  }    
}

void loop() {

  int p=0;
  while(p<=100){
    turnRight(25);

  }

}

它確實可以工作,電動機運行平穩,並且不會卡死,唯一的區別是我沒有在此代碼中增加p。 使用for環會產生相同的效果,增加for環的值會使電機停頓。

在函數turnRightturnLeft ,for循環尚未使用int i=0類的特定值初始化。我認為這是引起問題的部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM