.. note::
Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.
**Warum beitreten?**
- **Expertenunterstützung**: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
- **Lernen & Teilen**: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.
- **Exklusive Vorschauen**: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
- **Spezialrabatte**: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
- **Festliche Aktionen und Gewinnspiele**: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [|link_sf_facebook|] und treten Sie heute bei!
.. _ar_neopixel:
3.3 WS2812 RGB-Strip
======================
WS2812 ist eine intelligente LED-Lichtquelle, bei der die Steuerschaltung und der RGB-Chip in einem 5050-Komponentenpaket integriert sind.
Sie enthält einen intelligenten digitalen Port-Datenlatch und eine Signalformungsverstärkungs-Schaltung.
Darüber hinaus verfügt sie über einen präzisen internen Oszillator und einen programmierbaren konstanten Stromsteuerungsteil,
der effektiv die hohe Konsistenz der Lichtfarbe jedes Pixels sicherstellt.
Das Datenübertragungsprotokoll verwendet den einzelnen NZR-Kommunikationsmodus.
Nach dem Einschalten des Pixels erhält der DIN-Port Daten vom Controller, das erste Pixel sammelt die anfänglichen 24-Bit-Daten und sendet sie an den internen Datenlatch. Die restlichen Daten werden von der internen Signalformungsverstärkungs-Schaltung umgeformt und über den DO-Port an das nächste kaskadierte Pixel gesendet. Nach der Übertragung für jedes Pixel reduziert sich das Signal um 24 Bit.
Das Pixel verwendet die Auto-Reshaping-Transmit-Technologie, sodass die Anzahl der kaskadierten Pixel nicht durch die Signalübertragung begrenzt ist, sondern nur von der Geschwindigkeit der Signalübertragung abhängt.
* :ref:`cpn_ws2812`
**Benötigte Komponenten**
Für dieses Projekt benötigen wir folgende Komponenten.
Es ist definitiv praktisch, ein ganzes Kit zu kaufen, hier ist der Link:
.. list-table::
:widths: 20 20 20
:header-rows: 1
* - Bezeichnung
- ARTIKEL IN DIESEM KIT
- KAUF-LINK
* - Kepler-Kit
- 450+
- |link_kepler_kit|
Sie können die Komponenten auch einzeln über die folgenden Links kaufen.
.. list-table::
:widths: 5 20 5 20
:header-rows: 1
* - SN
- KOMPONENTENBESCHREIBUNG
- ANZAHL
- KAUF-LINK
* - 1
- :ref:`cpn_pico_w`
- 1
- |link_picow_buy|
* - 2
- Micro-USB-Kabel
- 1
-
* - 3
- :ref:`cpn_breadboard`
- 1
- |link_breadboard_buy|
* - 4
- :ref:`cpn_wire`
- Mehrere
- |link_wires_buy|
* - 5
- :ref:`cpn_ws2812`
- 1
- |link_ws2812_buy|
**Schaltplan**
|sch_ws2812|
**Verdrahtung**
|wiring_ws2812|
.. warning::
Achten Sie besonders auf den Strombedarf.
Obwohl der LED-Strip mit einer beliebigen Anzahl von LEDs im Pico W verwendet werden kann, ist die Leistung seines VBUS-Pins begrenzt.
Hier werden wir acht LEDs verwenden, die sicher sind.
Wenn Sie jedoch mehr LEDs verwenden möchten, benötigen Sie eine separate Stromversorgung.
**Code**
.. note::
* Sie können die Datei ``3.3_rgb_led_strip.ino`` im Verzeichnis ``kepler-kit-main/arduino/3.3_rgb_led_strip`` öffnen.
* Oder kopieren Sie diesen Code in die **Arduino IDE**.
* Vergessen Sie nicht, das Board (Raspberry Pi Pico) und den richtigen Port auszuwählen, bevor Sie auf die Schaltfläche **Hochladen** klicken.
* Die Bibliothek ``Adafruit_NeoPixel`` wird hier verwendet. Sie können sie über den **Bibliotheksmanager** installieren.
.. image:: img/lib_neopixel.png
.. raw:: html
Wählen Sie einige Ihrer Lieblingsfarben aus und zeigen Sie sie auf dem RGB-LED-Strip an!
**Wie funktioniert es?**
Ein Objekt vom Typ Adafruit_NeoPixel wird deklariert, welches an ``PIXEL_PIN`` angeschlossen ist und auf dem Streifen befinden sich ``PIXEL_COUNT`` RGB-LEDs.
.. code-block:: arduino
#define PIXEL_PIN 0
#define PIXEL_COUNT 8
// Declare our NeoPixel strip object:
Adafruit_NeoPixel strip(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);
// Argument 1 = Number of pixels in NeoPixel strip
// Argument 2 = Arduino pin number (most are valid)
// Argument 3 = Pixel type flags, add together as needed:
// NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
// NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
// NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products)
// NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)
// NEO_RGBW Pixels are wired for RGBW bitstream (NeoPixel RGBW products)
Streifenobjekt initialisieren und alle Pixel auf 'aus' setzen.
Funktionen
* ``strip.begin()`` : NeoPixel-Streifenobjekt initialisieren (ERFORDERLICH).
* ``strip.setPixelColor(index, color)`` : Pixel-Farbe (im RAM) setzen, die ``color`` muss ein einzelner 'gepackter' 32-Bit-Wert sein.
* ``strip.Color(red, green, blue)`` : Farbe als einzelner 'gepackter' 32-Bit-Wert.
* ``strip.show()`` : Streifen mit neuem Inhalt aktualisieren.
**Mehr erfahren**
Wir können zufällige Farben generieren und ein farbenfrohes, fließendes Licht erzeugen.
.. note::
* Sie können die Datei ``3.3_rgb_led_strip_flowing.ino`` im Pfad ``kepler-kit-main/arduino/3.3_rgb_led_strip_flowing`` öffnen.
* Oder diesen Code in die **Arduino IDE** kopieren.
* Vergessen Sie nicht, die Platine (Raspberry Pi Pico) und den korrekten Port auszuwählen, bevor Sie auf die **Hochladen**-Schaltfläche klicken.
.. raw:: html
Oder lassen Sie diesen WS2812 LED-Streifen in einem Regenbogenzyklus um das Farbrad (Bereich 65535) rotieren.
.. note::
* Sie können die Datei ``3.3_rgb_led_strip_rainbow.ino`` im Pfad ``kepler-kit-main/arduino/3.3_rgb_led_strip_rainbow`` öffnen.
* Oder diesen Code in die **Arduino IDE** kopieren.
* Vergessen Sie nicht, die Platine (Raspberry Pi Pico) und den korrekten Port auszuwählen, bevor Sie auf die **Hochladen**-Schaltfläche klicken.
.. raw:: html
* ``strip.getPixelColor(index)`` : Die Farbe eines zuvor eingestellten Pixels abfragen.
* ``strip.ColorHSV(pixelHue)`` : Farbton, Sättigung und Wert in eine 'gepackte' 32-Bit-RGB-Farbe umwandeln, die an ``setPixelColor()`` oder andere RGB-kompatible Funktionen übergeben werden kann.
* ``strip.gamma32()`` : Ermöglicht eine "echtere" Farbwiedergabe, bevor sie jedem Pixel zugewiesen wird.