Новогодняя игрушка - свето-цвето-крутилка
- Войдите на сайт для отправки комментариев
Пнд, 14/12/2020 - 13:33
Проект был создан 5 лет назад - в декабре 2015 года - года моего первого знакомства с Arduino. Тогда я посчитал, что проект слишком примитивен для того, чтобы его стоило публиковать. Но в дальнейшем тот факт, что мои более сложные проекты не нашли отклика, заставил меня пересмотреть эту позицию. Поэтому публикация состоится - здесь и сейчас.
Видео можно посмотреть здесь: https://youtu.be/E19HfKm3vfo
Проект создан в первые полгода моего знакомства с Arduino, на тот момент я еще не созрел для изучения особенностей микроконтроллеров и использовании этих особенностей в своих скетчах. Поэтому скетч написан целиком в рамках парадигмы Arduino - никакого прямого доступа к аппаратуре, а, следовательно, - программный ногодрыг.
Фрагмент схемы:
Питание осуществляется от встроенного в вилку китайского БП 12В 1А, Arduino Pro Mini подключается через стабилизатор напряжения. К каждому из 18 выходов Arduino со 2-го по 20-й (А5) через резистор подключен транзистор КТ315. Коллектор транзистора подключен ко входам 12-вольтовой RGB ленты (светодиод обычные, не адресные). Лента нарезана на кусочки, кусочков - 18. Кусочки объединены по 3. Т.е. имеется 6 независимых фрагментов по 3 цвета в каждом.
Схема собрана на макетке:
Кусочки светодиодной ленты расположены вдоль лучей на круглом пластиковом основании:
И с обратной стороны:
Скетч:
#define dtPWM 250 //250 // PWM period #define maxEffects 52 //#define byte unsigned char #define numLevels 64 // number of light (volume) levels #define volumeStep 256/numLevels class tLEDRGB { public: byte t; // time of frame in 16 ms units byte f; // number of frames per cycle byte r; // number of cycle repetitions int d; // offset in data array }; #define tempo 4 #define effect00 0 // -6- 3 rays blue star tail rotating clockwise #define effect01 effect00+108 // -6- 3 rays red star tail rotating clockwise #define effect02 effect01+108 // -6- 3 rays green star tail rotating clockwise #define effect03 effect02+108 // -6- 3 rays magenta star tail rotating clockwise #define effect04 effect03+108 // -6- 3 rays yellow star tail rotating clockwise #define effect05 effect04+108 // -6- 3 rays cyan star tail rotating clockwise #define effect06 effect05+108 // -6- 3 rays blue star tail rotating counterclockwise #define effect07 effect06+108 // -6- 3 rays red star tail rotating counterclockwise #define effect08 effect07+108 // -6- 3 rays green star tail rotating counterclockwise #define effect09 effect08+108 // -6- 3 rays magenta star tail rotating counterclockwise #define effect0A effect09+108 // -6- 3 rays yellow star tail rotating counterclockwise #define effect0B effect0A+108 // -6- 3 rays cyan star tail rotating counterclockwise #define effect0C effect0B+108 // -3- 6 rays blue star tail rotating clockwise #define effect0D effect0C+ 54 // -3- 6 rays red star tail rotating clockwise #define effect0E effect0D+ 54 // -3- 6 rays green star tail rotating clockwise #define effect0F effect0E+ 54 // -3- 6 rays magenta star tail rotating clockwise #define effect0G effect0F+ 54 // -3- 6 rays yellow star tail rotating clockwise #define effect0H effect0G+ 54 // -3- 6 rays cyan star tail rotating clockwise #define effect0I effect0H+ 54 // -3- 6 rays blue star tail rotating counterclockwise #define effect0J effect0I+ 54 // -3- 6 rays red star tail rotating counterclockwise #define effect0K effect0J+ 54 // -3- 6 rays green star tail rotating counterclockwise #define effect0L effect0K+ 54 // -3- 6 rays magenta star tail rotating counterclockwise #define effect0M effect0L+ 54 // -3- 6 rays yellow star tail rotating counterclockwise #define effect0N effect0M+ 54 // -3- 6 rays cyan star tail rotating counterclockwise #define effect0O effect0N+ 54 // -3- 12 rays blue star tail rotating clockwise #define effect0P effect0O+ 54 // -3- 12 rays red star tail rotating clockwise #define effect0Q effect0P+ 54 // -3- 12 rays green star tail rotating clockwise #define effect0R effect0Q+ 54 // -3- 12 rays magenta star tail rotating clockwise #define effect0S effect0R+ 54 // -3- 12 rays yellow star tail rotating clockwise #define effect0T effect0S+ 54 // -3- 12 rays cyan star tail rotating clockwise #define effect0U effect0T+ 54 // -3- 12 rays blue star tail rotating counterclockwise #define effect0V effect0U+ 54 // -3- 12 rays red star tail rotating counterclockwise #define effect0W effect0V+ 54 // -3- 12 rays green star tail rotating counterclockwise #define effect0X effect0W+ 54 // -3- 12 rays magenta star tail rotating counterclockwise #define effect0Y effect0X+ 54 // -3- 12 rays yellow star tail rotating counterclockwise #define effect0Z effect0Y+ 54 // -3- 12 rays cyan star tail rotating counterclockwise #define effect10 effect0Z+ 54 // -6- 3 rays magenta+green star tail rotating clockwise #define effect11 effect10+108 // -6- 3 rays magenta+green star tail rotating counterclockwise #define effect12 effect11+108 // -6- 3 rays with blue tail rotating clockwise #define effect13 effect12+108 // -6- 3 rays with blue tail rotating counterclockwise #define effect14 effect13+108 // -6- 3-ray stars: green & magenta rotating in different directions (1) #define effect15 effect14+108 // -6- 3-ray stars: green & magenta rotating in different directions (2) #define effect16 effect15+108 // -3- 6 rays with red tail rotating clockwise #define effect17 effect16+ 54 // -3- 6 rays with red tail rotating counterclockwise #define effect18 effect17+ 54 // -3- 6-ray stars: green & magenta rotating in different directions (1) #define effect19 effect18+ 54 // -3- 6-ray stars: green & magenta rotating in different directions (2) #define effect1A effect19+ 54 // -2- white-black shining #define effect1B effect1A+ 36 // -2- green-magenta shining #define effect1C effect1B+ 36 // -3- 3colors rotating clockwise #define effect1D effect1C+ 54 // -3- 3colors rotating counterclockwise #define effect1E effect1D+ 54 // -6- rainbow rotating clockwise #define effect1F effect1E+108 // -6- rainbow rotating counterclockwise //#define effect9 effect0D+108 // //#define effect9 effect0E+108 // static const int effects[] = { // заголовки эффектов: t, f, r, d tempo, 6, 4, effect00, tempo, 6, 4, effect01, tempo, 6, 4, effect02, tempo, 6, 4, effect03, tempo, 6, 4, effect04, tempo, 6, 4, effect05, tempo, 6, 4, effect06, tempo, 6, 4, effect07, tempo, 6, 4, effect08, tempo, 6, 4, effect09, tempo, 6, 4, effect0A, tempo, 6, 4, effect0B, tempo, 3, 8, effect0C, tempo, 3, 8, effect0D, tempo, 3, 8, effect0E, tempo, 3, 8, effect0F, tempo, 3, 8, effect0G, tempo, 3, 8, effect0H, tempo, 3, 8, effect0I, tempo, 3, 8, effect0J, tempo, 3, 8, effect0K, tempo, 3, 8, effect0L, tempo, 3, 8, effect0M, tempo, 3, 8, effect0N, tempo, 3, 8, effect0O, tempo, 3, 8, effect0P, tempo, 3, 8, effect0Q, tempo, 3, 8, effect0R, tempo, 3, 8, effect0S, tempo, 3, 8, effect0T, tempo, 3, 8, effect0U, tempo, 3, 8, effect0V, tempo, 3, 8, effect0W, tempo, 3, 8, effect0X, tempo, 3, 8, effect0Y, tempo, 3, 8, effect0Z, tempo, 6, 4, effect10, tempo, 6, 4, effect11, tempo, 6, 4, effect12, tempo, 6, 4, effect13, tempo, 6, 4, effect14, tempo, 6, 4, effect15, tempo, 3, 8, effect16, tempo, 3, 8, effect17, tempo, 3, 8, effect18, tempo, 3, 8, effect19, tempo, 2, 12, effect1A, tempo, 2, 12, effect1B, tempo, 3, 8, effect1C, tempo, 3, 8, effect1D, tempo, 6, 4, effect1E, tempo, 6, 4, effect1F }; static const unsigned char a2p[] = {255,255,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,0,17}; // recode from pin to array offset // {18,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19}; // recode from array offset to pin //a4 2 3 4 5 6 7 8 9 10 11 12 13 a0 a1 a2 a3 a5 static const unsigned char data[] PROGMEM = // BRG * 6 phases { 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 3 blue rays rotating clockwise 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //b 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //c 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //d 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //e 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, //f 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 3 red rotating clockwise 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //b 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //c 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //d 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, //e 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, //f 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 3 green rotating clockwise 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //b 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //c 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //d 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, //e 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, //f 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 3 magenta rays rotating clockwise 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //b 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //c 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //d 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, //e 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, //f 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 3 yellow rotating clockwise 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //b 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //c 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //d 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //e 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //f 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 3 cyan rotating clockwise 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //b 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //c 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //d 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, //e 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, //f 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 3 blue rays rotating counterclockwise 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, //f 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //e 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //d 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //c 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //b 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 3 red rotating counterclockwise 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, //f 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, //e 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //d 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //c 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //b 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 3 green rotating counterclockwise 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, //f 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, //e 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //d 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //c 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //b 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 3 magenta rotating counterclockwise 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, //f 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, //e 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //d 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //c 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //b 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 3 yellow rotating counterclockwise 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //f 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //e 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //d 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //c 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //b 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 3 cyan rotating counterclockwise 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, //f 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, //e 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //d 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //c 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //b 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 6 blue rays rotating clockwise 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //b 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, //c 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 6 red rotating clockwise 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, //b 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, //c 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 6 green rotating clockwise 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, //b 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, //c 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 6 magenta rotating clockwise 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, //b 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, //c 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 6 yellow rotating clockwise 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //b 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //c 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 6 cyan rotating clockwise 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, //b 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, //c 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 6 blue rays rotating counterclockwise 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, //c 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //b 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 6 red rotating counterclockwise 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, //c 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, //b 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 6 green rotating counterclockwise 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, //c 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, //b 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 6 magenta rotating counterclockwise 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, //c 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, //b 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 6 yellow rotating counterclockwise 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //c 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //b 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 6 cyan rotating counterclockwise 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, //c 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, //b 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //a 12 blue rays rotating clockwise 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, //b 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, //c 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, //a 12 red rotating clockwise 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, //b 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, //c 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, //a 12 green rotating clockwise 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, //b 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, //c 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, //a 12 magenta rotating clockwise 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, //b 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, //c 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //a 12 yellow rotating clockwise 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, //b 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //c 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, //a 12 cyan rotating clockwise 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, //b 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, //c 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, //a 12 blue rays rotating counterclockwise 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, //c 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, //b 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, //a 12 red rotating counterclockwise 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, //c 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, //b 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, //a 12 green rotating counterclockwise 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, //c 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, //b 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, //a 12 magenta rotating counterclockwise 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, //c 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, //b 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, //a 12 yellow rotating counterclockwise 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, //c 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, //b 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, //a 12 cyan rotating counterclockwise 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, //c 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0xff, 0xff, 0x00, 0xff, //b 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 3 magenta+green rotating clockwise 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, //b 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, //c 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //d 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, //e 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, //f 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //a 3 magenta+green rotating counterclockwise 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, //f 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, //e 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, //d 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, //c 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, //b ////////////////////////////////////// 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x7f, 0x00, 0x00, //a 3 rays with blue tail rotating clockwise 0x7f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x3f, 0x00, 0x00, //b 0x3f, 0x00, 0x00, 0x7f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x1f, 0x00, 0x00, //c 0x1f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x7f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, //d 0x0f, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x7f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, //e 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x7f, 0x00, 0x00, 0xff, 0xff, 0xff, //f 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x7f, 0x00, 0x00, //a 3 rays with blue tail rotating counterclockwise 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x7f, 0x00, 0x00, 0xff, 0xff, 0xff, //f 0x0f, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x7f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, //e 0x1f, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x7f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, //d 0x3f, 0x00, 0x00, 0x7f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x1f, 0x00, 0x00, //c 0x7f, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x3f, 0x00, 0x00, //b 0xff, 0xff, 0xff, 0x00, 0x00, 0x7f, 0x0f, 0x0f, 0x3f, 0x1f, 0x1f, 0x1f, 0x3f, 0x3f, 0x0f, 0x7f, 0x7f, 0x00, //a 3-ray stars: green & magenta rotating in different directions (1) 0x7f, 0x7f, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x7f, 0x0f, 0x0f, 0x3f, 0x1f, 0x1f, 0x1f, 0x3f, 0x3f, 0x0f, //b 0x3f, 0x3f, 0x0f, 0x7f, 0x7f, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x7f, 0x0f, 0x0f, 0x3f, 0x1f, 0x1f, 0x1f, //c 0x1f, 0x1f, 0x1f, 0x3f, 0x3f, 0x0f, 0x7f, 0x7f, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x7f, 0x0f, 0x0f, 0x3f, //d 0x0f, 0x0f, 0x3f, 0x1f, 0x1f, 0x1f, 0x3f, 0x3f, 0x0f, 0x7f, 0x7f, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x7f, //e 0x00, 0x00, 0x7f, 0x0f, 0x0f, 0x3f, 0x1f, 0x1f, 0x1f, 0x3f, 0x3f, 0x0f, 0x7f, 0x7f, 0x00, 0xff, 0xff, 0xff, //f ///////////////////////////////////////// 0xff, 0xff, 0xff, 0x00, 0x00, 0x7f, 0x0f, 0x0f, 0x3f, 0x1f, 0x1f, 0x1f, 0x3f, 0x3f, 0x0f, 0x7f, 0x7f, 0x00, //a 3-ray stars: green & magenta rotating in different directions (2) 0x00, 0x00, 0x7f, 0x0f, 0x0f, 0x3f, 0x1f, 0x1f, 0x1f, 0x3f, 0x3f, 0x0f, 0x7f, 0x7f, 0x00, 0xff, 0xff, 0xff, //f 0x0f, 0x0f, 0x3f, 0x1f, 0x1f, 0x1f, 0x3f, 0x3f, 0x0f, 0x7f, 0x7f, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x7f, //e 0x1f, 0x1f, 0x1f, 0x3f, 0x3f, 0x0f, 0x7f, 0x7f, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x7f, 0x0f, 0x0f, 0x3f, //d 0x3f, 0x3f, 0x0f, 0x7f, 0x7f, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x7f, 0x0f, 0x0f, 0x3f, 0x1f, 0x1f, 0x1f, //c 0x7f, 0x7f, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x7f, 0x0f, 0x0f, 0x3f, 0x1f, 0x1f, 0x1f, 0x3f, 0x3f, 0x0f, //b 0xff, 0xff, 0xff, 0x00, 0x3f, 0x00, 0x00, 0x7f, 0x00, 0xff, 0xff, 0xff, 0x00, 0x3f, 0x00, 0x00, 0x7f, 0x00, //a 6 rays with red tail rotating clockwise 0x00, 0x7f, 0x00, 0xff, 0xff, 0xff, 0x00, 0x3f, 0x00, 0x00, 0x7f, 0x00, 0xff, 0xff, 0xff, 0x00, 0x3f, 0x00, //b 0x00, 0x3f, 0x00, 0x00, 0x7f, 0x00, 0xff, 0xff, 0xff, 0x00, 0x3f, 0x00, 0x00, 0x7f, 0x00, 0xff, 0xff, 0xff, //c 0xff, 0xff, 0xff, 0x00, 0x3f, 0x00, 0x00, 0x7f, 0x00, 0xff, 0xff, 0xff, 0x00, 0x3f, 0x00, 0x00, 0x7f, 0x00, //a 6 rays with red tail rotating counterclockwise 0x00, 0x3f, 0x00, 0x00, 0x7f, 0x00, 0xff, 0xff, 0xff, 0x00, 0x3f, 0x00, 0x00, 0x7f, 0x00, 0xff, 0xff, 0xff, //c 0x00, 0x7f, 0x00, 0xff, 0xff, 0xff, 0x00, 0x3f, 0x00, 0x00, 0x7f, 0x00, 0xff, 0xff, 0xff, 0x00, 0x3f, 0x00, //b 0xff, 0xff, 0xff, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x3f, 0xff, 0xff, 0xff, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x3f, //a 6-ray stars: green & magenta rotating in different directions (1) 0x7f, 0x7f, 0x3f, 0xff, 0xff, 0xff, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x3f, 0xff, 0xff, 0xff, 0x3f, 0x3f, 0x7f, //b 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x3f, 0xff, 0xff, 0xff, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x3f, 0xff, 0xff, 0xff, //c 0xff, 0xff, 0xff, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x3f, 0xff, 0xff, 0xff, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x3f, //a 6-ray stars: green & magenta rotating in different directions (2) 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x3f, 0xff, 0xff, 0xff, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x3f, 0xff, 0xff, 0xff, //c 0x7f, 0x7f, 0x3f, 0xff, 0xff, 0xff, 0x3f, 0x3f, 0x7f, 0x7f, 0x7f, 0x3f, 0xff, 0xff, 0xff, 0x3f, 0x3f, 0x7f, //b 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, //a white-black shining 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, //b 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, //a green-magenta shining 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, //b 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, //a 3colors rotating clockwise 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, //b 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, //c 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, //a 3colors rotating counterclockwise 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, //c 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, //b 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, //a rainbow rotating clockwise 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, //b 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, //c 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, //d 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, //e 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, //f 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, //a rainbow rotating counterclockwise 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, //f 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, //e 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, //d 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, //c 0xff, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00 //b }; tLEDRGB LD[maxEffects]; unsigned long startTime; // start time of current effect unsigned long prevTime; // time since last PWM phase void setup() { for(byte i = 2; i < 20; i++) pinMode(i, OUTPUT); Serial.begin(115200); for(byte i = 0; i < maxEffects; i++) { LD[i].t = effects[i*4 + 0]; LD[i].f = effects[i*4 + 1]; LD[i].r = effects[i*4 + 2]; LD[i].d = effects[i*4 + 3]; Serial.print("Offset: "); Serial.println(LD[i].d); } startTime = micros(); prevTime = startTime; } void loop() { // byte t; // time of frame in 16 ms units // byte f; // number of frames per cycle // byte r; // number of cycle repetitions static byte phase = 0; // (-) PWM phase (0-63)(0.25ms*64 = 16ms) static byte pwmc = 0; // (t) number of PWM-cycle repetition in frame (0 - LD.t-1) static byte frame = 0; // (f) current frame (0 - LD.f-1) static byte rep = 0; // (r) number of effect repetition (0 - LD.r-1) static byte effect = 0; // (-) current effect (0 - maxEffects-1) unsigned long time = micros(); unsigned long dt = time - prevTime; if(dt >= dtPWM) // moment of RWM phase switch (each 250 ms) минимальное время выполнения ~110 мс { prevTime = time; for(int i = 2; i < 20; i++) { // pgm_read_byte(& // byte tmp = data[a2p[i] + frame*18 + LD[effect].d]; // volume byte tmp = pgm_read_byte(&data[a2p[i] + frame*18 + LD[effect].d]); // volume digitalWrite(i, tmp > phase*volumeStep); } phase++; if (phase == numLevels /*LD[effect].t*/) // moment of end PWM cycle (each 16 ms) { phase = 0; pwmc++; if(pwmc == LD[effect].t) // moment of frame switch (each ~150 ms) { pwmc = 0; frame++; if(frame == LD[effect].f) // moment of end effect cycle (~1s) { frame = 0; rep++; if(rep == LD[effect].r) // moment of effect switch (~4s) { rep = 0; effect++; if(effect == maxEffects) // return to first effect (all time of effects sequence) effect = 0; static long prevEffectTime = 0; Serial.print("Effect: "); Serial.print(effect); Serial.print(" time: "); Serial.println(time - prevEffectTime); prevEffectTime = time; } } } } } }а как оно работает? видео есть?
Специально разместил повыше - в самом начале сообщения №1.
Правда, при загрузке изображение почему-то уменьшилось до 360. Наверное, я где-то ошибся.
Специально разместил повыше - в самом начале сообщения №1.
сорри, не увидел.
Спасибо
Мне нраица. :) Тока проводов много. :)
На пиксельную можно перепилить, если сам визуал нравится.
Я запихивал адресные светодиоды в светильник уличный с круглым матовым плафоном. Получался магический шар.
Не, ну мне нравится: сравнивать 6 каналов при 256к цветах с 54 каналами при 16М цветах.