8000 add · GyverLibs/microLED@dfb98ee · GitHub
[go: up one dir, main page]

Skip to content

Commit dfb98ee

Browse files
committed
add
1 parent 62b17a9 commit dfb98ee

File tree

28 files changed

+2869
-0
lines changed

28 files changed

+2869
-0
lines changed

README.md

Lines changed: 379 additions & 0 deletions
Large diffs are not rendered by default.

docs/config.jpg

169 KB
Loading

docs/libs comparsion.xlsx

11.3 KB
Binary file not shown.

docs/zig_paral.jpg

426 KB
Loading

docs/zig_paral2.jpg

302 KB
Loading
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
// При помощи CRGBtoData() можно конвертировать CRGB в mDATA!
2+
// Используем быструю математику FastLED и компактный вывод microLED
3+
// для достижения максимума каефа при минимуме занятой памяти
4+
5+
// ===============================================================
6+
#include <FastLEDsupport.h> // вкл поддержку FL
7+
DEFINE_GRADIENT_PALETTE( heatmap_gp ) { // делаем палитру огня
8+
0, 0, 0, 0, // black
9+
128, 255, 0, 0, // red
10+
224, 255, 255, 0, // bright yellow
11+
255, 255, 255, 255 // full white
12+
};
13+
CRGBPalette16 fire_p = heatmap_gp;
14+
// ===============================================================
15+
16+
// микролед
17+
#define LEDPIN 2
18+
#include <microLED.h>
19+
microLED<0, LEDPIN, MLED_NO_CLOCK, LED_WS2818, ORDER_GRB, CLI_AVER> strip;
20+
21+
void setup() {
22+
strip.setBrightness(150);
23+
}
24+
25+
void loop() {
26+
static int count = 0;
27+
count += 10;
28+
strip.begin();
29+
for (int i = 0; i < 50; i++)
30+
strip.send(CRGBtoData(ColorFromPalette(fire_p, inoise8(i * 25, count), 255, LINEARBLEND)));
31+
32+
strip.end();
33+
delay(30);
34+
}
35+
36+
37+
/*
38+
// тинилед
39+
#define TLED_PORT PORTD // выводил на Нанку, портД
40+
#define TLED_DDR DDRD
41+
#include <tinyLED.h>
42+
tinyLED<3> strip;
43+
void setup() {
44+
strip.setBrightness(100);
45+
}
46+
void loop() {
47+
static int count = 0;
48+
count += 10;
49+
for (int i = 0; i < 50; i++)
50+
strip.send(CRGBtoData(ColorFromPalette(fire_p, inoise8(i * 25, count), 255, LINEARBLEND)));
51+
delay(30);
52+
}
53+
*/
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
// При помощи CRGBtoData() можно конвертировать CRGB в mDATA!
2+
// Используем быструю математику FastLED и компактный вывод microLED
3+
// для достижения максимума каефа при минимуме занятой памяти
4+
#define LEDPIN 2
5+
#include <microLED.h>
6+
#include <FastLEDsupport.h> // вкл поддержку
7+
microLED<0, LEDPIN, MLED_NO_CLOCK, LED_WS2818, ORDER_GRB, CLI_AVER> strip;
8+
9+
void setup() {
10+
strip.setBrightness(150);
11+
}
12+
13+
void loop() {
14+
static byte count = 0;
15+
static int count2 = 0;
16+
count++;
17+
count2 += 10;
18+
strip.begin();
19+
for (int i = 0; i < 50; i++) {
20+
// движется палитра полосатая
21+
//strip.send(CRGBtoData(ColorFromPalette(RainbowStripeColors_p, count + i * 3, 255, LINEARBLEND)));
22+
23+
// рандомный шум радугой
24+
strip.send(CRGBtoData(ColorFromPalette(RainbowColors_p, inoise8(i * 20, count2), 255, LINEARBLEND)));
25+
}
26+
strip.end();
27+
delay(40);
28+
}
29+
30+
/*
31+
// =========== ТО ЖЕ САМОЕ ДЛЯ ТИНИЛЕД ==========
32+
#define TLED_PORT PORTD // выводил на Нанку, портД (пин D3)
33+
#define TLED_DDR DDRD
34+
#include <tinyLED.h>
35+
#include <FastLEDsupport.h>
36+
tinyLED<3> strip;
37+
void setup() {
38+
strip.setBrightness(100);
39+
}
40+
void loop() {
41+
static byte count = 0;
42+
static int count2 = 0;
43+
count++;
44+
count2 += 10;
45+
for (int i = 0; i < 50; i++) {
46+
// движется палитра полосатая
47+
//strip.send(CRGBtoData(ColorFromPalette(RainbowStripeColors_p, count + i * 3, 255, LINEARBLEND)));
48+
49+
// рандомный шум радугой
50+
strip.send(CRGBtoData(ColorFromPalette(RainbowColors_p, inoise8(i * 20, count2), 255, LINEARBLEND)));
51+
}
52+
delay(40);
53+
}
54+
*/
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
// простейшие динамические эффекты
2+
// сначала ознакомься с примером microLED_guide !!!
3+
4+
#define STRIP_PIN 2 // пин ленты
5+
#define NUMLEDS 20 // кол-во светодиодов
6+
7+
#define COLOR_DEBTH 3
8+
#include <microLED.h> // подключаем библу
9+
microLED<NUMLEDS, STRIP_PIN, MLED_NO_CLOCK, LED_WS2818, ORDER_GRB, CLI_AVER> strip;
10+
11+
void setup() {
12+
strip.setBrightness(60);
13+
}
14+
15+
void loop() {
16+
// раскомментируй нужный эффект
17+
18+
rainbow(); // бегущая радуга во всю ленту
19+
//filler(); // плавное заполнение
20+
//colorCycle(); // плавная смена цвета
21+
//runningDots(); // бегущие точки
22+
23+
// вывод
24+
breathing(); // "дыхание" яркости, применяется ко всем эффектам
25+
strip.show(); // вывод
26+
delay(30); // 30 кадров в секунду
27+
}
28+
29+
void rainbow() {
30+
static byte counter = 0;
31+
for (int i = 0; i < NUMLEDS; i++) {
32+
strip.set(i, mWheel8(counter + i * 255 / NUMLEDS)); // counter смещает цвет
33+
}
34+
counter += 3; // counter имеет тип byte и при достижении 255 сбросится в 0
35+
}
36+
37+
void filler() {
38+
static int counter = 0;
39+
strip.clear();
40+
strip.fill(0, counter, mRed);
41+
counter++;
42+
if (counter >= NUMLEDS) counter = 0;
43+
}
44+
45+
void colorCycle() {
46+
static byte counter = 0;
47+
strip.fill(mWheel8(counter));
48+
counter += 3;
49+
}
50+
51+
void runningDots() {
52+
static byte counter = 0;
53+
// перемотка буфера со сдвигом (иллюзия движения пикселей)
54+
for (int i = 0; i < NUMLEDS - 1; i++) strip.leds[i] = strip.leds[i + 1];
55+
56+
// каждый третий вызов - последний пиксель красным, иначе чёрным
57+
if (counter % 3 == 0) strip.leds[NUMLEDS - 1] = mRed;
58+
else strip.leds[NUMLEDS - 1] = mBlack;
59+
counter++;
60+
delay(100); // дополнительная задержка
61+
}
62+
63+
void breathing() {
64+
static int dir = 1;
65+
static int bright = 0;
66+
bright += dir * 5; // 5 - множитель скорости изменения
67+
68+
if (bright > 255) {
69+
bright = 255;
70+
dir = -1;
71+
}
72+
if (bright < 0) {
73+
bright = 0;
74+
dir = 1;
75+
}
76+
strip.setBrightness(bright);
77+
}

