我正在使用步进电机和我的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循环值会使电机断断续续。
答案 0 :(得分:2)
在函数turnRight
和turnLeft
中,for循环尚未使用特定值int i=0
进行初始化。我认为这是导致问题的部分。