Bemerkung

Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.

Warum beitreten?

  • Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.

  • Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.

  • Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.

  • Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.

  • Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.

👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!

1.10 Zustandsänderungserkennung

Überblick

Wenn Sie die Taste verwenden, können Sie nicht nur die Taste drücken, die LED aufleuchten lassen, die Taste loslassen, die LED ausschalten, sondern auch den Betriebszustand der LED bei jedem Drücken der Taste ändern. Um diesen Effekt zu erzielen, müssen Sie wissen, wann sich der Zustand der Schaltfläche von Aus zu Ein ändert , d . h. „Zustandsänderungserkennung“. In dieser Lektion werden wir die Ergebnisse der Zustandsänderungserkennung der Schaltfläche im seriellen Monitor drucken.

Erforderliche Komponenten

../_images/list_1.10.png

Fritzing-Schaltung

In diesem Beispiel verwenden wir Pin 2, um das Signal des Tasters zu lesen.

../_images/image40.png

Schematische Darstellung

../_images/image412.png

Code

Bemerkung

  • Sie können die Datei 1.10_stateChangeDetection.ino unter dem Pfad sunfounder_vincent_kit_for_arduino\code\1.10_stateChangeDetection direkt öffnen.

  • Oder kopieren Sie diesen Code in Arduino IDE.

Nachdem die Codes in das Mega2560-Board hochgeladen wurden, wechselt die Ausgangsnummer jedes Mal zwischen 0 und 1, wenn Sie die Taste drücken.

Code-Analyse

Deklarieren Sie einen Pin, der mit Button verbunden ist.

const int  buttonPin = 2;

Deklarieren Sie eine Variable namens 「detectionState」, um jeden Zustand der Zustandsänderungserkennung aufzuzeichnen.

int detectionState = 0;

Deklarieren Sie zwei Variablen, um den Zustand der Schaltfläche zur Zustandsänderungserkennung zu lesen.

int buttonState = 0;
int lastButtonState = 0;

Initialisieren Sie in setup() die Pins und starten Sie dann den seriellen Monitor.

pinMode(buttonPin, INPUT);
Serial.begin(9600);

Lesen Sie in loop() den Wert von buttonPin und weisen Sie ihn dann der Variablen buttonState zu.

buttonState = digitalRead(buttonPin);

Vergleichen Sie buttonState mit lastButtonState, wenn sie nicht gleich sind, zeigt dies an, dass der Zustand geändert wurde. Eine Verzögerung (50) wird benötigt, um eine Entprellung während der Änderungserkennung zu realisieren. Weisen Sie nach dem Vergleich den buttonState lastButtonState zu, um die nächste Beurteilungsrunde durchzuführen.

if (buttonState != lastButtonState) {
...
    delay(50);
}
lastButtonState = buttonState;

Die Zustandsänderungsbeurteilung ist installiert (buttonState != lastButtonState), die weitere Beurteilung wird durchgeführt, um die Bedingung zu erhalten「Press the button」.

if (buttonState == HIGH) {
...
    }

Unter dem Zustand「Taste drücken」 wird der DetectionState ausgeführt und wechselt zwischen 1 und 0. Währenddessen wird der Wert des DetectionState gedruckt.

detectionState=(detectionState+1)%2;
Serial.print("The detection state is:");
Serial.println(detectionState);

Phänomen Bild

../_images/image413.png