Skip to main content

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 WS2812Grid

Stvara 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

TipNazivOpis
machine.PinpinPin objekt spojen na DIN mreže, na primjer Pin(6, Pin.OUT).
intwidthBroj stupaca, višekratnik broja 8. Zadano 8.
intheightBroj redaka, višekratnik broja 8. Zadano 8.
begin()returns None

Gasi svaki piksel i poziva show(), pa mreža započinje ugašena.

ReturnsNišta.

setBrightness(brightness)returns None

Postavlja 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

TipNazivOpis
intbrightnessOd 0 (isključeno) do 255 (puna svjetlina).
clear()returns None

Gasi 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 None

Postavlja 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

TipNazivOpis
intxStupac, 0 = lijevo.
intyRedak, 0 = vrh.
intr_or_colorCrvena, od 0 do 255, ili spakirana boja 0x00RRGGBB kada su g i b izostavljeni.
intgZelena, od 0 do 255. Neobavezno.
intbPlava, od 0 do 255. Neobavezno.
WS2812Grid.Color(r, g, b)returns int

Statič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

TipNazivOpis
intrCrvena, od 0 do 255.
intgZelena, od 0 do 255.
intbPlava, od 0 do 255.
show()returns None

Upisuje 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.