【问题标题】:arduino how stop return 'else' valuearduino 如何停止返回“其他”值
【发布时间】:2017-09-04 03:43:36
【问题描述】:

我在 arduino 中使用“if-else”进行串行通信。我正在使用串行通信在“if”和“else”部分发送数据。但我不能停止在串行通信部分发送数据。如何提供?

例如

void setup() {
   Serial.begin(9600);
   pinMode(2, INPUT);
}
 void loop() {
   if (Serial.avaliable() > 0) {

        if (digitalRead(2) == HIGH)
        {
          Serial.print("Yes");
        }
        else {
          Serial.print("No");
        }
      }
  }

当我将数字 5 分配给数字引脚 2 时,“是”连续流过串行端口。我知道它在“循环”部分。但是我该如何阻止呢?那么当我给相关的引脚 5v 时,我能得到一个响应吗? (抱歉英语不好)

【问题讨论】:

    标签: if-statement arduino serial-port communication


    【解决方案1】:

    将您的状态保存到 volatile global variable 并仅在状态更新时打印。

    【讨论】:

      【解决方案2】:

      这是因为循环函数被称为无限时间。 你有两个选择:

      1.将代码从循环移动到设置,并让循环函数为空

          void setup() {
             Serial.begin(9600);
             pinMode(2, INPUT);
             if (Serial.avaliable() > 0) {
      
              if (digitalRead(2) == HIGH)
              {
                Serial.print("Yes");
              }
              else {
                Serial.print("No");
              }
            }
          }
          void loop() {
      
          }
      

      2.添加一些这样的控制逻辑

      boolean alreadySent = false;
      void setup() {
         Serial.begin(9600);
         pinMode(2, INPUT);
      }
       void loop() {
         if (Serial.avaliable() > 0) {
          if(alreadySent == false) {
      
              if (digitalRead(2) == HIGH)
              {
                Serial.print("Yes");
              }
              else {
                Serial.print("No");
              }
      
              alreadySent = true;
              }
            }
           }
      

      【讨论】:

        猜你喜欢
        • 2014-05-30
        • 1970-01-01
        • 2019-07-21
        • 1970-01-01
        • 2014-03-20
        • 2018-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多