Arduino步进电机回路奇怪的行为

时间:2016-05-21 18:29:17

标签: c++ arduino

我正在使用步进电机和我的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循环值会使电机断断续续。

1 个答案:

答案 0 :(得分:2)

在函数turnRightturnLeft中,for循环尚未使用特定值int i=0进行初始化。我认为这是导致问题的部分。