Come collegare la striscia LED indirizzabile WS2812B ad Arduino
Lo sviluppo della tecnologia di illuminazione basata sui LED prosegue rapidamente. Proprio ieri, i nastri RGB controllati dal controller, la cui luminosità e colore possono essere regolati tramite un telecomando, sembravano un miracolo. Oggi sono apparse sul mercato lampade con ancora più caratteristiche.
Striscia LED basata su WS2812B
La differenza tra la striscia LED indirizzabile e quella standard RGB cosa è la luminosità e il rapporto colore di ciascun elemento vengono regolati separatamente. Ciò consente di ottenere effetti di luce fondamentalmente inaccessibili ad altri tipi di dispositivi di illuminazione. Il bagliore della striscia LED indirizzabile è controllato in un modo noto, utilizzando la modulazione della larghezza di impulso. Una caratteristica del sistema è quella di dotare ogni LED del proprio controller PWM. Il chip WS2812B è un diodo a emissione di luce tricolore e un circuito di controllo combinati in un unico pacchetto.

Gli elementi sono combinati in un nastro di alimentazione in parallelo e sono controllati tramite un bus seriale: l'uscita del primo elemento è collegata all'ingresso di controllo del secondo, ecc. Nella maggior parte dei casi, i bus seriali sono costruiti su due linee, una delle quali trasmette strobe (impulsi di clock) e l'altra - dati.

Il bus di controllo del chip WS2812B è costituito da una linea: i dati vengono trasmessi attraverso di essa. I dati sono codificati come impulsi di frequenza costante, ma con cicli di lavoro diversi. Un impulso - un bit. La durata di ogni bit è 1,25 µs, il bit zero è costituito da un livello alto con una durata di 0,4 µs e un livello basso di 0,85 µs. L'unità appare come un livello alto per 0,8 µs e un livello basso per 0,45 µs. Un burst a 24 bit (3 byte) viene inviato a ciascun LED, seguito da una pausa di basso livello per 50 µs. Ciò significa che i dati verranno trasmessi per il LED successivo e così via per tutti gli elementi della catena. Il trasferimento dei dati termina con una pausa di 100 µs. Ciò indica che il ciclo di programmazione del nastro è completo e che è possibile inviare la serie successiva di pacchetti di dati.

Un tale protocollo consente di cavarsela con una linea per la trasmissione dei dati, ma richiede precisione nel mantenimento degli intervalli di tempo. La discrepanza è consentita non più di 150 ns. Inoltre, l'immunità ai disturbi di un tale bus è molto bassa. Qualsiasi interferenza di ampiezza sufficiente può essere percepita dal controllore come dati. Ciò impone restrizioni sulla lunghezza dei conduttori dal circuito di controllo. D'altra parte, questo lo rende possibile controllo dello stato del nastro senza dispositivi aggiuntivi.Se si fornisce alimentazione alla lampada e si tocca con il dito il pad di contatto del bus di controllo, alcuni LED potrebbero accendersi in modo casuale e spegnersi.
Specifiche degli elementi WS2812B
Per creare sistemi di illuminazione basati su un nastro per indirizzi, è necessario conoscere i parametri importanti degli elementi che emettono luce.
| Dimensioni LED | 5x5mm |
| Frequenza di modulazione PWM | 400 Hz |
| Consumo di corrente alla massima luminosità | 60 mA per cella |
| Tensione di alimentazione | 5 volt |
Arduino e WS2812B
La piattaforma Arduino, apprezzata nel mondo, permette di creare sketch (programmi) per la gestione dei nastri di indirizzi. Le capacità del sistema sono abbastanza ampie, ma se non bastano più a un certo livello, le competenze acquisite saranno sufficienti per passare indolore al C++ o addirittura all'assemblatore. Anche se la conoscenza iniziale è più facile da ottenere su Arduino.
Collegamento del nastro WS2812B ad Arduino Uno (Nano)
Nella prima fase sono sufficienti semplici schede Arduino Uno o Arduino Nano. In futuro, sarà possibile utilizzare schede più complesse per costruire sistemi più complessi. Quando si collega fisicamente la striscia LED indirizzabile alla scheda Arduino, è necessario rispettare diverse condizioni:
- a causa della bassa immunità ai disturbi, i conduttori di collegamento della linea dati dovrebbero essere il più corti possibile (dovresti provare a farli entro 10 cm);
- è necessario collegare il conduttore dati all'uscita digitale libera della scheda Arduino - verrà quindi specificato a livello di programmazione;
- a causa dell'elevato consumo energetico, non è necessario alimentare il nastro dalla scheda: a tale scopo sono forniti alimentatori separati.
Il cavo di alimentazione comune della lampada e di Arduino deve essere collegato.

