ESP8266 - Taster
Dieses Tutorial zeigt dir, wie man ESP8266 mit einem Knopf verwendet. Im Detail werden wir lernen:
Wie man den Taster mit dem ESP8266 verbindet.
Wie man den ESP8266 programmiert, um den Zustand des Tasters zu lesen.
Wie man den ESP8266 programmiert, um das Drücken und Loslassen des Tasters zu erkennen.
Wie man das Problem des schwebenden Eingangs bei der Verwendung des Tasters mit dem ESP8266 verhindert.
Wie man das Prellen des Tasters bei der Verwendung des ESP8266 verhindert.
Der Knopf ist auch unter anderen Bezeichnungen bekannt, zum Beispiel Druckknopf, Taster oder Momentanschalter. Es ist ein gängiges Bauteil, das in vielen ESP8266-Projekten verwendet wird und einfach zu bedienen ist. Allerdings kann es für Anfänger aufgrund seiner mechanischen, physischen Eigenschaften und der Art und Weise, wie es verwendet werden kann, verwirrend sein. Dieses Tutorial erleichtert Anfängern den Einstieg.
Oder Sie können die folgenden Kits kaufen:
Offenlegung: Einige der in diesem Abschnitt bereitgestellten Links sind Amazon-Affiliate-Links. Wir können eine Provision für Käufe erhalten, die über diese Links getätigt werden, ohne zusätzliche Kosten für Sie. Wir schätzen Ihre Unterstützung.
Beim Arbeiten mit einem Button treten bei Anfängern häufig zwei Probleme auf:
1. Schwebendes Eingangsproblem:.
Symptom: Der Wert, der vom Eingangspin gelesen wird, entspricht nicht dem Zustand des Tastendrucks.
Cause: An dem Eingangspin wird kein Pull-up- oder Pull-down-Widerstand verwendet.
Solution: Verwenden Sie einen Pull-up- oder Pull-down-Widerstand gemäß den Anweisungen in diesem Tutorial.
2. Chattering-Phänomen:.
Symptom: Obwohl er nur einmal gedrückt wird, registriert der ESP8266-Code mehrere Tastendrücke.
Ursache: Der Zustand des Knopfs (oder Schalters) oszilliert aufgrund mechanischer und physikalischer Probleme rasch zwischen LOW und HIGH.
Dies ist ein Faktor, der nur bei Anwendungen berücksichtigt werden sollte, die eine präzise Betätigungserkennung erfordern.
※ Notiz:
Verwechseln Sie den Knopf nicht mit dem Folgenden:
Es gibt verschiedene Arten von Drucktasten, die grob in zwei Gruppen eingeteilt werden können:
Dennoch sind diese Pins intern paarweise verbunden. Daher müssen wir nur zwei der vier Pins verwenden, die intern nicht miteinander verbunden sind.
Es gibt vier Möglichkeiten, den Knopf anzuschließen, von denen zwei symmetrisch sind (wie im Bild zu sehen).
Warum hat ein Knopf vier Pins, obwohl wir nur zwei davon verwenden?
Um sicherzustellen, dass es fest auf der Leiterplatte montiert ist und dem Druck standhalten kann.
image source: diyables.io
GND: Verbinde diesen Pin mit der Masse.
VCC: Verbinde diesen Pin mit einer 3,3-V-Spannungsversorgung.
OUT: Verbinde diesen Pin mit einem digitalen Eingang am ESP8266.
Mit dieser Konfiguration gibt das Modul LOW aus, wenn der Taster nicht gedrückt ist, und gibt HIGH aus, wenn der Taster gedrückt ist.
Wenn der Knopf nicht gedrückt ist, ist Pin A nicht mit Pin B verbunden.
Wenn der Knopf gedrückt wird, ist Pin A mit Pin B verbunden.
Der Pin eines Tasters ist entweder mit VCC oder GND verbunden. Der andere Pin ist mit einem Pin des ESP8266 verbunden. Durch das Prüfen des Zustands eines ESP8266-Pins, der als Eingang konfiguriert ist, können wir feststellen, ob der Taster gedrückt wurde oder nicht.
Die Verbindung zwischen dem Knopf und dem ESP8266 sowie die Konfiguration des Pins des ESP8266 bestimmen die Beziehung zwischen dem Knopfzustand und dem Drückzustand.
Es gibt zwei Möglichkeiten, einen Knopf mit dem ESP8266 zu verwenden:
Der Pin eines Tasters ist mit VCC verbunden, der andere ist mit einem Pin des ESP8266 verbunden, mit einem Pull-Down-Widerstand
Wenn der Taster gedrückt wird, ist der Zustand des ESP8266-Pins HIGH. Andernfalls ist der Zustand LOW
Wir können entweder einen internen oder externen Widerstand verwenden. Der interne Widerstand ist bereits im ESP8266 integriert und kann über den ESP8266-Code konfiguriert werden.
Der Pin eines Tasters ist mit GND verbunden, der andere ist mit einem Pin des ESP8266 verbunden, mit einem Pull-Up-Widerstand
Wenn der Taster gedrückt wird, wird der Pin-Zustand des ESP8266 LOW sein. Andernfalls HIGH
Wir können entweder einen internen oder externen Widerstand verwenden. Der interne Widerstand ist bereits im ESP8266 integriert und kann über den ESP8266-Code konfiguriert werden.
※ Notiz:
Wenn wir nicht der besten Praxis folgen, ist der Zustand des Eingangspins “schwebend”, wenn der Knopf NICHT gedrückt wird. Das bedeutet, der Zustand kann HIGH oder LOW sein (instabil, nicht festgelegt), was zu einer falschen Erkennung führt.
Die schlechteste Praxis: Initialisiert den ESP8266-Pin als Eingang (durch die Verwendung von pinMode(BUTTON_PIN, INPUT)) und verwendet KEINE externen Pull-Down-/Pull-Up-Widerstände.
Die beste Praxis: Initialisiert den ESP8266-Pin als internen Pull-Up-Eingang (durch die Verwendung von pinMode(BUTTON_PIN, INPUT_PULLUP)). Dabei müssen KEINE externen Pull-Down-/Pull-Up-Widerstände verwendet werden.
Um der Einfachheit willen verwendet dieses Tutorial den einfachsten Ansatz: Den ESP8266-Pin als internen Pull-Up-Eingang initialisieren, ohne einen externen Widerstand zu verwenden. Anfänger müssen sich keine Sorgen darüber machen, den Pull-Up-/Pull-Down-Widerstand anzuschließen. Alles, was sie tun müssen, ist den ESP8266-Code zu schreiben.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Weitere Informationen finden Sie unter ESP8266-Pinbelegung und wie man ESP8266 und andere Komponenten mit Strom versorgt.

