[英]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環的值會使電機停頓。
在函數turnRight
和turnLeft
,for循環尚未使用int i=0
類的特定值初始化。我認為這是引起問題的部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.