当条件处于活动状态时停止arduino循环

时间:2017-01-25 18:28:16

标签: c++ if-statement while-loop arduino break

我需要我的代码在循环中停止,我试图放弃,但方法sendToGCM()继续。我只希望方法执行一次,停止条件

void loop()
{

  // Other code here giving temp a value

  if (temp > 22)
  {
    status = false;
    value["status"] = status;
    while (temp > 22)
    {
      sendToGCM(); // Sends push notification 
      break;
    }
  }
  else 
  {
    status = true;
    value["status"] = status;
  }
}

2 个答案:

答案 0 :(得分:2)

因此,如果我理解正确,如果温度达到22度你想发送信息,但只是第一次。如果您中断循环,如果再次执行from(eodRepository + "?delete=true") .filter(header("CamelFileName").regex(myPattern)) .log(DEBUG, "Decrypting file ${header.CamelFileName}") .unmarshal(pgpDataFormat) .log(DEBUG, "Processing file ${header.CamelFileName}") .unmarshal(myBusinessDataFormat) .bean(myBean, "processIt") .log(INFO, "Processed file ${header.CamelFileName}"); 函数,仍然会输入它。

为了实现您想要的目标,您的代码需要看起来像这样

loop()

如果你想在每次温度超过22度时发送信息,你需要这样的东西

boolean message_sent;

void loop() {
    ...
    if(temperature > 22 && !message_sent) {
        sendToGCM();
        message_sent = true;            
    }
}

编辑:稍微调整了代码以回应Patrick Trentin的评论。该代码假设您只想捕获温度是否超过22度,如果Arduino开始超过22度,则不会发送消息。

答案 1 :(得分:0)

您的问题是您正在设置临时值,然后进入检查该值的循环。一个简单的解决方案是更新while循环中的临时值,使应用程序有机会摆脱while循环。

示例:

void loop()
{

  // Other code here giving temp a value

  if (temp > 22)
  {
    status = false;
    value["status"] = status;
    while (temp > 22)
    {
      sendToGCM(); // Sends push notification 

      //Additional code to set the value of temp, allowing the value to
      //be greater than 22.
    }
  }
  else 
  {
    status = true;
    value["status"] = status;
  }
}

请注意,上面的示例旨在在临时值超过22时连续发送推送通知。如果这不是意图,只需从while循环中删除sendToGCM()。如果temp大于22,你仍然只会发送它,因为你有if检查。