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