gpt4 book ai didi

c - 移动机器人设置步数(Arduino)

转载 作者:太空宇宙 更新时间:2023-11-03 23:53:31 25 4
gpt4 key购买 nike

我想让我的机器人移动一定的步数,然后让它停下来。然而,循环似乎无限地运行。我使用 void loop() 的方式或者我编写“for”循环的方式是否有错误?

    // walkerForward.pde - Two servo walker. Forward.
// (c) Kimmo Karvinen & Tero Karvinen http://BotBook.com
// updated - Joe Saavedra, 2010
#include <Servo.h>

Servo frontServo;
Servo rearServo;
int centerPos = 90;
int frontRightUp = 75;
int frontLeftUp = 120;
int backRightForward = 45;
int backLeftForward = 135;

void moveForward(int steps)
{
for (int x = steps; steps > 0; steps--) {
frontServo.write(centerPos);
rearServo.write(centerPos);
delay(100);
frontServo.write(frontRightUp);
rearServo.write(backLeftForward);
delay(100);
frontServo.write(centerPos);
rearServo.write(centerPos);
delay(100);
frontServo.write(frontLeftUp);
rearServo.write(backRightForward);
delay(100);
}
}


void setup()
{
frontServo.attach(2);
rearServo.attach(3);
}

void loop()
{
moveForward(5);
}

最佳答案

loop() 函数在无限循环中执行(如果您检查 Arduino IDE 附带的主 cpp 文件,您会看到类似这样的内容:

int main()
{
setup();
for (;;) {
loop();
}
return 0;
}

因此,要么将对 moveForward() 函数的调用放到 setup() 中,并使 loop() 成为一个空函数,要么调用exit(0);moveForward() 之后的 loop() 中。第一种方法如下所示:

void setup()
{
frontServo.attach(2);
rearServo.attach(3);

moveForward(5);
}

void loop()
{
}

第二个看起来像这样:

void setup()
{
frontServo.attach(2);
rearServo.attach(3);
}

void loop()
{
moveForward(5);
exit(0);
}

关于c - 移动机器人设置步数(Arduino),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13962636/

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