Closed waw555 closed 1 year ago
Откуда взят эффект? Можно ли где-то посмотреть как он вообще выглядит и стоит ли внимания?
Да конечно, в открытом доступе лежит. Исходник и видео. Смотрится очень красиво, у меня матрица 1616, и я его переделал под 1616, изначально он 8*16. Я его адаптировать под другие размеры не могу, не хватает знаний. https://sourceforge.net/projects/ledmatrixspectrumanalyser/
это же Нян кэт! :) Надо брать!
Раз уж тут решились попросить касательно эффектов то и я попробую. Эффект "ДНК".
// ----------- Эффект "ДНК" // База https://pastebin.com/jwvC1sNF адаптация и доработки kostyamat // нормальные копирайты: // https://pastebin.com/jwvC1sNF //2 DNA spiral with subpixel //16x16 rgb led matrix demo //Yaroslaw Turbin 04.09.2020 //https://vk.com/ldirko //https://www.reddit.com/user/ldirko/ //https://www.reddit.com/r/FastLED/comments/gogs4n/i_made_7x11_matrix_for_my_ntp_clock_project_then/
//this is update for DNA procedure https://pastebin.com/Qa8A5NvW //add subpixel render foк nice smooth look
void wu_pixel(uint32_t x, uint32_t y, CRGB * col) { //awesome wu_pixel procedure by reddit u/sutaburosu // extract the fractional parts and derive their inverses uint8_t xx = x & 0xff, yy = y & 0xff, ix = 255 - xx, iy = 255 - yy; // calculate the intensities for each affected pixel
uint8_t wu[4] = {WU_WEIGHT(ix, iy), WU_WEIGHT(xx, iy), WU_WEIGHT(ix, yy), WU_WEIGHT(xx, yy)}; // multiply the intensities by the colour, and saturating-add them to the pixels for (uint8_t i = 0; i < 4; i++) { uint16_t xy = XY((x >> 8) + (i & 1), (y >> 8) + ((i >> 1) & 1)); if (xy < NUM_LEDS){ leds[xy].r = qadd8(leds[xy].r, col->r wu[i] >> 8); leds[xy].g = qadd8(leds[xy].g, col->g wu[i] >> 8); leds[xy].b = qadd8(leds[xy].b, col->b * wu[i] >> 8); } } }
void DNARoutine() { if (loadingFlag) {
if (selectedSettings){
setModeSettings(1U+random8(100U), 1U+random8(200U));
}
#endif //#if defined(USE_RANDOM_SETS_IN_APP) || defined(RANDOM_SETTINGS_IN_CYCLE_MODE)
loadingFlag = false;
step = map8(modes[currentMode].Speed, 10U, 60U);
hue = modes[currentMode].Scale;
deltaHue = hue > 50U;
if (deltaHue)
hue = 101U - hue;
hue = 255U - map( 51U - hue, 1U, 50U, 0, 255U);
} double freq = 3000; float mn =255.0/13.8;
fadeToBlackBy(leds, NUM_LEDS, step); uint16_t ms = millis();
if (deltaHue) for (uint8_t i = 0; i < WIDTH; i++) { uint32_t x = beatsin16(step, 0, (HEIGHT - 1) 256, 0, i freq); uint32_t y = i 256; uint32_t x1 = beatsin16(step, 0, (HEIGHT - 1) 256, 0, i * freq + 32768);
CRGB col = CHSV(ms / 29 + i * 255 / (WIDTH - 1), 255, qadd8(hue, beatsin8(step, 60, 255U, 0, i * mn)));
CRGB col1 = CHSV(ms / 29 + i * 255 / (WIDTH - 1) + 128, 255, qadd8(hue, beatsin8(step, 60, 255U, 0, i * mn + 128)));
wu_pixel (y , x, &col);
wu_pixel (y , x1, &col1);
} else for (uint8_t i = 0; i < HEIGHT; i++) { uint32_t x = beatsin16(step, 0, (WIDTH - 1) 256, 0, i freq); uint32_t y = i 256; uint32_t x1 = beatsin16(step, 0, (WIDTH - 1) 256, 0, i * freq + 32768);
CRGB col = CHSV(ms / 29 + i * 255 / (HEIGHT - 1), 255, qadd8(hue, beatsin8(step, 60, 255U, 0, i * mn)));
CRGB col1 = CHSV(ms / 29 + i * 255 / (HEIGHT - 1) + 128, 255, qadd8(hue, beatsin8(step, 60, 255U, 0, i * mn + 128)));
wu_pixel (x , y, &col);
wu_pixel (x1 , y, &col1);
}
blurScreen(16); }
Вот ссылка на файл с эффектами из проекта откуда я взял код
https://drive.google.com/file/d/18fDhEJgJZGMLG5n_ylB0PgWp91Dvn7ag/view?usp=share_link
Код эффекта ДНК под строкой 6205
За ранее благодарю.
Не трогали бы эффекти от Турбина, неадекватный он. Мы в результате все его эффекты удалили, часть переписали с ноля. От греха подальше.
Чистый от его авторства вариант ДНК есть в нашей прошивке. Он даже красивше получился.
Нет. Vvip-68 знает где смотреть, если захочет добавлять эффект.
Просьба рассмотреть возможность адаптации и добавления нового эффекта. Для матрицы 16*16 работает отлично, если менять размер матрицы, то все портится.