examples/bitmap/bitmap.ino

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
#define STRIP_PIN 2 // пин ленты
2+
3+
// для генерации битмапа используется программа imageProcessor
4+
// https://github.com/AlexGyver/imageProcessor
5+
// со стандартными настройками, выбираем только глубину цвета (RGB888/565/232)
6+
// остальные - PROGMEM вкл, массив 1D
7+
const uint16_t bitmap_8x8[] PROGMEM = {
8+
0x0000, 0x0000, 0x0000, 0xF809, 0xF809, 0xF809, 0xFF9D, 0x0000,
9+
0x0000, 0x0000, 0x0000, 0xF809, 0xF809, 0xF809, 0xF809, 0xF809,
10+
0x0000, 0x0000, 0xAA86, 0xFE75, 0xAA86, 0x0000, 0xFE75, 0x0000,
11+
0x0000, 0x0000, 0xAA86, 0xFE75, 0xFE75, 0xAA86, 0xAA86, 0xFE75,
12+
0x0000, 0x0000, 0x0000, 0xAA86, 0xFE75, 0xFE75, 0xFE75, 0x0000,
13+
0x0000, 0xF809, 0xF809, 0xFFE4, 0x2D7F, 0x2D7F, 0xFD00, 0x0000,
14+
0xFF9D, 0x0000, 0x2D7F, 0x2D7F, 0x2D7F, 0x2D7F, 0x194A, 0x83B3,
15+
0x0000, 0x0000, 0xAA86, 0x0000, 0x0000, 0x0000, 0x792A, 0x0000,
16+
};
17+
#define COLOR_DEBTH 2
18+
#include <microLED.h>
19+
microLED<32 * 8, STRIP_PIN, MLED_NO_CLOCK, LED_WS2812, ORDER_GRB, CLI_HIGH> matrix(32, 8, ZIGZAG, LEFT_TOP, DIR_DOWN);
20+
21+
void setup() {
22+
matrix.setBrightness(150);
23+
for (int x = -10; x < 10; x++) {
24+
matrix.drawBitmap16(x, x, bitmap_8x8, 8, 8);
25+
matrix.show();
26+
delay(500);
27+
matrix.clear();
28+
}
29+
// также есть drawBitmap8 и drawBitmap32
30+
// (x, y, массив, ширина, высота)
31+
}
32+
33+
void loop() {
34+
}

