5.1 Lesen des Tasterwerts¶
In diesem interaktiven Projekt werden wir uns in die Welt der Tastersteuerung und LED-Manipulation begeben.
Das Konzept ist einfach, aber effektiv. Wir werden den Zustand eines Tasters lesen. Wenn der Taster gedrückt wird, registriert er ein hohes Spannungsniveau oder einen ‚hohen Zustand‘. Diese Aktion löst dann das Aufleuchten einer LED aus.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
Name |
ARTIKEL IN DIESEM KIT |
LINK |
---|---|---|
ESP32 Starter Kit |
320+ |
Sie können sie auch separat über die untenstehenden Links kaufen.
KOMPONENTENVORSTELLUNG |
KAUF-LINK |
---|---|
- |
|
Verfügbare Pins
Verfügbare Pins
Hier ist eine Liste der verfügbaren Pins auf dem ESP32-Board für dieses Projekt.
Für Eingang
IO14, IO25, I35, I34, I39, I36, IO18, IO19, IO21, IO22, IO23
Für Ausgang
IO13, IO12, IO14, IO27, IO26, IO25, IO33, IO32, IO15, IO2, IO0, IO4, IO5, IO18, IO19, IO21, IO22, IO23
Bedingte Verwendung Pins (Eingang)
Die folgenden Pins haben eingebaute Pull-up- oder Pull-down-Widerstände, sodass externe Widerstände nicht erforderlich sind, wenn sie als Eingangspins verwendet werden:
Bedingte Verwendung Pins
Beschreibung
IO13, IO15, IO2, IO4
Hochziehen mit einem 47K-Widerstand setzt den Wert standardmäßig auf hoch.
IO27, IO26, IO33
Hochziehen mit einem 4.7K-Widerstand setzt den Wert standardmäßig auf hoch.
IO32
Herunterziehen mit einem 1K-Widerstand setzt den Wert standardmäßig auf niedrig.
Strapping Pins (Eingang)
Strapping-Pins sind eine spezielle Gruppe von Pins, die verwendet werden, um bestimmte Boot-Modi während des Gerätestarts (d.h., Einschalt-Reset) zu bestimmen.
Strapping Pins
IO5, IO0, IO2, IO12, IO15
Generell wird nicht empfohlen, sie als Eingangspins zu verwenden. Wenn Sie diese Pins verwenden möchten, berücksichtigen Sie den potenziellen Einfluss auf den Boot-Vorgang. Weitere Details finden Sie im Abschnitt Strapping-Pins.
Schaltplan
Um eine ordnungsgemäße Funktionalität zu gewährleisten, verbinden Sie eine Seite des Taster-Pins mit 3,3V und die andere Seite mit IO14. Wenn der Taster gedrückt wird, wird IO14 auf hoch gesetzt, was dazu führt, dass die LED aufleuchtet. Wird der Taster losgelassen, kehrt IO14 in seinen schwebenden Zustand zurück, der entweder hoch oder niedrig sein kann. Um ein stabiles niedriges Niveau zu gewährleisten, wenn der Taster nicht gedrückt ist, sollte IO14 über einen 10K-Pull-Down-Widerstand mit GND verbunden werden.
Verdrahtung
Bemerkung
Ein Vier-Pin-Taster ist in H-Form gestaltet. Wenn der Taster nicht gedrückt ist, sind die linke und rechte Pins getrennt, und es kann kein Strom zwischen ihnen fließen. Wenn der Taster jedoch gedrückt wird, werden die linke und rechte Pins verbunden, wodurch ein Stromweg entsteht.
Code
Bemerkung
Sie können die Datei
5.1_button.ino
unter dem Pfadesp32-starter-kit-main\c\codes\5.1_button
öffnen.Nachdem Sie das Board (ESP32 Dev Module) und den entsprechenden Port ausgewählt haben, klicken Sie auf den Upload-Knopf.
Nachdem der Code erfolgreich hochgeladen wurde, leuchtet die LED auf, wenn Sie den Taster drücken, und geht aus, wenn Sie ihn loslassen.
Gleichzeitig können Sie den Seriellen Monitor in der oberen rechten Ecke öffnen, um den Wert des Tasters zu beobachten. Wenn der Taster gedrückt wird, wird „1“ gedruckt, ansonsten „0“.
Wie funktioniert das?
Die vorherigen Projekte beinhalteten alle das Ausgeben von Signalen, entweder in Form von digitalen oder PWM-Signalen.
Dieses Projekt beinhaltet das Empfangen von Eingangssignalen von externen Komponenten zum ESP32-Board. Sie können das Eingangssignal über den Seriellen Monitor in der Arduino IDE einsehen.
In der
setup()
Funktion wird der Taster-Pin alsinput
und der LED-Pin alsoutput
initialisiert. Die serielle Kommunikation wird ebenfalls mit einer Baudrate von 115200 gestartet.void setup() { Serial.begin(115200); // initialize the button pin as an input pinMode(buttonPin, INPUT); // initialize the LED pin as an output pinMode(ledPin, OUTPUT); }
Serial.begin(speed)
: Legt die Datenrate in Bits pro Sekunde (Baud) für die serielle Datenübertragung fest.speed
: in Bits pro Sekunde (Baud). Erlaubte Datentypen:long
.
In der
loop()
Funktion wird der Zustand des Tasters gelesen und in der VariablenbuttonState
gespeichert. Der Wert vonbuttonState
wird mitSerial.println()
in den Seriellen Monitor gedruckt.void loop() { // read the state of the button value buttonState = digitalRead(buttonPin); Serial.println(buttonState); delay(100); // if the button is pressed, the buttonState is HIGH if (buttonState == HIGH) { // turn LED on digitalWrite(ledPin, HIGH); } else { // turn LED off digitalWrite(ledPin, LOW); } }
Wenn der Taster gedrückt und der
buttonState
HIGH ist, wird die LED eingeschaltet, indem derledPin
aufHIGH
gesetzt wird. Andernfalls wird die LED ausgeschaltet.int digitalRead(uint8_t pin);
: Um den Zustand eines als EINGANG konfigurierten Pins zu lesen, wird die Funktion digitalRead verwendet. Diese Funktion gibt den logischen Zustand des ausgewählten Pins alsHIGH
oderLOW
zurück.pin
auswählen GPIO
Serial.println()
: Druckt Daten an den seriellen Port als lesbaren ASCII-Text, gefolgt von einem Wagenrücklaufzeichen (ASCII 13 oder ‚r‘) und einem Zeilenumbruchzeichen (ASCII 10 oder ‚n‘).