组合循环在Arduino中不起作用

时间:2015-04-18 11:58:37

标签: loops if-statement arduino arduino-uno

我有一个arduino代码正在执行这样的任务:

while (a=='A')
{
   //do the task A
}

while (a=='B')
{
   //do the task B
}

这些循环在单独运行时正确运行。但是当我尝试组合两个循环时,问题就出现了,

void loop ()
{
   while (a=='A')
   {
     //do the task A
   }

   while (a=='B')
   {
     //do the task B
   }
}

以下是完整详细信息的代码:

void loop()                  
{
  ////// admin
  Serial.println("A or B");
  delay(500);
  char a = userinput();
  delay(500);
  while(a== 'A'){
    Serial.println("Type Your Starting ID Number...");
    while(1 ){
      while (Serial.available()==false);
      char e = Serial.read();
      if(isdigit(e)==false) break;
      startid = (startid*10)+(e - 48);
    }
    if(startid<=endid){
      for(pageid=startid; pageid<=endid; pageid++)
      {
        Serial.print("Your Biometric ID # is ");
        Serial.println(pageid);
        delay(2000);
        fingerenrollment(pageid);
        delay(2000);
        if(pageid == endid){
          Serial.println("......Memory Is Full....");    
          while(1);
        }
      }
    }
    else{
      Serial.println("Wrong Entry.......Please Reset Your Device.....");
      while(1);
    }
  } 
  ////// user
  while(a=='B'){
    lcd.print("WELCOME TO iPoll");
    delay(2000);
    lcd.clear();
    lcd.print("Place Your Thumb");
    delay(2000);
    lcd.clear();
    tempid = '\0';
    Serial.println("Place your Thumb For Authentication");
    delay(500);
    while(true){
      ID = fingerauthentication();
      delay(500);
      if(tempid != '\0') break;
    }
    delay(100);
    resp = userinput();
    delay(100);  
    lcd.clear();  
    datatrans(ID, resp);
  }
}

如果您需要更多帮助,我就在这里。只是评论。

2 个答案:

答案 0 :(得分:0)

你似乎被困在无限循环中。尝试将while(a=='A')while(a=='B')更改为if(a =='A')和if(a =='B')。 Arduino中的void loop()方法自动就像一个无限的while循环,循环遍历其中的代码。

答案 1 :(得分:0)

while (a == 'A')循环永远不会结束,因为您永远不会更改a的值。您需要在代码中的某个地方使用a = something;,或者执行@Dan12-16所说的内容。这同样适用于'B'

以及一些使您的代码更易于阅读的提示(在我看来)。您可以使用if (condition == false),而不是使用if (!condition)。选择while (1)while (true),但不要混用它们(我会选择第二个)。