WS2812B Nozioni di base sul controllo del programma
Si è già detto che per controllare i microcircuiti WS2812B è necessario generare impulsi di una certa lunghezza, mantenendo un'elevata precisione. Esistono comandi in linguaggio Arduino per la formazione di impulsi brevi ritardoMicrosecondi e micro. Il problema è che la risoluzione di questi comandi è di 4 microsecondi. Cioè, non funzionerà per formare ritardi di tempo con una determinata precisione. È necessario passare agli strumenti C++ o Assembler. E puoi organizzare il controllo della striscia LED indirizzabile tramite Arduino utilizzando librerie appositamente create per questo. Puoi iniziare a conoscere il programma Blink, che fa lampeggiare gli elementi che emettono luce.
led veloce
Questa libreria è universale. Oltre al nastro degli indirizzi, supporta una varietà di dispositivi, inclusi i nastri controllati dall'interfaccia SPI. Ha ampie possibilità.
In primo luogo, la libreria deve essere inclusa. Questo viene fatto prima del blocco di installazione e la riga appare così:
#include <FastLED.h>
Il passaggio successivo consiste nel creare una matrice per memorizzare i colori di ciascun diodo emettitore di luce. Avrà la striscia del nome e la dimensione 15 - per il numero di elementi (è meglio assegnare una costante a questo parametro).
Striscia CRGB[15]
Nel blocco di configurazione, è necessario specificare con quale nastro funzionerà lo schizzo:
configurazione vuota() {
FastLED.addLeds< WS2812B, 7, RGB>(striscia, 15);
int;
}
Il parametro RGB imposta l'ordine della sequenza dei colori, 15 indica il numero di LED, 7 è il numero dell'uscita assegnata al controllo (è meglio assegnare una costante anche all'ultimo parametro).
Il blocco del ciclo inizia con un ciclo che scrive in sequenza in ciascuna sezione dell'array Red (bagliore rosso):
for (g=0; g< 15; g++)
{striscia[g]=CRGB::Rosso;}
Successivamente, l'array formato viene inviato alla lampada:
FastLED.show();
Ritardo 1000 millisecondi (secondo):
ritardo(1000);
Quindi puoi disattivare tutti gli elementi allo stesso modo scrivendo in nero su di essi.
for (int g=0; g< 15; g++)
{striscia[g]=CRGB::Nero;}
FastLED.show();
ritardo(1000);

Dopo aver compilato e caricato lo schizzo, il nastro lampeggerà con un periodo di 2 secondi. Se è necessario gestire ogni componente di colore separatamente, al posto della linea {striscia[g]=CRGB::Rosso;} vengono utilizzate più righe:
{
striscia[g].r=100;// imposta il livello di luminosità dell'elemento rosso
striscia[g].g=11;// lo stesso per il verde
striscia[g].b=250;// lo stesso per il blu
}
NeoPixel
Questa libreria funziona solo con gli anelli LED NeoPixel Ring, ma richiede meno risorse e contiene solo l'essenziale. In linguaggio Arduino, il programma si presenta così:
#include <Adafruit_NeoPixel.h>
Come nel caso precedente, la libreria è connessa e l'oggetto lenta è dichiarato:
Adafruit_NeoPixel lenta=Adafruit_NeoPixel(15, 6);// dove 15 è il numero di elementi e 6 è l'uscita assegnata
Nel blocco di installazione, il nastro viene inizializzato:
configurazione vuota() {
lenta.inizio()
}
Nel blocco loop, tutti gli elementi sono evidenziati in rosso, la variabile viene passata al feed e viene creato un ritardo di 1 secondo:
for (int y=0; y<15; y++)// 15 - il numero di elementi nella lampada
{lenta.setPixelColor(y, lenta.Color(255,0,0))};
tape.show();
ritardo(1000);
Il bagliore si interrompe con un record nero:
for (int y=0; y< 15; y++)
{lenta.setPixelColor(y, lenta.Color(0,0,0))};
tape.show();
ritardo(1000);

Video tutorial: esempi di effetti visivi utilizzando nastri di indirizzi.
Dopo aver imparato a far lampeggiare i LED, puoi continuare a imparare a creare effetti di colore, inclusi i famosi Rainbow e Aurora Borealis con transizioni fluide. I LED indirizzabili WS2812B e Arduino offrono possibilità quasi illimitate per questo.
