Отображать сообщение, когда логическое изменение в Arduino - PullRequest
0 голосов
/ 10 апреля 2020
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

Как я могу это сделать?

1 Ответ

2 голосов
/ 10 апреля 2020

Вам просто нужно сохранить последнее состояние и печатать при его изменении (и в первый раз независимо от предыдущего состояния), что-то вроде:

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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...