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+

ESP32 Starter Kit

Sie können sie auch separat über die untenstehenden Links kaufen.

KOMPONENTENVORSTELLUNG

KAUF-LINK

ESP32 WROOM 32E

BUY

ESP32-Kameraerweiterung

-

Steckbrett

BUY

Überbrückungsdrähte

BUY

Widerstand

BUY

LED

BUY

Taste

BUY

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

../../_images/circuit_5.1_button.png

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

../../_images/5.1_button_bb.png

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 Pfad esp32-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.

  • „Unbekanntes COMxx“ wird immer angezeigt?

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“.

../../_images/button_serial.png

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.

  1. In der setup() Funktion wird der Taster-Pin als input und der LED-Pin als output 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.

  2. In der loop() Funktion wird der Zustand des Tasters gelesen und in der Variablen buttonState gespeichert. Der Wert von buttonState wird mit Serial.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 der ledPin auf HIGH 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 als HIGH oder LOW 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‘).