So verbinden Sie den adressierbaren LED-Streifen WS2812B mit Arduino
Die Entwicklung der Lichttechnik auf LED-Basis schreitet rasant voran. Noch gestern schienen Controller-gesteuerte RGB-Bänder, deren Helligkeit und Farbe per Fernbedienung eingestellt werden können, wie ein Wunder. Heute sind Lampen mit noch mehr Funktionen auf dem Markt erschienen.
LED-Streifen basierend auf WS2812B
Der Unterschied zwischen dem adressierbaren LED-Streifen und dem Standard RGB die Sache ist Helligkeit und Farbverhältnis jedes Elements werden separat eingestellt. Auf diese Weise können Sie Lichteffekte erzielen, die für andere Arten von Beleuchtungsgeräten grundsätzlich unzugänglich sind. Das Leuchten des adressierbaren LED-Streifens wird auf bekannte Weise gesteuert – durch Pulsweitenmodulation. Eine Besonderheit des Systems ist es, jede LED mit einem eigenen PWM-Controller auszustatten. Der WS2812B-Chip ist eine dreifarbige Leuchtdiode und eine Steuerschaltung, die in einem einzigen Gehäuse kombiniert sind.

Die Elemente werden parallel zu einem Power Tape zusammengefasst und über einen seriellen Bus gesteuert - der Ausgang des ersten Elements wird mit dem Steuereingang des zweiten verbunden usw. In den meisten Fällen sind serielle Busse auf zwei Leitungen aufgebaut, von denen eine Strobes (Taktimpulse) und die andere Daten überträgt.

Der Steuerbus des WS2812B-Chips besteht aus einer Leitung, über die Daten übertragen werden. Die Daten werden als Impulse mit konstanter Frequenz, aber mit unterschiedlichen Arbeitszyklen codiert. Ein Impuls - ein Bit. Die Dauer jedes Bits beträgt 1,25 µs, das Nullbit besteht aus einem High-Pegel mit einer Dauer von 0,4 µs und einem Low-Pegel von 0,85 µs. Die Einheit sieht aus wie ein High-Pegel für 0,8 µs und ein Low-Pegel für 0,45 µs. Ein 24-Bit (3-Byte)-Burst wird an jede LED gesendet, gefolgt von einer Low-Pegel-Pause für 50 µs. Das bedeutet, dass Daten für die nächste LED übertragen werden und so weiter für alle Elemente der Kette. Die Datenübertragung endet mit einer Pause von 100 µs. Dies zeigt an, dass der Bandprogrammierungszyklus abgeschlossen ist und der nächste Satz von Datenpaketen gesendet werden kann.

Ein solches Protokoll ermöglicht es, mit einer Leitung für die Datenübertragung auszukommen, erfordert aber Genauigkeit bei der Einhaltung von Zeitintervallen. Die Diskrepanz darf nicht mehr als 150 ns betragen. Außerdem ist die Störfestigkeit eines solchen Busses sehr gering. Jede Störung mit ausreichender Amplitude kann von der Steuerung als Daten wahrgenommen werden. Dies erlegt Beschränkungen für die Länge der Leiter von der Steuerschaltung auf. Andererseits macht es das möglich Farbband-Gesundheitsprüfung ohne Zusatzgeräte.Wenn Sie die Lampe mit Strom versorgen und mit dem Finger die Kontaktfläche des Steuerbusses berühren, können einige LEDs zufällig aufleuchten und erlöschen.
Spezifikationen der WS2812B-Elemente
Um Beleuchtungssysteme basierend auf einem Adressband zu erstellen, müssen Sie die wichtigen Parameter von lichtemittierenden Elementen kennen.
| LED-Abmessungen | 5x5mm |
| PWM-Modulationsfrequenz | 400 Hertz |
| Stromverbrauch bei maximaler Helligkeit | 60 mA pro Zelle |
| Versorgungsspannung | 5 Volt |
Arduino und WS2812B
Mit der weltweit beliebten Arduino-Plattform können Sie Skizzen (Programme) zur Verwaltung von Adressbändern erstellen. Die Fähigkeiten des Systems sind breit genug, aber wenn sie auf einem bestimmten Niveau nicht mehr ausreichen, reichen die erworbenen Fähigkeiten aus, um problemlos zu C ++ oder sogar zu Assembler zu wechseln. Obwohl die ersten Kenntnisse auf dem Arduino einfacher zu bekommen sind.
Anschließen des WS2812B-Bandes an Arduino Uno (Nano)
Im ersten Schritt reichen einfache Arduino Uno- oder Arduino Nano-Boards aus. In Zukunft können komplexere Boards verwendet werden, um komplexere Systeme zu bauen. Beim physikalischen Verbinden des adressierbaren LED-Streifens mit dem Arduino-Board müssen einige Bedingungen beachtet werden:
- Wegen der geringen Störfestigkeit sollten die Anschlussleiter der Datenleitung so kurz wie möglich sein (Sie sollten versuchen, sie innerhalb von 10 cm zu machen);
- Sie müssen den Datenleiter an den freien digitalen Ausgang des Arduino-Boards anschließen - er wird dann programmgesteuert angegeben.
- Aufgrund des hohen Stromverbrauchs ist es nicht erforderlich, das Band über die Platine mit Strom zu versorgen - für diesen Zweck sind separate Netzteile vorgesehen.
Das gemeinsame Stromkabel von Lampe und Arduino muss angeschlossen werden.

