ESP32 Tutorial 34/55 - Farbverlauf mit RGB-LED und Drehregler | SunFounders ESP32 IoT Lernkit
In diesem Tutorial erstellen wir einen Farbverlaufseffekt mit einer RGB-LED, die sich basierend auf der Position eines Potenziometers (Poti) anpasst. Das Projekt nutzt einen ESP32-Mikrocontroller, der über integrierte WLAN- und Bluetooth-Funktionen verfügt und somit eine vielseitige Wahl für IoT-Projekte ist. Durch Drehen des Potenziometers können wir sanft zwischen verschiedenen Farben wechseln, was sowohl die Funktionalität der RGB-LED als auch die Fähigkeit zeigt, analoge Werte vom Potenziometer abzulesen.

Dieses Projekt ist ideal, um mehr über PWM (Pulsweitenmodulation) zu lernen und wie man analoge Geräte mit einem Mikrocontroller steuert. In diesem Tutorial werden wir die erforderlichen Hardwarekomponenten, Verdrahtungsanleitungen besprechen und Codebeispiele bereitstellen, um Ihnen bei der Umsetzung des Projekts zu helfen. Für eine anschaulichere Erklärung sollten Sie sich das dazugehörige Video ansehen (im Video bei 02:15).
Hardware erklärt
Die Hauptkomponenten, die in diesem Projekt verwendet werden, sind der ESP32-Mikrocontroller, eine RGB-LED und ein Potentiometer. Der ESP32 ist ein leistungsstarker Mikrocontroller, der verschiedene Aufgaben bewältigen kann, einschließlich der drahtlosen Kommunikation, und ihn somit für IoT-Anwendungen geeignet macht. Die RGB-LED besteht aus drei einzelnen LEDs (rot, grün und blau), die gemischt werden können, um eine breite Palette von Farben zu erzeugen. Das Potentiometer fungiert als einstellbarer Widerstand, der eine variable Spannungsausgabe basierend auf seiner Position bereitstellt.
Die RGB-LED kann in zwei Konfigurationen angeschlossen werden: gemeinsame Anode oder gemeinsamer Kathode. In diesem Projekt werden wir eine gemeinsame Anode-Konfiguration verwenden, bei der alle Anoden zusammen an eine positive Spannung angeschlossen sind, was es uns ermöglicht, die Helligkeit jeder LED einzeln mit PWM zu steuern. Der Potentiometer wird an einen analogen Eingang des ESP32 angeschlossen, um seine Position zu lesen und die RGB-Werte entsprechend anzupassen.
Datenblattdetails
| Hersteller | SunFounder |
|---|---|
| Teilenummer | RGB-LED |
| Logik/IO-Spannung | 3,3 V |
| Versorgungsspannung | 5 V |
| Ausgangsstrom (pro Kanal) | 20 mA |
| Spitzenstrom (pro Kanal) | 30 mA |
| PWM-Frequenzrichtlinien | 5 kHz |
| Eingangslogikschwellen | 0,3 V (niedrig) / 2,7 V (hoch) |
| Spannungsabfall / RDS(on)/ Sättigung | 1,8 V (typ.) |
| Thermische Grenzen | Betriebstemperatur: -40 °C bis +85 °C |
| Paket | Durchgangsloch |
| Notizen / Varianten | Gemeinsame Anodenanordnung |
- Verwenden Sie einen 220 Ohm Widerstand für jeden LED-Kanal, um den Strom zu begrenzen.
- Stellen Sie sicher, dass die Versorgungsspannung (5V) für die RGB-LED korrekt ist.
- Verbinde den gemeinsamen Anodenanschluss mit der positiven Spannungsversorgung.
- Verwenden Sie PWM zur Steuerung der Helligkeit jeder LED-Farbe.
- Seien Sie vorsichtig mit dem Anschluss des Potenziometers, um schwebende Eingänge zu vermeiden.
- Überprüfen Sie, ob der ESP32 korrekt mit Strom versorgt wird, bevor Sie den Code hochladen.
Verdrahtungsanweisungen
Um die RGB-LED und den Potenziometer mit dem ESP32 zu verbinden, beginnen Sie damit, den gemeinsamen Anodenpin der RGB-LED mit dem 3,3V-Strompin des ESP32 zu verbinden. Die roten, grünen und blauen Pins der RGB-LED werden mit Pins verbunden.27,26, und25Achten Sie darauf, einen 220-Ohm-Widerstand in Reihe mit jedem LED-Farbpin zu platzieren, um den Strom zu begrenzen und die LED zu schützen.
Verbinde als nächstes den Potenziometer mit dem ESP32, indem du den linken Pin mit dem 3.3V-Strompin, den rechten Pin mit der Erde und den mittleren Pin mit anschließt.14auf dem ESP32. Diese Konfiguration ermöglicht es dem ESP32, die analoge Spannung vom Potentiometer zu lesen, die verwendet wird, um die Farbe der RGB-LED basierend auf ihrer Position anzupassen.
Codebeispiele und Anleitung
Im Setup-Funktion definieren wir die Pins für die RGB-LED und den Potentiometer sowie die PWM-Einstellungen. Der folgende Codeausschnitt zeigt, wie wir die RGB-LED-Pins einrichten:
const int redPin = 27;
const int greenPin = 26;
const int bluePin = 25;
void setup() {
ledcAttach(redPin, freq, resolution);
ledcAttach(greenPin, freq, resolution);
ledcAttach(bluePin, freq, resolution);
}In diesem Auszug definieren wir die Pins für die roten, grünen und blauen LEDs und verbinden sie mit PWM-Kanälen mit einer definierten Frequenz und Auflösung.
Die Schleifenfunktion liest den Wert des Potentiometers aus und wandelt ihn in einen Farbtonwert um, der dann verwendet wird, um die RGB-Werte zu bestimmen. Der folgende Auszug verdeutlicht diesen Prozess:
void loop() {
int knobValue = analogRead(KNOB_PIN);
float hueValue = (float)knobValue / 4095.0;
int hue = (int)(hueValue * 360);
int red, green, blue;
HUEtoRGB(hue, &red, &green, &blue);
setColor(red, green, blue);
}Dieser Code liest den analogen Wert des Potentiometers aus, normalisiert ihn und berechnet den entsprechenden Farbton. Er ruft dann dieHUEtoRGBFunktion zum Umwandeln des Farbtons in RGB-Werte, die an diesetColorFunktion zum Aktualisieren der LED.
Demonstration / Was zu erwarten ist
Nachdem Sie die Verdrahtung abgeschlossen und den Code hochgeladen haben, sollten Sie in der Lage sein, den Potenziometer zu drehen, um die Farbe der RGB-LED sanft zu ändern. Wenn Sie den Knopf drehen, wird die LED je nach dem Farbtonwert, der aus der Position des Knopfes berechnet ist, durch verschiedene Farben wechseln. Wenn die LED nicht leuchtet oder sich unerwartet verhält, überprüfen Sie die Verdrahtung und stellen Sie sicher, dass der Potenziometer korrekt angeschlossen ist (im Video um 10:45).
Video-Zeitstempel
- 00:00 Start
- 2:11 Einführung in das Projekt
- 4:31 RGB LED
- 8:18 RGB-Farbe
- 12:18 Verdrahtung erklärt
- 17:59 Arduino-Code erklärt
- 24:12 Auswahl des ESP32-Boards und des COM-Ports in der Arduino IDE
- 25:54 Demonstration
Common Course Links
Common Course Files
Ressourcen & Referenzen
-
DokumentationESP32 Tutorial 34/55 - SunFounder-Dokumentationsseite für Farbverlaufdocs.sunfounder.com
Dateien📁
Keine Dateien verfügbar.