我有一个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);
}
}
如果您需要更多帮助,我就在这里。只是评论。
答案 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)
,但不要混用它们(我会选择第二个)。