1#include "../../Defines.h"
20 FastLED.addLeds<WS2812,
DATA_PIN, GRB>(_ledbuff, LEDNumber);
21 _xSemaphore = xSemaphoreCreateMutex();
22 _numberled = LEDNumber;
32 for (
int num = 0; num <
NUM_LEDS; num++)
34 _ledbuff[num] = 0x000000;
37 FastLED.setBrightness(20);
41 xSemaphoreTake(_xSemaphore, portMAX_DELAY);
44 _displaybuff(_am_buffptr, _count_x, _count_y);
68 if ((_am_count != -1) && (_am_count != 0))
82 FastLED.setBrightness(20);
84 xSemaphoreGive(_xSemaphore);
89void LED_DisPlay::_displaybuff(uint8_t *buffptr, int32_t offsetx, int32_t offsety)
91 uint16_t xsize = 0, ysize = 0;
95 offsetx = offsetx % xsize;
96 offsety = offsety % ysize;
98 int16_t setdatax = (offsetx < 0) ? (-offsetx) : (xsize - offsetx);
99 int16_t setdatay = (offsety < 0) ? (-offsety) : (ysize - offsety);
100 for (
int x = 0; x < 5; x++)
102 for (
int y = 0; y < 5; y++)
104 _ledbuff[x + y * 5].raw[1] = buffptr[2 + ((setdatax + x) % xsize + ((setdatay + y) % ysize) * xsize) * 3 + 0];
105 _ledbuff[x + y * 5].raw[0] = buffptr[2 + ((setdatax + x) % xsize + ((setdatay + y) % ysize) * xsize) * 3 + 1];
106 _ledbuff[x + y * 5].raw[2] = buffptr[2 + ((setdatax + x) % xsize + ((setdatay + y) % ysize) * xsize) * 3 + 2];
114 xSemaphoreTake(_xSemaphore, portMAX_DELAY);
119 _am_buffptr = buffptr;
123 _count_x = _count_y = 0;
125 xSemaphoreGive(_xSemaphore);
130 uint16_t xsize = 0, ysize = 0;
134 offsetx = offsetx % xsize;
135 offsety = offsety % ysize;
137 int16_t setdatax = (offsetx < 0) ? (-offsetx) : (xsize - offsetx);
138 int16_t setdatay = (offsety < 0) ? (-offsety) : (ysize - offsety);
139 xSemaphoreTake(_xSemaphore, portMAX_DELAY);
141 for (
int x = 0; x < 5; x++)
143 for (
int y = 0; y < 5; y++)
145 _ledbuff[x + y * 5].raw[1] = buffptr[2 + ((setdatax + x) % xsize + ((setdatay + y) % ysize) * xsize) * 3 + 0];
146 _ledbuff[x + y * 5].raw[0] = buffptr[2 + ((setdatax + x) % xsize + ((setdatay + y) % ysize) * xsize) * 3 + 1];
147 _ledbuff[x + y * 5].raw[2] = buffptr[2 + ((setdatax + x) % xsize + ((setdatay + y) % ysize) * xsize) * 3 + 2];
153 xSemaphoreGive(_xSemaphore);
159 xSemaphoreTake(_xSemaphore, portMAX_DELAY);
160 brightness = (brightness > 100) ? 100 : brightness;
161 brightness = (40 * brightness / 100);
164 xSemaphoreGive(_xSemaphore);
169 if ((xpos >= 5) || (ypos >= 5))
173 xSemaphoreTake(_xSemaphore, portMAX_DELAY);
174 _ledbuff[xpos + ypos * 5] = Color;
176 xSemaphoreGive(_xSemaphore);
185 xSemaphoreTake(_xSemaphore, portMAX_DELAY);
186 _ledbuff[Number] = Color;
188 xSemaphoreGive(_xSemaphore);
193 xSemaphoreTake(_xSemaphore, portMAX_DELAY);
199 xSemaphoreGive(_xSemaphore);
204 xSemaphoreTake(_xSemaphore, portMAX_DELAY);
205 for (int8_t i = 0; i <
NUM_LEDS; i++)
210 xSemaphoreGive(_xSemaphore);
228 _xColumns = xColumns;
void registerPinUse_mainModule(long pin, String pinName, String moduleName, boolean isI2C)
void begin(uint8_t LEDNumber=NUM_LEDS)
void displaybuff(uint8_t *buffptr, int32_t offsetx=0, int32_t offsety=0)
void setBrightness(uint8_t brightness)
boolean animationrunning()
void drawpix(uint8_t xpos, uint8_t ypos, CRGB Color)
void animation(uint8_t *buffptr, uint8_t amspeed, uint8_t ammode, int64_t amcount=-1)
void setWidthHeight(uint16_t xColumns, uint16_t yRows)