c-当Arduino中的布尔值发生变化时显示消息


void loop() {
if(digitalRead(ACLED_Pin) == HIGH) {
Serial.println("AC: ON");
}else{
Serial.println("AC: OFF");
}
}

你好,我的aduino中有这段代码,但我只想在布尔digitalRead(ACLED_Pin(更改时显示消息。现在我有以下消息:

AC: OFF
AC: OFF
AC: OFF
AC: ON
AC: ON
AC: OFF
AC: OFF

我想要:

AC: OFF
AC: ON
AC: OFF
AC: ON

我该怎么做?

您只需要保留最后一个状态,并在它更改时打印(无论以前的状态如何,都是第一次打印(,类似于:

void loop() {
// Statics initialised only once, then they hold value.
static bool first = true;
static int last = HIGH;
// Get current digital input value, act if first or changed.
int curr = digitalRead(ACLED_Pin);
if (first || (curr != last)) {
Serial.println(curr ? "AC: ON" : "AC: OFF");
// Changed (or first), clear first and remember new state.
last = curr;
first = false;
}
}

最新更新