我怎样才能在串口监视器上只打印一次

How can i print something on the serial monitor only once

我有一个按钮连接到我的 arduino 板上,我希望串行监视器在按下按钮时显示已按下,在未按下按钮时显示为已松开。 我的问题是我希望它只打印一次但是使用我的代码它会不停地打印它。 我已经尝试在 void setup 中编写代码,但我似乎无法让它工作。 有没有人有什么建议? 非常感谢您的帮助。

const int pinButton = 8;

void setup() {
  pinMode(pinButton, INPUT);
  Serial.begin(9600);
}

void loop() {
  int stateButton = digitalRead(pinButton);
  if(stateButton == 1) {
     Serial.println("PRESSED"); 
  } else {
     Serial.println("RELEASED"); 
  }
  delay(20);
}

这是我对堆栈溢出的第一个回答。 无论如何,我建议的解决方案是将按钮的先前状态保存在另一个变量中,将其与新状态进行比较,如果它们不同则打印消息,否则不打印。 这是一个代码示例:

const int pinButton = 8;
int previous_state;

void setup() {
   pinMode(pinButton, INPUT);
   Serial.begin(9600);
   previous_state = digitalRead(pinButton);
}

void loop() {
    int new_state = digitalRead(pinButton);
    if(new_state == 1 && previous_state==0) {
       Serial.println("PRESSED"); 
    } if(new_state == 0 && previous_state==1) {
       Serial.println("RELEASED"); 
    }
    previous_state=new_state;
    delay(20);
}

这不是最佳解决方案,但应该可行。检查 Arduino 上的中断,看看如何做得更好。