Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Gartenautomation
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Deutsch
  • English
Menu

Programmieren mit MicroPython #4: RGB LED am ESP32 betreiben

Posted on 15. Juni 20208. März 2024 by Stefan Draeger

Wie man eine RGB LED am ESP32 mit MicroPython programmiert, möchte ich dir in diesem Beitrag erläutern.

  • benötigte Bauteile
  • Aufbau einer RGB LED vom Typ WS18B20
  • Aufbau der Schaltung am ESP32
  • Programmieren
    • setzen der Farbe an einer RGB LED vom Typ WS2812B am ESP32
    • Wechselblinken zweier RGB LEDs
      • Aufbau der Schaltung mit 2 RGB LEDs
      • Quellcode
      • Video

benötigte Bauteile

Für den betrieb einer RGB LED am ESP32 benötigst du folgende Bauteile:

  • einen ESP32*,
  • vier Breadboardkabel*, 10 cm, Stecker – Stecker,
  • eine RGB LED vom Typ „WS18B20“*

Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!

Aufbau einer RGB LED vom Typ WS18B20

Die RGB LED verfügt über 4 Beinchen, welche jeweils unterschiedlich lang sind. Des Weiteren verfügt die RGB LED über eine abgeflachte Seite am Gehäuse, somit können wir die Pinbelegung besser ermitteln.

Pinout einer 5mm, WS18B20 RGB LED
Pinout einer 5mm, WS18B20 RGB LED

Es gibt natürlich auch fertige RGB LED Shields / NeoPixel auf dem Markt welche man etwas besser an den ESP32 anschließen kann. An diese Module lassen sich Litzen anlöten und somit kann man diese einfacher anschließen.

12bit NeoPixel Ring Ansicht hinten
12bit NeoPixel Ring Ansicht hinten
12bit NeoPixel Ring Ansicht vorne
12bit NeoPixel Ring Ansicht vorne
WS2812B 16 - NeoPixel 4x4 Matrix
WS2812B 16 – NeoPixel 4×4 Matrix

Die dort verbauten NeoPixel haben die Modelbezeichnung „WS2812B“ wobei die Programmierung und die selbe ist wie bei den „WS18B20“.

Aufbau der Schaltung am ESP32

In dieser Schaltung wollen wir zunächst eine RGB LED betreiben. Diese RGB LED verfügt wie bereits gezeigt über 4 Beinchen welche für den digitalen Eingang (DIN), die Spannungsversorgung (VCC)von 3,5V bis max. 6V sowie den Minuspol (G) dienen. Das vierte Beinchen der RGB LED dient für das kaskadierende Anschließen weiterer LEDs, somit kann man eine Reihe von x RGB LEDs hintereinander anschließen und nur mit einem digitalen Pin betreiben.

Aufbau der Schaltung - ESP32 mit RGB LED Typ WS18B20
Aufbau der Schaltung – ESP32 mit RGB LED Typ WS18B20

Programmieren

setzen der Farbe an einer RGB LED vom Typ WS2812B am ESP32

Wenn du die gleiche Entwicklungsumgebung (uPyCraft) und Python3 wie ich verwendest, dann musst du keine zusätzliche Bibliothek installieren.

Zum Ansteuern der NeoPixel importieren wir die Bibliothek „neopixel“.

import neopixel

Des Weiteren benötigen wir aus der bereits bekannten Bibliothek „machine“ das Modul „Pin“.

from machine import Pin

Zunächst erzeugen wir uns ein NeoPixel Objekt, meine RGB Led ist am GPIO 4 angeschlossen. Dem Konstruktor des Objektes NeoPixel übergeben wir ein „Pin“ Objekt sowie die Anzahl der NeoPixel.

rgbLeds = neopixel.NeoPixel(Pin(4, Pin.OUT), 1)

Über einen Index können wir nun jede einzelne RGB LED steuern. Da wir in diesem Beispiel nur eine RGB LED haben greifen wir mit dem Index „0“ auf die einzelne LED zu und weisen dieser die Farbe „rot“ zu.

rgbLeds[0] = (0, 255, 0)

