Bemerkung
Hallo, willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Vertiefen Sie sich mit anderen Enthusiasten in die Welt von Raspberry Pi, Arduino und ESP32.
Warum beitreten?
Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Tutorials aus, um Ihre Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Sonderangebote: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Bereit, mit uns zu erkunden und zu kreieren? Klicken Sie auf [here] und treten Sie heute bei!
2.3 Digitaler Eingang¶
In diesem interaktiven Projekt erkunden wir die Verwendung digitaler Eingaben durch Tastensteuerungen, um eine LED zu steuern. Die Bedienung ist einfach, aber leistungsstark. Wir werden den Zustand einer Taste überwachen; wenn sie gedrückt wird, registriert sie ein hohes Spannungsniveau, bekannt als ‚High State‘. Diese Zustandsänderung dient als Auslöser, um eine LED zum Leuchten zu bringen. Indem Sie lernen, diesen digitalen Eingang zu lesen, gewinnen Sie ein grundlegendes Verständnis dafür, wie Mikrocontroller mit externen Geräten interagieren können. Dieses Projekt führt nicht nur in grundlegende elektronische Konzepte ein, sondern bereitet auch den Weg für komplexere Steuerungssysteme mit mehreren Eingängen und Ausgängen.
Verfügbare Pins
Verfügbare Pins
Hier ist eine Liste der verfügbaren Pins auf dem ESP32-Board für dieses Projekt.
Für Eingänge
IO14, IO25, I35, I34, I39, I36, IO18, IO19, IO21, IO22, IO23
Für Ausgänge
IO13, IO12, IO14, IO27, IO26, IO25, IO33, IO32, IO15, IO2, IO0, IO4, IO5, IO18, IO19, IO21, IO22, IO23
Bedingte Verwendungspins (Eingang)
Die folgenden Pins haben eingebaute Pull-up- oder Pull-down-Widerstände, sodass keine externen Widerstände erforderlich sind, wenn sie als Eingangspins verwendet werden:
Bedingte Verwendungspins
Beschreibung
IO13, IO15, IO2, IO4
Pull-up mit einem 47K-Widerstand setzt den Wert standardmäßig auf High.
IO27, IO26, IO33
Pull-up mit einem 4.7K-Widerstand setzt den Wert standardmäßig auf High.
IO32
Pull-down mit einem 1K-Widerstand setzt den Wert standardmäßig auf Low.
Strapping-Pins (Eingang)
Strapping-Pins sind eine spezielle Gruppe von Pins, die verwendet werden, um spezifische Boot-Modi während des Geräte-Starts (d.h. Power-on-Reset) festzulegen.
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 die möglichen Auswirkungen auf den Boot-Prozess. Weitere Einzelheiten finden Sie im Abschnitt Strapping-Pins.
Benötigte Komponenten
In diesem Projekt benötigen wir die folgenden Komponenten.
KOMPONENTEN-BESCHREIBUNG |
KAUFLINK |
|---|---|
- |
|
Breadboard |
|
Mehrere Verbindungskabel |
|
Widerstand |
|
LED |
|
Taster |
Schaltplan
Um eine ordnungsgemäße Funktion sicherzustellen, verbinden Sie eine Seite des Taster-Pins mit 3,3 V und die andere Seite mit IO14. Wenn der Taster gedrückt wird, wird IO14 auf High gesetzt, wodurch die LED aufleuchtet. Wenn der Taster losgelassen wird, kehrt IO14 in seinen schwebenden Zustand zurück, der entweder High oder Low sein kann. Um ein stabiles Low-Level zu gewährleisten, wenn der Taster nicht gedrückt wird, 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 wird, sind die linken und rechten Pins getrennt, und es kann kein Strom zwischen ihnen fließen. Wenn der Taster jedoch gedrückt wird, sind die linken und rechten Pins verbunden und bilden einen Strompfad.
Code
Laden Sie diesen Code herunter oder kopieren Sie ihn direkt in die Arduino IDE.
Bemerkung
Denken Sie daran, die serielle Kommunikationsgeschwindigkeit auf 115200 einzustellen.
Nachdem der Code erfolgreich hochgeladen wurde, leuchtet die LED auf, wenn Sie den Taster drücken, und erlischt, wenn Sie ihn loslassen.
Gleichzeitig können Sie den Serial Monitor in der oberen rechten Ecke öffnen, um den Wert des Tasters zu beobachten. Wenn der Taster gedrückt wird, wird „1“ angezeigt, andernfalls „0“.
Wie es funktioniert
Die vorherigen Projekte beinhalteten alle das Ausgeben von Signalen, entweder in Form von digitalen oder PWM-Signalen.
Dieses Projekt umfasst das Empfangen von Eingangssignalen von externen Komponenten zum ESP32-Board. Sie können das Eingangssignal über den Serial Monitor in der Arduino IDE anzeigen.
In der Funktion
setup()wird der Taster-Pin alsEingangund der LED-Pin alsAusganginitialisiert. Die serielle Kommunikation wird ebenfalls mit einer Baudrate von 115200 gestartet.void setup() { Serial.begin(115200); // initialisiere den Taster-Pin als Eingang pinMode(buttonPin, INPUT); // initialisiere den LED-Pin als Ausgang 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 Funktion
loop()wird der Zustand des Tasters gelesen und in der VariablenbuttonStategespeichert. Der Wert vonbuttonStatewird mitSerial.println()an den Serial Monitor ausgegeben.void loop() { // den Zustand des Tasters lesen buttonState = digitalRead(buttonPin); Serial.println(buttonState); delay(100); // wenn der Taster gedrückt wird, ist buttonState HIGH if (buttonState == HIGH) { // LED einschalten digitalWrite(ledPin, HIGH); } else { // LED ausschalten digitalWrite(ledPin, LOW); } }
Wenn der Taster gedrückt wird und
buttonStateHIGH ist, wird die LED durch Setzen vonledPinaufHIGHeingeschaltet. 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 alsHIGHoderLOWzurück.pin: Wählt GPIO
Serial.println(): Gibt Daten als lesbaren ASCII-Text an den seriellen Port aus, gefolgt von einem Wagenrücklaufzeichen (ASCII 13 oder ‚r‘) und einem Zeilenumbruchzeichen (ASCII 10 oder ‚n‘).