Dieses Bild wurde mit Fritzing erstellt. Klicken Sie, um das Bild zu vergrößern.
Verwenden Sie die Funktion
pinMode(), um den ESP8266-Pin auf einen internen Pull-Up-Eingang zu setzen. Zum Beispiel Pin D7:
pinMode(D7, INPUT_PULLUP);
Greifen Sie auf den Zustand des ESP8266-Pins zu, indem Sie die Funktion
digitalRead() verwenden.
int button_state = digitalRead(BUTTON_PIN);
※ Notiz:
Zwei gängige Anwendungsfälle stehen zur Verfügung:
Der erste besteht darin, eine Aktion auszuführen, wenn der Eingangszustand HIGH ist, und im Gegenzug etwas zu tun, wenn der Eingangszustand LOW ist.
Der zweite besteht darin, eine Aktion auszuführen, wenn sich der Eingangszustand von LOW auf HIGH (oder HIGH auf LOW) ändert.
Je nach Anwendung wählen wir einen von ihnen aus. Zum Beispiel, wenn wir einen Knopf verwenden möchten, um eine LED zu steuern:
Wenn die LED eingeschaltet sein soll, wenn der Knopf gedrückt ist, und ausgeschaltet, wenn der Knopf nicht gedrückt ist, sollte der erste Anwendungsfall verwendet werden.
Wenn das Ziel ist, dass die LED bei jedem Drücken des Knopfes zwischen EIN und AUS wechselt, sollte der zweite Anwendungsfall angewendet werden.
const int BUTTON_PIN = D7;
int prev_button_state = HIGH;
int button_state;
void setup() {
Serial.begin(9600);
pinMode(BUTTON_PIN, INPUT_PULLUP);
}
void loop() {
button_state = digitalRead(BUTTON_PIN);
if(prev_button_state == LOW && button_state == HIGH)
Serial.println("The state changed from LOW to HIGH");
prev_button_state = button_state;
}
Um mit dem ESP8266 in der Arduino-IDE zu beginnen, befolgen Sie diesen Schritten:
Verdrahte die Bauteile wie im Diagramm gezeigt.
Schließe das ESP8266-Board mit einem USB-Kabel an deinen Computer an.
Öffne die Arduino IDE auf deinem Computer.
Wähle das richtige ESP8266-Board aus, z. B. NodeMCU 1.0 (ESP-12E Module), und seinen jeweiligen COM-Port.
Verbinde das ESP8266-Board über ein USB-Kabel mit deinem Computer.
Starte die Arduino IDE und wähle das richtige Board und den richtigen Port aus.
Kopiere den untenstehenden Code und öffne ihn in der Arduino IDE.
#define BUTTON_PIN D7
void setup() {
Serial.begin(9600);
pinMode(BUTTON_PIN, INPUT_PULLUP);
}
void loop() {
int button_state = digitalRead(BUTTON_PIN);
Serial.println(button_state);
}
Öffne den seriellen Monitor.
Drücke den Knopf mehrmals und lasse ihn los.
Schau dir das Ergebnis im seriellen Monitor an.
1 ist HOCH. 0 ist NIEDRIG.
Schau dir die Zeilen-für-Zeile-Erklärung an, die in den Kommentaren des Quellcodes enthalten ist!
Lassen Sie uns den Code so ändern, dass er erkennen kann, wann ein Drücken- und Loslassen-Ereignis auftritt.
Verdrahten Sie die Komponenten gemäß dem Diagramm.
Schließen Sie das ESP8266-Board über ein USB-Kabel an Ihren Computer an.
Öffnen Sie die Arduino-IDE auf Ihrem Computer.
Wählen Sie das richtige ESP8266-Board aus, zum Beispiel NodeMCU 1.0 (ESP-12E-Modul), und den jeweiligen COM-Port.
Passen Sie den Code wie folgt an:
#define BUTTON_PIN D7
int prev_button_state = LOW;
int button_state;
void setup() {
Serial.begin(9600);
pinMode(BUTTON_PIN, INPUT_PULLUP);
}
void loop() {
button_state = digitalRead(BUTTON_PIN);
if (prev_button_state == HIGH && button_state == LOW)
Serial.println("The button is pressed");
else if (prev_button_state == LOW && button_state == HIGH)
Serial.println("The button is released");
prev_button_state = button_state;
}
Öffne den seriellen Monitor.
Drücke den Knopf und halte ihn gedrückt.
Lass den Knopf los und beobachte das Ergebnis im seriellen Monitor.
The button is pressed
The button is released
※ Notiz:
Auch wenn Sie den Knopf nur einmal drücken und loslassen, kann die Ausgabe im seriellen Monitor mehrere gedrückte und losgelassene Ereignisse anzeigen. Dies ist das erwartete Verhalten des Knopfes. Dies wird als das "Prellungsphänomen" bezeichnet. Für weitere Informationen verweisen Sie bitte auf das ESP8266 - Button Debounce Tutorial.
※ Notiz:
Wenn Sie das
Taster-Modul verwenden, setzen Sie den Pin mithilfe von
pinMode(BUTTON_PIN, INPUT) in den Eingangsmodus. Mit dieser Einrichtung gibt das Modul
LOW aus, wenn der Taster nicht gedrückt ist, und
HIGH, wenn der Taster gedrückt ist.
Wir erwägen die Erstellung von Video-Tutorials. Wenn Sie Video-Tutorials für wichtig halten, abonnieren Sie bitte unseren YouTube-Kanal , um uns zu motivieren, die Videos zu erstellen.
Wenn der Knopf gedrückt wird, schalten Sie die LED ein.
Wenn der Knopf nicht gedrückt wird, schalten Sie die LED aus.
Jedes Mal, wenn der Knopf gedrückt wird, schalten Sie die LED zwischen EIN und AUS.
In welchen Fällen sollten wir keinen Pull-down- bzw. Pull-up-Widerstand für einen Eingangspin verwenden? 2. Wann sollten wir keinen Pull-down-/Pull-up-Widerstand für einen Eingangspin verwenden?
Wenn der Sensor entweder geschlossene oder offene Zustände hat, ist ein Pull-up- oder Pull-down-Widerstand erforderlich, damit diese Zustände niedrig bzw. hoch werden. Beispiele für solche Sensoren sind Taster, Schalter, Magnetschalter (Türsensor).
Auf der anderen Seite hat der Sensor zwei definierte Spannungspegel (niedrig und hoch); dann ist ein Pull-up- oder Pull-down-Widerstand nicht erforderlich. Beispiele für solche Sensoren sind Bewegungssensoren und Berührungssensoren.