Postavljanje piksela
Što prikazuje ovaj primjer
Kako upaliti pojedinačne LED diode prema njihovu položaju (x, y). Skica postavlja nisku svjetlinu, boji tri kuta i dva piksela u sredini, jednom zasebnim vrijednostima crvene, zelene i plave, a jednom spakiranom bojom, a zatim sve šalje na mrežu jednim pozivom show().
Povežite VCC na 5 V, GND na GND i DIN na pin 6 svojeg kontrolera ili promijenite PIN na pin koji ste upotrijebili.
Kôd primjera
Ovo je SetPixel.ino iz fiksirane inačice biblioteke, točno onakav kakav se isporučuje.
/**
**************************************************
*
* @file SetPixel.ino
* @brief Basic usage: set individual pixels by (x, y) coordinates on the
* Soldered 8x8 WS2812B LED grid.
*
* Connect the grid data line to PIN below.
* (0, 0) is top-left. X increases to the right, Y increases downward.
*
* @authors Josip Šimun Kuči @ soldered.com
***************************************************/
#include "WS2812Grid-SOLDERED.h"
#define PIN 6
WS2812Grid grid(PIN);
void setup()
{
grid.begin();
// Set overall brightness (0 = off, 255 = full).
// Keep this low to avoid excessive current draw.
grid.setBrightness(40);
// Draw a red pixel at the top-left corner
grid.setPixel(0, 0, 255, 0, 0);
// Draw a green pixel at the top-right corner
grid.setPixel(7, 0, 0, 255, 0);
// Draw a blue pixel at the bottom-left corner
grid.setPixel(0, 7, 0, 0, 255);
// Draw a white pixel in the centre using a packed color
grid.setPixel(3, 3, WS2812Grid::Color(255, 255, 255));
grid.setPixel(4, 4, WS2812Grid::Color(255, 255, 255));
// Push all changes to the hardware
grid.show();
}
void loop()
{
// Nothing to do — pixels stay lit
}
Očekivani rezultat: skica ne ispisuje ništa u Serial Monitor. Odmah nakon prijenosa gornji lijevi piksel (0, 0) svijetli crveno, gornji desni piksel (7, 0) zeleno, donji lijevi piksel (0, 7) plavo, a pikseli na (3, 3) i (4, 4) bijelo, svi sa svjetlinom 40 od 255. Ostaju upaljeni jer loop() ne radi ništa.
Korištene funkcije
WS2812Grid(uint8_t pin, uint8_t width = 8, uint8_t height = 8)returns WS2812GridStvara upravljački program mreže za width x height LED dioda na pinu povezanom na DIN. Jedna mreža je 8 x 8, što je zadano. Za više povezanih mreža zadajte punu širinu i visinu panela.
ReturnsObjekt mreže.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
uint8_t | pin | Arduino pin povezan na DIN mreže. |
uint8_t | width | Broj stupaca, višekratnik broja 8. Zadano 8. |
uint8_t | height | Broj redaka, višekratnik broja 8. Zadano 8. |
begin()returns voidInicijalizira upravljački program LED dioda, postavlja podatkovni pin kao izlaz, zatim briše svaki piksel i poziva show(), pa mreža počinje tamna. Pozovite ga jednom u setup().
ReturnsNišta.
setBrightness(uint8_t b)returns voidPostavlja izlaznu svjetlinu za sve LED diode. Promjena se vidi pri sljedećem show(). Namijenjeno je da se postavi jednom u setup(): biblioteka skalira pohranjene boje, pa ponovljeno mijenjanje gubi preciznost boje.
ReturnsNišta.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
uint8_t | b | Svjetlina, od 0 (isključeno) do 255 (najsvjetlije). |
setPixel(uint8_t x, uint8_t y, uint8_t r, uint8_t g, uint8_t b)returns voidPostavlja jednu LED diodu prema njezinu položaju na mreži na zasebne vrijednosti crvene, zelene i plave. Položaj izvan mreže se zanemaruje. Nakon toga pozovite show() kako biste promjenu poslali na LED diode.
ReturnsNišta.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
uint8_t | x | Stupac, 0 = lijevo. |
uint8_t | y | Redak, 0 = gore. |
uint8_t | r | Crvena, od 0 do 255. |
uint8_t | g | Zelena, od 0 do 255. |
uint8_t | b | Plava, od 0 do 255. |
setPixel(uint8_t x, uint8_t y, uint32_t color)returns voidPostavlja jednu LED diodu prema njezinu položaju na mreži na spakiranu boju, na primjer onu napravljenu pomoću WS2812Grid::Color(). Položaj izvan mreže se zanemaruje. Nakon toga pozovite show() kako biste promjenu poslali na LED diode.
ReturnsNišta.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
uint8_t | x | Stupac, 0 = lijevo. |
uint8_t | y | Redak, 0 = gore. |
uint32_t | color | Spakirana boja, 0x00RRGGBB. |
WS2812Grid::Color(uint8_t r, uint8_t g, uint8_t b)returns uint32_tStatička pomoćna funkcija koja pakira crvenu, zelenu i plavu u jednu 32-bitnu vrijednost boje, za setPixel() sa spakiranom bojom. Pozovite je na klasi, kao WS2812Grid::Color().
ReturnsSpakirana boja, (r << 16) | (g << 8) | b.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
uint8_t | r | Crvena, od 0 do 255. |
uint8_t | g | Zelena, od 0 do 255. |
uint8_t | b | Plava, od 0 do 255. |
show()returns voidŠalje boje pohranjene u memoriji na LED diode. Na većini pločica nakratko isključuje prekide kako bi održala vremenski slijed signala, pa millis() i micros() pri svakom izvršavanju gube oko 30 µs po LED diodi.
ReturnsNišta.
Sastavljanje u cjelinu
Izradite mrežu s pinom povezanim na DIN, jednom pozovite begin(), postavite svjetlinu, zatim postavite koliko god piksela želite i završite jednim pozivom show().
Na mreži se ništa ne mijenja dok se ne izvrši show(). Povećanje svjetline iznad
40 čini LED diode svjetlijima i povlači više struje, stoga najprije provjerite svoje napajanje od 5 V.