Neopixel sind kleine RGB-LEDs mit integrierten Chip. Sie werden über eine einzige Datenleitung angesteuert. Es gibt einzelne Neopixel, sowie mehrere in Ring- oder Streifenform. Wie die Neopixel funktinieren ist hier sehr schön erklärt.

Neopixel-Ring am ESP32

Wir schließen einen NeoPixel-Ring mit 12 LED wie folgt an den ESP32 an:

  • NeoPixel-Ring-Power an ESP-3V3-Pin
  • NeoPixel-Ring-GND an ESP-GND
  • NeoPixel-Data-Input an ESP-GPIO-4

Eigentlich braucht der NeoPixel 5V, aber es funktioniert (bei mir) auch mit 3,3 V.

An folgendem MicroPython-Programm sieht man, wie man den NeoPixel-Ring programmieren kann:

import machine, neopixel
import time

# NeoPixel-Objekt erzeugen (Anschluss an Pin 4, Länge 12 LED)
np = neopixel.NeoPixel(machine.Pin(4), 12)

# Maximale Helligkeit
max_brightness = 8

# Ein paar Farbdefinitionen mit der maximale Helligkeit
# Die Farben sind jeweils Tupel mit den Werten für R, G und B
red = (max_brightness, 0, 0)
yellow = (max_brightness, max_brightness, 0)
green = (0, max_brightness, 0)
cyan = (0, max_brightness, max_brightness)
blue = (0, 0, max_brightness)
purple = (max_brightness,0,max_brightness)
white = (max_brightness,max_brightness,max_brightness)
black = (0,0,0)

# Einzelne LEDs nacheinander ansteuern
np[0] = red
np.write()
time.sleep_ms(500)

np[2] = yellow
np.write()
time.sleep_ms(500)

np[4] = green
np.write()
time.sleep_ms(500)

np[6] = cyan
np.write()
time.sleep_ms(500)

np[8] = blue
np.write()
time.sleep_ms(500)

np[10] = purple
np.write()
time.sleep_ms(500)

### Farbwechsel

# Liste mit Farben
cycle = [red, yellow, green, cyan, blue, purple]
# Anzahl der Pixel
n = np.n
for v in range(3):
    for i in cycle:
        for j in range(n):
            np[j] = i
            np.write()
            time.sleep_ms(200)


Die verschachtelte Schleife geht dreimal die Liste der Farben durch und färbt alle 12 Pixel nacheinander in der Farbe ein.

Weitere Infos: