arduino如何停止返回'否则'值

时间:2017-04-08 21:14:38

标签: if-statement arduino serial-port communication

我使用' if-else'在arduino中进行串行通信。我正在发送数据,如果'和'其他'使用串行通信的部分。但我不能停止在串行通信部分发送数据。我该如何提供?

例如

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时,我能得到一个响应吗? (抱歉英语不好)

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

这是因为循环功能称为无限时间。 您有两种选择:

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;
        }
      }
     }