gpt4 book ai didi

c++ - Arduino步进电机循环怪异行为

转载 作者:行者123 更新时间:2023-11-28 02:06:08 24 4
gpt4 key购买 nike

我在我的 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 这样的特定值被初始化。我认为这是引起问题的部分。

关于c++ - Arduino步进电机循环怪异行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37366622/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com