Přeskočit na hlavní obsah

Jak na: Smart LED Strip

Na pásku Smart LED Strip snadno zobrazíte hodnoty, například teplotu jako barevnou škálu, blikání apod.

Potřebujete k tomu modul Power Module, který se stará o napájení a o komunikaci mezi modulem Core Module a LED páskem.

Odkazy​

Dostupné barvy​

LED na našem pásku jsou typu RGBW, takže mají samostatný zdroj světla pro červenou, zelenou, modrou a bílou barvu (teplá bílá).

informace

Téměř studené bílé světlo získáte, když všechny barvy nastavíte na stejnou hodnotu.

Příklad​

V tomto příkladu nastavíte prvních 35 LED tak, aby každá svítila o 5 bodů jasněji než předchozí. Svítit budou modře.

Bez pole _led_strip_buffer LED pásek nefunguje. Jde v podstatě o popis LED pásku pro modul Core Module.

Barvu pixelu (LED na pásku) nastavíte funkcí twr_led_strip_set_pixel_rgbw(twr_led_strip_t *self, int position, uint8_t r, uint8_t g, uint8_t b, uint8_t w). Jejími argumenty jsou:

  • *self: instance LED pásku, nejčastěji &led_strip
  • position: pixel (LED) na pásku, který se má nastavit (začíná od 0, nikoli od 1)
  • r, g, b, w: jak silně má která barva svítit; hodnoty musí být mezi 0 (minimum) a 255 (maximum)

Aby se změny projevily, musíte zavolat twr_led_strip_write(&led_strip);. Pokud to neuděláte, na pásku se nic nestane.

Příklad kódu: nastavení několika LED

#include <application.h>

twr_led_strip_t led_strip;
static uint32_t _dma_buffer[144 * 4 * 2]; // count * type * 2
const twr_led_strip_buffer_t _led_strip_buffer =
{
.type = TWR_LED_STRIP_TYPE_RGBW,
.count = 144,
.buffer = _dma_buffer
};

void application_init(void)
{
twr_module_power_init();
twr_led_strip_init(&led_strip, twr_module_power_get_led_strip_driver(), &_led_strip_buffer);

uint8_t blue = 0;
for (int i = 0; i < 35; ++i) {
twr_led_strip_set_pixel_rgbw(&led_strip, i, 0, 0, blue, 0);
blue += 5;
}

twr_led_strip_write(&led_strip);
}

tip

Maximální jas celého LED pásku můžete omezit funkcí twr_led_strip_set_brightness(twr_led_strip_t *self, uint8_t brightness).

Efekty LED pásku​

K dispozici je několik funkcí pro efekty.

tip

Tyto efekty vypadají skvěle a možná je využijete pro nějakou signalizaci, aniž byste je museli programovat sami.

Pokud si chcete efekty vyzkoušet, použijte tuto kostru kódu pro pásek se 144 LED.

Příklad kódu: kostra pro efekty LED pásku

#include <application.h>

twr_led_strip_t led_strip;
static uint32_t _dma_buffer[144 * 4 * 2]; // count * type * 2
const twr_led_strip_buffer_t _led_strip_buffer =
{
.type = TWR_LED_STRIP_TYPE_RGBW,
.count = 144,
.buffer = _dma_buffer
};

void application_init(void)
{
twr_module_power_init();
twr_led_strip_init(&led_strip, twr_module_power_get_led_strip_driver(), &_led_strip_buffer);

// place examples here

}

Efekt Test​

Jednoduchý efekt, kterým ověříte, jestli všechny barvy LED pásku fungují správně.

twr_led_strip_effect_test(&led_strip);

Efekt Rainbow​

LED pásek se rozsvítí v barvách duhy a bude je plynule posouvat dokola (co na jednom konci pásku skončí, na druhém začne).

poznámka

Druhý parametr představuje rychlost změny. Nižší číslo = rychlejší změny.

twr_led_strip_effect_rainbow_cycle(&led_strip, 100);
tip

Existuje také funkce twr_led_strip_effect_rainbow(&led_strip, 100);, která funguje téměř stejně, ale chvíli trvá, než se barva objeví na jednom konci pásku poté, co zmizí z druhého.

Efekt Color Wipe​

Vyplní celý pásek pixel po pixelu jednou barvou.

twr_led_strip_effect_color_wipe(&led_strip, 0x10000000, 20);
tip

První parametr je barva v hexadecimálním formátu (tady červená), druhý je rychlost. Čím nižší hodnota, tím rychlejší změna.

Efekt Theater​

LED se přepínají podle vzoru níže: - znamená zhasnutou LED, X rozsvícenou.

twr_led_strip_effect_color_wipe(&led_strip, 0x10000000, 20);

Vzor:

X–X–X–X–X–X -X–X–X–X–X– –X–X–X–X–X- X–X–X–X–X–X

tip

První parametr je barva v hexadecimálním formátu (uložená v uint32_t), druhý je rychlost změn. Čím nižší hodnota, tím rychlejší změna.

Efekt Stroboscope​

Efekt ICicle​

Efekt Pulse Color​

Efekt Thermometer​

Zastavení efektu​

Efekt snadno zastavíte touto funkcí:

twr_led_strip_effect_stop(&led_strip);

Příklad kódu: zastavení efektu LED pásku

#include <application.h>

twr_led_strip_t led_strip;
static uint32_t _dma_buffer[144 * 4 * 2]; // count * type * 2
const twr_led_strip_buffer_t _led_strip_buffer =
{
.type = TWR_LED_STRIP_TYPE_RGBW,
.count = 144,
.buffer = _dma_buffer
};


void stop_effect(void* param) {
(void) param;
twr_led_strip_effect_stop(&led_strip);
}

void application_init(void)
{
twr_module_power_init();
twr_led_strip_init(&led_strip, twr_module_power_get_led_strip_driver(), &_led_strip_buffer);

twr_led_strip_effect_theater_chase_rainbow(&led_strip, 100);
twr_scheduler_register(stop_effect, NULL, twr_tick_get() + 3000);
}