In diesem Tutorial zeigen wir Ihnen, wie Sie PWM-Signale mit dem ESP32 mit Arduino IDE generieren. Als Beispiel bauen wir eine einfache Schaltung, die eine LED mit dem LED PWM Controller des ESP32 dimmt. Wir zeigen Ihnen auch, wie Sie dasselbe PWM-Signal auf verschiedenen GPIOs gleichzeitig erhalten können.
Bevor Sie mit diesem tutorial sollten Sie das ESP32-add-on installiert ist in Ihrem Arduino-IDE., Befolgen Sie eines der folgenden Tutorials, um den ESP32 auf der Arduino IDE zu installieren, falls Sie dies noch nicht getan haben.
- Installation des ESP32-Boards in Arduino IDE (Windows-Anleitung)
- Installation des ESP32-Boards in Arduino IDE (Mac-und Linux-Anleitung)
Wir empfehlen außerdem, sich die folgenden Ressourcen anzusehen:
- Erste Schritte mit ESP32 Dev Module
- ESP32 Pinout Reference: Welche GPIO-Pins sollten Sie verwenden?
Sehen Sie sich das Video-Tutorial an
Dieses Tutorial ist im Videoformat (siehe unten) und im schriftlichen Format verfügbar (lesen Sie weiter).,
Teile erforderlich
Um diesem Tutorial zu folgen, benötigen Sie diese Teile:
- ESP32 DOIT DEVKIT V1 Board – Lesen Sie die besten ESP32 development Boards
- 3x 5mm LED
- 3x 330 Ohm Widerstand
- Breadboard
- Jumper Drähte
Sie können die links oder gehen Sie direkt zu MakerAdvisor.com/tools um alle Teile für Ihre Projekte zum besten Preis zu finden!,
ESP32 LED PWM Controller
Die ESP32 hat eine LED PWM controller mit 16 unabhängige kanäle, die konfiguriert werden können, um erzeugen PWM signale mit verschiedenen eigenschaften.
Hier sind die Schritte, die Sie befolgen müssen, um eine LED mit PWM mit der Arduino IDE zu dimmen:
1. Zuerst müssen Sie einen PWM-Kanal wählen. Es gibt 16 Kanäle von 0 bis 15.
2. Dann müssen Sie die PWM-Signalfrequenz einstellen. Für eine LED ist eine Frequenz von 5000 Hz in Ordnung.
3., Sie müssen auch die Einschaltzeitauflösung des Signals einstellen: Sie haben Auflösungen von 1 bis 16 Bit. Wir verwenden eine 8-Bit-Auflösung, dh Sie können die LED-Helligkeit mit einem Wert von 0 bis 255 steuern.
4. Als Nächstes müssen Sie angeben, auf welchen GPIO oder GPIOs das Signal angezeigt wird. Dazu verwenden Sie die folgende Funktion:
ledcAttachPin(GPIO, channel)
Diese Funktion akzeptiert zwei Argumente. Der erste ist der GPIO, der das Signal ausgibt, und der zweite ist der Kanal, der das Signal erzeugt.
5., Um die LED-Helligkeit mit PWM zu steuern, verwenden Sie die folgende Funktion:
ledcWrite(channel, dutycycle)
Diese Funktion akzeptiert als Argumente den Kanal, der das PWM-Signal erzeugt, und den Tastverhältnis.
Dimmen einer LED
Sehen wir uns ein einfaches Beispiel an, um zu sehen, wie der ESP32 LED PWM Controller mit der Arduino IDE verwendet wird.
Schaltplan
Verdrahten Sie wie im folgenden Schaltplan eine LED an Ihren ESP32. Die LED sollte an GPIO 16 angeschlossen werden.,
(Dieses schema verwendet die ESP32 DEVKIT V1 modul version mit 30 GPIOs – wenn sie sind mit einem anderen modell, überprüfen sie bitte die pinout für die bord sie sind mit.)
Hinweis: Sie können einen beliebigen Pin verwenden, solange er als Ausgabe fungieren kann. Alle Pins, die als Ausgänge fungieren können, können als PWM-Pins verwendet werden. Weitere Informationen zu den ESP32-GPIOs finden Sie unter: ESP32-Pinout-Referenz: Welche GPIO-Pins sollten Sie verwenden?
Code
Öffnen Sie Ihre Arduino IDE und kopieren Sie den folgenden code.,
Rohcode anzeigen
Zunächst definieren Sie den Pin, an den die LED angeschlossen ist. In diesem Fall ist die LED an GPIO 16 angeschlossen.
const int ledPin = 16; // 16 corresponds to GPIO16
Dann legen Sie die PWM-Signaleigenschaften fest. Sie definieren eine Frequenz von 5000 Hz, wählen Kanal 0, um das Signal zu erzeugen, und stellen eine Auflösung von 8 Bit ein. Sie können andere Eigenschaften auswählen, die sich von diesen unterscheiden, um unterschiedliche PWM-Signale zu erzeugen.,
const int freq = 5000; const int ledChannel = 0; const int resolution = 8;
In setup () müssen Sie LED PWM mit den zuvor definierten Eigenschaften konfigurieren, indem Sie die ledcSetup () – Funktion verwenden, die als Argumente den ledChannel, die Frequenz und die Auflösung wie folgt akzeptiert:
ledcSetup(ledChannel, freq, resolution);
Als nächstes müssen Sie das GPIO auswählen, von dem Sie das Signal erhalten. Verwenden Sie dazu die ledcAttachPin() Funktion, die als Argumente das GPIO akzeptiert, in dem Sie das Signal erhalten möchten, und den Kanal, der das Signal erzeugt. In diesem Beispiel erhalten wir das Signal im ledPin GPIO, das GPIO 16 entspricht., Der Kanal, der das Signal erzeugt, ist der Ledkanal, der Kanal 0 entspricht.
ledcAttachPin(ledPin, ledChannel);
In der Schleife variieren Sie die Einschaltdauer zwischen 0 und 255, um die LED-Helligkeit zu erhöhen.
Und dann, zwischen 255 und 0 um die Helligkeit zu verringern.
Um die Helligkeit der LED einzustellen, müssen Sie nur die ledcWrite () – Funktion verwenden, die den Kanal, der das Signal erzeugt, und den Einschaltzyklus als Argumente akzeptiert.
ledcWrite(ledChannel, dutyCycle);
Da wir eine 8-Bit-Auflösung verwenden, wird der Arbeitszyklus mit einem Wert von 0 bis 255 gesteuert., Beachten Sie, dass wir in der ledcWrite () – Funktion den Kanal verwenden, der das Signal erzeugt, und nicht das GPIO.
Testen Sie das Beispiel
Laden Sie den Code auf Ihren ESP32 hoch. Stellen Sie sicher, dass Sie die richtige Platine und den richtigen COM-Port ausgewählt haben. Schau dir deine Schaltung an. Sie sollten eine Dimmer-LED haben, die die Helligkeit erhöht und verringert.
Das gleiche Signal auf verschiedenen GPIOs erhalten
Sie können das gleiche Signal vom selben Kanal in verschiedenen GPIOs erhalten., Um dies zu erreichen, müssen Sie diese GPIOs nur an denselben Kanal in setup () anhängen.
Lassen Sie uns das vorherige Beispiel ändern, um 3 LEDs mit demselben PWM-Signal aus demselben Kanal zu dimmen.
Schaltplan
Fügen Sie Ihrer Schaltung zwei weitere LEDs hinzu, indem Sie dem nächsten Schaltplan folgen:
(Dieses Schaltplan verwendet die ESP32 DEVKIT V1 – Modulversion mit 30 GPIOs-wenn Sie ein anderes Modell verwenden, überprüfen Sie bitte die Pinbelegung board Sie verwenden.,)
Code
Kopieren Sie den folgenden code in Ihre Arduino IDE.
Rohcode anzeigen
Dies ist derselbe Code wie der vorherige, jedoch mit einigen Änderungen. Wir haben zwei weitere Variablen für zwei neue LEDs definiert, die sich auf GPIO 17 und GPIO 5 beziehen.
const int ledPin2 = 17; // 17 corresponds to GPIO17 const int ledPin3 = 5; // 5 corresponds to GPIO5
Dann haben wir in setup () die folgenden Zeilen hinzugefügt, um Kanal 0 beide GPIOs zuzuweisen. Dies bedeutet, dass wir auf beiden GPIOs dasselbe Signal erhalten, das auf Kanal 0 generiert wird.
ledcAttachPin(ledPin2, ledChannel); ledcAttachPin(ledPin3, ledChannel);
Testen des Projekts
Laden Sie die neue Skizze in Ihr ESP32 hoch., Stellen Sie sicher, dass Sie die richtige Platine und den richtigen COM-Port ausgewählt haben. Schauen Sie sich nun Ihre Schaltung an:
Alle GPIOs geben dasselbe PWM-Signal aus. So erhöhen und verringern alle drei LEDs gleichzeitig die Helligkeit, was zu einem synchronisierten Effekt führt.
Zusammenfassend haben Sie in diesem Beitrag gelernt, wie Sie den LED-PWM-Controller des ESP32 mit der Arduino-IDE zum Dimmen einer LED verwenden., Die erlernten Konzepte können verwendet werden, um andere Ausgänge mit PWM zu steuern, indem die richtigen Eigenschaften auf das Signal eingestellt werden.
haben Wir andere Anleitungen, die im Zusammenhang mit ESP32, daß auch Sie wie:
- ESP32 Web Server – Arduino IDE
- ESP32 Daten Protokollierung Temperatur auf MicroSD-Karte
- ESP32 Webserver mit BME280 – Mini Wetter Station
- ESP32 vs ESP8266 – vor-und Nachteile
Dies ist ein Auszug aus unserem Kurs: Lernen ESP32 mit der Arduino IDE. Wenn Sie ESP32 mögen und mehr erfahren möchten, empfehlen wir Ihnen, sich für den Kurs Learn ESP32 with Arduino IDE anzumelden.