examples/gradient/gradient.ino

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
// пример работы с градиентами
2+
3+
#define STRIP_PIN 2 // пин ленты
4+
#define NUMLEDS 20 // кол-во светодиодов
5+
6+
#include <microLED.h>
7+
microLED<NUMLEDS, STRIP_PIN, MLED_NO_CLOCK, LED_WS2818, ORDER_GRB, CLI_AVER> strip;
8+
9+
void setup() {
10+
strip.setBrightness(100);
11+
12+
// в библиотеке есть два инструмента градиентной заливки:
13+
// простой двойной и на любое количество точек
14+
15+
// ===== ДВОЙНОЙ ГРАДИЕНТ =====
16+
// заливает (от, до, цвет1, цвет2)
17+
strip.fillGradient(0, 10, mRed, mWhite);
18+
strip.show();
19+
delay(2000);
20+
21+
// можно указать любой цвет в формате mData
22+
strip.fillGradient(0, 10, mWheel8(30), mRGB(0, 120, 90));
23+
strip.show();
24+
delay(2000);
25+
26+
// ===== СЛОЖНЫЙ ГРАДИЕНТ =====
27+
mGradient<4> myGrad; // создать градиент с именем myGrad на 4 точки
28+
// указываем цвет каждой точки
29+
myGrad.colors[0] = mBlack;
30+
myGrad.colors[1] = mRed;
31+
myGrad.colors[2] = mYellow;
32+
myGrad.colors[3] = mWhite;
33+
// создали градиент чёрный-красный-жёлтый-белый с одинаковым расстоянем между точками
34+
35+
// при помощи .get(позиция, размер) можно получить цвет в заданном месте градиента при указанной длине
36+
37+
// заливаем всю ленту
38+
for (int i = 0; i < NUMLEDS; i++) {
39+
strip.set(i, myGrad.get(i, NUMLEDS)); // получаем последовательно все цвета
40+
}
41+
strip.show();
42+
delay(2000);
43+
44+
// можно залить половину ленты всем градиентом и от половины развернуть в другую сторону
45+
for (int i = 0; i < NUMLEDS / 2; i++) strip.set(i, myGrad.get(i, NUMLEDS / 2));
46+
for (int i = 0; i < NUMLEDS / 2; i++) strip.set(NUMLEDS / 2 + i, myGrad.get(NUMLEDS / 2 - i, NUMLEDS / 2));
47+
strip.show();
48+
49+
// продолжение смотри в примере с шумом
50+
}
51+
52+
void loop() {
53+
}

examples/many_strips/many_strips.ino

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// пример работы с несколькими лентами
2+
#define LED1_PIN 6 // пин ленты 1
3+
#define LED2_PIN 7 // пин ленты 1
4+
#define NUMLEDS_1 60 // кол-во светодиодов ленты 1
5+
#define NUMLEDS_2 120 // кол-во светодиодов ленты 2
6+
7+
// настройки влияют на обе ленты сразу!
8+
#define COLOR_DEBTH 2 // цветовая глубина: 1, 2, 3 (в байтах)
9+
#include <microLED.h>
10+
11+
microLED<NUMLEDS_1, LED1_PIN, MLED_NO_CLOCK, LED_WS2818, ORDER_GRB, CLI_AVER> strip_1;
12+
microLED<NUMLEDS_2, LED2_PIN, MLED_NO_CLOCK, LED_WS2818, ORDER_GRB, CLI_AVER> strip_2;
13+
14+
void setup() {
15+
// управляем яркостью
16+
strip_1.setBrightness(30);
17+
strip_2.setBrightness(100);
18+
19+
// можно залить цветом
20+
strip_1.fill(mYellow);
21+
strip_2.fill(mHSV(50, 255, 255));
22+
23+
// нулевой светодиод второй ленты сделаем красным
24+
strip_2.leds[0] = mRGB(255, 0, 0);
25+
26+
// выводим на ленты
27+
strip_1.show();
28+
strip_2.show();
29+
}
30+
31+
void loop() {
32+
}

0 commit comments

Comments
 (0)
0