我不经常与Arduino合作,所以我还是有点新鲜的。请耐心等待。
我正在开展一个项目,我在Arduino的帮助下制作了一个小型爬行机器人。现在为了改进这个项目,我决定创建一个允许我让机器人爬行或停止的应用程序,具体取决于我点击的按钮。
但在我真正将其连接到应用程序之前,我需要我的代码才能使用串行监视器。这是我遇到问题的地方。
当我输入值' 1'在我的串行监视器中,我希望机器人不断开始爬行,直到我输入值' 0'。现在,它显然不会这样做,因为for-statement不在一起循环。然而,当我将for语句放在一个循环中时,它会保持循环,但是我不能通过输入值' 0'来打破循环。
我想知道是否有一种方法可以让它循环爬行动作,但是在输入不同的值时能够打破循环。提前谢谢!
我的代码:
#include <Servo.h>
Servo servoFront;
Servo servoBack;
void setup() {
Serial.begin(9600);
pinMode(10, OUTPUT);
pinMode(9, OUTPUT);
servoFront.attach(10);
servoBack.attach(9);
digitalWrite(10, LOW);
digitalWrite(9, LOW);
}
int posF = 70;
int posB = 40;
void loop() {
while (Serial.available() == 0);
int val = Serial.read() - '0';
if (val == 1) {
Serial.println("The bot is ON!");
digitalWrite(10, HIGH);
digitalWrite(9, HIGH);
for(posF = 70; posF <= 120; posF += 1)
{
servoFront.write(posF);
delay(10);
}
for(posB = 40; posB <= 90; posB += 1)
{
servoBack.write(posB);
delay(10);
}
for(posF = 120; posF >= 70; posF -= 1)
{
servoFront.write(posF);
delay(10);
}
for(posB = 90; posB >= 40; posB -= 1)
{
servoBack.write(posB);
delay(10);
}
}
else if (val == 0) {
Serial.println("The bot is OFF!");
digitalWrite(10, LOW);
digitalWrite(9, LOW);
}
else {
Serial.println("Error!");
}
}