Interessant ist, das es nicht im Format „RGB“ also rot – grün – blau ist, sondern im Format grün – rot – blau. Der minimale Wert für eine Farbe ist „0“ und der maximale ist „255“.
Wenn du also die Farbe grün einstellen möchtest so wählst du hier den Wert „rgbLeds[0] = (255, 0, 0)“. 

Mit der Methode „write“ wird der gesetzte Farbwert auf die LED „geschrieben“.

rgbLeds.write()

Hier nun der komplette Quellcode:

import neopixel
from machine import Pin
 
rgbLeds = neopixel.NeoPixel(Pin(4, Pin.OUT), 1)
rgbLeds[0] = (0, 255, 0)
rgbLeds.write()
ESP32 mit RGB LED (WS18B20)
ESP32 mit RGB LED (WS18B20)

Wechselblinken zweier RGB LEDs

Zum betrieb zweier LEDs verwende ich zusätzlich ein Power Modul an welchem eine 9V Block Batterie angeschlossen ist. Das hat den Hintergrund das ein GPIO Pin des ESP32 nur maximal 12mA Leistung hat. Ich konnte leider kein Datenblatt finden wo für die RGB LED WS2812B bzw. PL9823-F5 die Technischen Daten komplett abgebildet sind. Einzig auf aliexpress.com habe ich in einer Artikelbeschreibung gefunden das diese RGB LED wohl eine maximale Stromaufnahme von 120mA (an anderen Stellen steht 100mA) hat.

zwei RGB LEDs vom Typ WS2812B am ESP32 mit Power Modul
zwei RGB LEDs vom Typ WS2812B am ESP32 mit Power Modul

Aufbau der Schaltung mit 2 RGB LEDs

Die Stromversorgung der LEDs kommt, wie eingangs erwähnt von einer 9V Block Batterie. Zusätzlich muss für den Potentialausgleich „-“ von der Stromversorgung mit „G“ des ESP32 verbunden werden. Des Weiteren wird DOUT der LED1 mit DIN der LED2 (blaues Breadboardkabel im Bild) verbunden. 

Quellcode

Wir nutzen als Basis das Programm aus dem vorherigen Beispiel mit nur einer RGB LED. Wir müssen hier nur den Konstruktor anpassen so das 2 LEDs angesprochen werden können.

rgbLeds = neopixel.NeoPixel(Pin(4, Pin.OUT), 2)

Die Methode „setColor“ erweitern wir um einen Parameter für den Index der LED (0 oder 1).

def setColor(led, red, green, blue):
  rgbLeds[led] = (green, red, blue)
  print("RGB {%1d} Value={%3d, %3d, %3d}"%(led,red, green, blue))
  rgbLeds.write()

In der Endlosschleife setzen wir nun die Farben der jeweiligen LEDs immer abwechselnd in einem Intervall von 500ms.
Die LED am Index 0 wird in der Farbe „rot“ blinken und die andere LED in der Farbe „grün“. Zwischendrin wird die Farbe jeweils auf „schwarz“ (alle Werte auf 0) gesetzt, so das die LED deaktiviert ist.

while(1):
  setColor(0,255,0,0)
  sleep(0.5)
  setColor(0,0,0,0)
  sleep(0.5)
  setColor(1,0,255,0)
  sleep(0.5)
  setColor(1,0,0,0)
  sleep(0.5)

Das gesamte Programm:

import neopixel
from machine import Pin
from time import sleep
 
rgbLeds = neopixel.NeoPixel(Pin(4, Pin.OUT), 2)
 
def setColor(led, red, green, blue):
  rgbLeds[led] = (green, red, blue)
  print("RGB {%1d} Value={%3d, %3d, %3d}"%(led,red, green, blue))
  rgbLeds.write()
  
  
while(1):
  setColor(0,255,0,0)
  sleep(0.5)
  setColor(0,0,0,0)
  sleep(0.5)
  setColor(1,0,255,0)
  sleep(0.5)
  setColor(1,0,0,0)
  sleep(0.5)

Video

1 thought on “Programmieren mit MicroPython #4: RGB LED am ESP32 betreiben”

  1. Pingback: ESP32-S3-Zero: Kleine Größe, große Leistung – Ein Überblick - Technik Blog

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen
Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

link zu Fabook
link zu LinkedIn
link zu YouTube
link zu TikTok
link zu Pinterest
link zu Instagram
  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}