Animacije
Što prikazuje ovaj primjer
Kako animirati cijelu mrežu ponovnim crtanjem sličicu po sličicu. Primjer u beskonačnoj petlji izvodi dvije animacije: prelazak po recima koji redom pali jedan redak odozgo prema dolje te dugu koja kroz kolo boja provodi svaki piksel, pri čemu je svaki piksel malo dalje od svog susjeda.
Spojite VCC na 5 V, GND na GND i DIN na pin 6 svojeg kontrolera ili promijenite broj u Pin(6, Pin.OUT) u pin koji ste koristili.
Primjer koda
Ovo je Animations.py iz zadanog modula, točno onakav kakav se isporučuje.
# FILE: Animations.py
# AUTHOR: Josip Šimun Kuči @ Soldered
# BRIEF: Demonstrates row sweep and colour-cycle animations on the
# Soldered 8x8 WS2812B LED grid.
# Connect the grid data line to the pin defined below.
# WORKS WITH: Soldered WS2812B LED Grid: www.soldered.com
# LAST UPDATED: 2026-05-12
from machine import Pin
from WS2812Grid import WS2812Grid
import time
PIN = Pin(6, Pin.OUT)
grid = WS2812Grid(PIN)
grid.begin()
grid.setBrightness(40)
# ---------------------------------------------------------------------------
# Helpers
# ---------------------------------------------------------------------------
def colorWheel(pos):
"""Simple HSV-to-RGB wheel: hue 0-255."""
pos = 255 - pos
if pos < 85:
return WS2812Grid.Color(255 - pos * 3, 0, pos * 3)
if pos < 170:
pos -= 85
return WS2812Grid.Color(0, pos * 3, 255 - pos * 3)
pos -= 170
return WS2812Grid.Color(pos * 3, 255 - pos * 3, 0)
# ---------------------------------------------------------------------------
# Animations
# ---------------------------------------------------------------------------
def rowSweep():
for y in range(8):
grid.clear()
for x in range(8):
grid.setPixel(x, y, 0, 180, 255)
grid.show()
time.sleep_ms(80)
def rainbowGrid(cycles):
for _ in range(cycles):
for hue in range(256):
for y in range(8):
for x in range(8):
offset = (x + y * 2) & 0xFF
grid.setPixel(x, y, colorWheel((hue + offset) & 0xFF))
grid.show()
time.sleep_ms(10)
# ---------------------------------------------------------------------------
# Main loop
# ---------------------------------------------------------------------------
while True:
rowSweep()
time.sleep_ms(200)
rainbowGrid(2)
time.sleep_ms(200)
🔗Otvorite cijeli primjer
Examples/Animations.py u commitu db93fa3
Očekivani rezultat: primjer ne ispisuje ništa u konzoli. Na mreži, pri svjetlini 40 od 255, svaki se redak redom pali bojom (0, 180, 255) na 80 ms, od gornjeg do donjeg retka. Nakon stanke od 200 ms duga dvaput prolazi kroz 256 boja kola, 10 ms po koraku, a svaki je piksel pomaknut duž kola za svoj stupac plus dvostruki redak. Slijedi još jedna stanka od 200 ms i petlja počinje ispočetka dok ne zaustavite skriptu.
Korištene funkcije
WS2812Grid(pin, width=8, height=8)returns WS2812GridStvara upravljački program mreže: objekt neopixel.NeoPixel za width x height LED dioda na zadanom pinu. Jedna mreža je 8 x 8, što je zadana vrijednost. Svjetlina počinje na 255.
ReturnsObjekt mreže.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
machine.Pin | pin | Pin objekt spojen na DIN mreže, na primjer Pin(6, Pin.OUT). |
int | width | Broj stupaca, višekratnik broja 8. Zadano 8. |
int | height | Broj redaka, višekratnik broja 8. Zadano 8. |
begin()returns NoneGasi svaki piksel i poziva show(), pa mreža započinje ugašena.
ReturnsNišta.
setBrightness(brightness)returns NonePostavlja skalu svjetline. Vrijednosti izvan raspona od 0 do 255 ograničavaju se na taj raspon. Primjenjuje se pri postavljanju piksela, pa je pozovite prije setPixel() ili fill(); pikseli koji su već postavljeni zadržavaju svoju svjetlinu.
ReturnsNišta.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
int | brightness | Od 0 (isključeno) do 255 (puna svjetlina). |
clear()returns NoneGasi sve LED diode u međuspremniku. Ne poziva show(): LED diode se gase tek pri sljedećem show(). Prelazak po recima koristi je za brisanje prethodnog retka prije crtanja sljedećeg.
ReturnsNišta.
setPixel(x, y, r_or_color, g=None, b=None)returns NonePostavlja jednu LED diodu prema njezinu položaju na mreži. Prelazak po recima predaje r, g i b kao tri vrijednosti; duga predaje jednu spakiranu boju iz colorWheel() i izostavlja g i b. Boja se skalira svjetlinom. Položaj izvan mreže se zanemaruje. Nakon toga pozovite show() kako biste promjenu poslali na LED diode.
ReturnsNišta.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
int | x | Stupac, 0 = lijevo. |
int | y | Redak, 0 = vrh. |
int | r_or_color | Crvena, od 0 do 255, ili spakirana boja 0x00RRGGBB kada su g i b izostavljeni. |
int | g | Zelena, od 0 do 255. Neobavezno. |
int | b | Plava, od 0 do 255. Neobavezno. |
WS2812Grid.Color(r, g, b)returns intStatička metoda koja crvenu, zelenu i plavu sprema u jedan cijeli broj. Pomoćna funkcija colorWheel() iz primjera koristi je za pretvaranje položaja na kolu u boju.
ReturnsSpakirana boja, (r << 16) | (g << 8) | b.
Parametri
| Tip | Naziv | Opis |
|---|---|---|
int | r | Crvena, od 0 do 255. |
int | g | Zelena, od 0 do 255. |
int | b | Plava, od 0 do 255. |
show()returns NoneUpisuje boje iz međuspremnika na LED diode.
ReturnsNišta.
Sve zajedno
Svaka se sličica crta na isti način: promijenite piksele u međuspremniku pomoću clear() i setPixel(), zatim jednom pozovite show() i pričekajte prije sljedeće sličice. Funkcija time.sleep_ms() iza svakog show() određuje brzinu, pa promijenite 80 i 10 kako bi prelazak po recima ili duga bili brži ili sporiji. colorWheel() i dvije funkcije animacije dio su primjera, a ne modula.