WS2812B Grundlagen der Programmsteuerung
Es wurde bereits erwähnt, dass zur Steuerung der WS2812B-Mikroschaltungen Impulse mit einer bestimmten Länge erzeugt werden müssen, um eine hohe Genauigkeit beizubehalten. Zur Bildung kurzer Impulse gibt es Befehle in der Arduino-Sprache VerzögerungMikrosekunden und Mikros. Das Problem ist, dass die Auflösung dieser Befehle 4 Mikrosekunden beträgt. Das heißt, es funktioniert nicht, Zeitverzögerungen mit einer gegebenen Genauigkeit zu bilden. Es ist notwendig, auf C++ oder Assembler-Tools umzusteigen. Und Sie können die Steuerung des adressierbaren LED-Streifens durch Arduino mithilfe von eigens dafür erstellten Bibliotheken organisieren. Sie können Ihre Bekanntschaft mit dem Blink-Programm beginnen, das die Leuchtelemente zum Blinken bringt.
schnell geführt
Diese Bibliothek ist universell. Neben dem Adressband unterstützt es eine Vielzahl von Geräten, einschließlich Bändern, die von der SPI-Schnittstelle gesteuert werden. Es hat breite Möglichkeiten.
Zuerst muss die Bibliothek eingebunden werden. Dies geschieht vor dem Setup-Block, und die Zeile sieht folgendermaßen aus:
#include <FastLED.h>
Der nächste Schritt besteht darin, ein Array zu erstellen, um die Farben jeder Leuchtdiode zu speichern. Es hat den Namensstreifen und die Dimension 15 - nach Anzahl der Elemente (es ist besser, diesem Parameter eine Konstante zuzuweisen).
CRGB-Streifen[15]
Im Einrichtungsblock müssen Sie angeben, mit welchem Band die Skizze funktionieren soll:
ungültige Einrichtung () {
FastLED.addLeds< WS2812B, 7, RGB> (Streifen, 15);
intg;
}
Der RGB-Parameter legt die Reihenfolge der Farbreihenfolge fest, 15 bedeutet die Anzahl der LEDs, 7 ist die Nummer des zur Steuerung zugewiesenen Ausgangs (es ist auch besser, dem letzten Parameter eine Konstante zuzuweisen).
Der Schleifenblock beginnt mit einer Schleife, die nacheinander in jeden Abschnitt des Arrays schreibt Rot (rotes Leuchten):
für (g=0; g< 15; g++)
{strip[g]=CRGB::Rot;}
Als nächstes wird das gebildete Array an die Lampe gesendet:
FastLED.show();
Verzögerung 1000 Millisekunden (Sekunde):
Verzögerung (1000);
Dann können Sie alle Elemente auf die gleiche Weise ausschalten, indem Sie sie schwarz schreiben.
für (int g=0; g< 15; g++)
{strip[g]=CRGB::Schwarz;}
FastLED.show();
Verzögerung (1000);

Nach dem Kompilieren und Hochladen der Skizze blinkt das Band mit einer Periode von 2 Sekunden. Wenn Sie jede Farbkomponente separat verwalten müssen, dann anstelle der Linie {strip[g]=CRGB::Rot;} Es werden mehrere Zeilen verwendet:
{
Streifen[g].r=100;// Stellen Sie den Leuchtgrad des roten Elements ein
Streifen[g].g=11;// das gleiche für grün
Streifen[g].b=250;// das gleiche für blau
}
NeoPixel
Diese Bibliothek funktioniert nur mit NeoPixel Ring LED-Ringen, ist aber weniger ressourcenintensiv und enthält nur das Wesentliche. In Arduino-Sprache sieht das Programm so aus:
#include <Adafruit_NeoPixel.h>
Wie im vorherigen Fall wird die Bibliothek verbunden und das lenta-Objekt deklariert:
Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// wobei 15 die Anzahl der Elemente und 6 der zugewiesene Ausgang ist
Im Setup-Block wird das Band initialisiert:
ungültige Einrichtung () {
lenta.begin()
}
Im Schleifenblock werden alle Elemente rot markiert, die Variable an den Feed übergeben und eine Verzögerung von 1 Sekunde erzeugt:
for (int y=0; y<15; y++)// 15 - die Anzahl der Elemente in der Lampe
{lenta.setPixelColor(y, lenta.Color(255,0,0))};
tape.show();
Verzögerung (1000);
Das Leuchten stoppt mit einer schwarzen Schallplatte:
for (int y=0; y< 15; y++)
{lenta.setPixelColor(y, lenta.Color(0,0,0))};
tape.show();
Verzögerung (1000);

Video-Tutorial: Beispiele für visuelle Effekte mit Adressbändern.
Sobald Sie gelernt haben, wie man die LEDs zum Blinken bringt, können Sie weiter lernen, wie Sie Farbeffekte erzeugen, einschließlich der beliebten Rainbow und Aurora Borealis mit sanften Übergängen. Adressierbare LEDs WS2812B und Arduino bieten hierfür nahezu unbegrenzte Möglichkeiten.
