Arduino - 通过改变值来打破IF语句中的循环

时间:2017-01-06 02:22:25

标签: loops arduino break arduino-ide

我不经常与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!");
  }
}

0 个答案:

没有答案