Advertisement
Guest User

12

a guest
Oct 21st, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.60 KB | None | 0 0
  1. /*
  2. Скетч создан на основе FASTSPI2 EFFECTS EXAMPLES автора teldredge (www.funkboxing.com)
  3. А также вот этой статьи https://www.tweaking4all.com/hardware/arduino/adruino-led-strip-effects/#cylon
  4. Доработан, переведён и разбит на файлы 2017 AlexGyver
  5. Отправляем в монитор порта номер режима, он активируется
  6. */
  7.  
  8. #include "FastLED.h" // библиотека для работы с лентой
  9.  
  10. #define LED_COUNT 48 // число светодиодов в кольце/ленте
  11. #define LED_DT 2 // пин, куда подключен DIN ленты
  12.  
  13. int max_bright = 51; // максимальная яркость (0 - 255)
  14. int ledMode = 3;
  15. /*
  16. Стартовый режим
  17. 0 - все выключены
  18. 1 - все включены
  19. 3 - кольцевая радуга
  20. 888 - демо-режим
  21. */
  22.  
  23. // цвета мячиков для режима
  24. byte ballColors[3][3] = {
  25. {0xff, 0, 0},
  26. {0xff, 0xff, 0xff},
  27. {0 , 0 , 0xff},
  28. };
  29.  
  30. // ---------------СЛУЖЕБНЫЕ ПЕРЕМЕННЫЕ-----------------
  31. int BOTTOM_INDEX = 0; // светодиод начала отсчёта
  32. int TOP_INDEX = int(LED_COUNT / 2);
  33. int EVENODD = LED_COUNT % 2;
  34. struct CRGB leds[LED_COUNT];
  35. int ledsX[LED_COUNT][3]; //-ARRAY FOR COPYING WHATS IN THE LED STRIP CURRENTLY (FOR CELL-AUTOMATA, MARCH, ETC)
  36.  
  37. int thisdelay = 20; //-FX LOOPS DELAY VAR
  38. int thisstep = 10; //-FX LOOPS DELAY VAR
  39. int thishue = 0; //-FX LOOPS DELAY VAR
  40. int thissat = 255; //-FX LOOPS DELAY VAR
  41.  
  42. int thisindex = 0;
  43. int thisRED = 0;
  44. int thisGRN = 0;
  45. int thisBLU = 0;
  46.  
  47. int idex = 0; //-LED INDEX (0 to LED_COUNT-1
  48. int ihue = 0; //-HUE (0-255)
  49. int ibright = 0; //-BRIGHTNESS (0-255)
  50. int isat = 0; //-SATURATION (0-255)
  51. int bouncedirection = 0; //-SWITCH FOR COLOR BOUNCE (0-1)
  52. float tcount = 0.0; //-INC VAR FOR SIN LOOPS
  53. int lcount = 0; //-ANOTHER COUNTING VAR
  54. // ---------------СЛУЖЕБНЫЕ ПЕРЕМЕННЫЕ-----------------
  55.  
  56. void one_color_all(int cred, int cgrn, int cblu) { //-SET ALL LEDS TO ONE COLOR
  57. for (int i = 0 ; i < LED_COUNT; i++ ) {
  58. leds[i].setRGB( cred, cgrn, cblu);
  59. }
  60. }
  61.  
  62. void one_color_allHSV(int ahue) { //-SET ALL LEDS TO ONE COLOR (HSV)
  63. for (int i = 0 ; i < LED_COUNT; i++ ) {
  64. leds[i] = CHSV(ahue, thissat, 255);
  65. }
  66. }
  67.  
  68. void setup()
  69. {
  70. Serial.begin(9600); // открыть порт для связи
  71. LEDS.setBrightness(max_bright); // ограничить максимальную яркость
  72.  
  73. LEDS.addLeds<WS2811, LED_DT, GRB>(leds, LED_COUNT); // настрйоки для нашей ленты (ленты на WS2811, WS2812, WS2812B)
  74. one_color_all(0, 0, 0); // погасить все светодиоды
  75. LEDS.show(); // отослать команду
  76. }
  77.  
  78.  
  79. void change_mode(int newmode) {
  80. thissat = 255;
  81. switch (newmode) {
  82. case 0: one_color_all(0, 0, 0); LEDS.show(); break; //---ALL OFF
  83. case 1: one_color_all(255, 255, 255); LEDS.show(); break; //---ALL ON
  84. case 2: thisdelay = 20; break; //---STRIP RAINBOW FADE
  85. case 3: thisdelay = 20; thisstep = 10; break; //---RAINBOW LOOP
  86. case 4: thisdelay = 20; break; //---RANDOM BURST
  87. case 5: thisdelay = 20; thishue = 0; break; //---CYLON v1
  88. case 6: thisdelay = 40; thishue = 0; break; //---CYLON v2
  89. case 7: thisdelay = 40; thishue = 0; break; //---POLICE LIGHTS SINGLE
  90. case 8: thisdelay = 40; thishue = 0; break; //---POLICE LIGHTS SOLID
  91. case 9: thishue = 160; thissat = 50; break; //---STRIP FLICKER
  92. case 10: thisdelay = 15; thishue = 0; break; //---PULSE COLOR BRIGHTNESS
  93. case 11: thisdelay = 15; thishue = 0; break; //---PULSE COLOR SATURATION
  94. case 12: thisdelay = 60; thishue = 180; break; //---VERTICAL SOMETHING
  95. case 13: thisdelay = 100; break; //---CELL AUTO - RULE 30 (RED)
  96. case 14: thisdelay = 40; break; //---MARCH RANDOM COLORS
  97. case 15: thisdelay = 80; break; //---MARCH RWB COLORS
  98. case 16: thisdelay = 60; thishue = 95; break; //---RADIATION SYMBOL
  99. //---PLACEHOLDER FOR COLOR LOOP VAR DELAY VARS
  100. case 19: thisdelay = 35; thishue = 180; break; //---SIN WAVE BRIGHTNESS
  101. case 20: thisdelay = 100; thishue = 0; break; //---POP LEFT/RIGHT
  102. case 21: thisdelay = 100; thishue = 180; break; //---QUADRATIC BRIGHTNESS CURVE
  103. //---PLACEHOLDER FOR FLAME VARS
  104. case 23: thisdelay = 50; thisstep = 15; break; //---VERITCAL RAINBOW
  105. case 24: thisdelay = 50; break; //---PACMAN
  106. case 25: thisdelay = 35; break; //---RANDOM COLOR POP
  107. case 26: thisdelay = 25; thishue = 0; break; //---EMERGECNY STROBE
  108. case 27: thisdelay = 25; thishue = 0; break; //---RGB PROPELLER
  109. case 28: thisdelay = 100; thishue = 0; break; //---KITT
  110. case 29: thisdelay = 50; thishue = 95; break; //---MATRIX RAIN
  111. case 30: thisdelay = 5; break; //---NEW RAINBOW LOOP
  112. case 31: thisdelay = 100; break; //---MARCH STRIP NOW CCW
  113. case 32: thisdelay = 100; break; //---MARCH STRIP NOW CCW
  114. case 33: thisdelay = 50; break; // colorWipe
  115. case 34: thisdelay = 50; break; // CylonBounce
  116. case 35: thisdelay = 15; break; // Fire
  117. case 36: thisdelay = 50; break; // NewKITT
  118. case 37: thisdelay = 20; break; // rainbowCycle
  119. case 38: thisdelay = 10; break; // rainbowTwinkle
  120. case 39: thisdelay = 50; break; // RunningLights
  121. case 40: thisdelay = 0; break; // Sparkle
  122. case 41: thisdelay = 20; break; // SnowSparkle
  123. case 42: thisdelay = 50; break; // theaterChase
  124. case 43: thisdelay = 50; break; // theaterChaseRainbow
  125. case 44: thisdelay = 100; break; // Strobe
  126.  
  127. case 101: one_color_all(255, 0, 0); LEDS.show(); break; //---ALL RED
  128. case 102: one_color_all(0, 255, 0); LEDS.show(); break; //---ALL GREEN
  129. case 103: one_color_all(0, 0, 255); LEDS.show(); break; //---ALL BLUE
  130. case 104: one_color_all(255, 255, 0); LEDS.show(); break; //---ALL COLOR X
  131. case 105: one_color_all(0, 255, 255); LEDS.show(); break; //---ALL COLOR Y
  132. case 106: one_color_all(255, 0, 255); LEDS.show(); break; //---ALL COLOR Z
  133. }
  134. bouncedirection = 0;
  135. one_color_all(0, 0, 0);
  136. ledMode = newmode;
  137. }
  138.  
  139. void loop() {
  140.  
  141. if (Serial.available() > 0) { // если что то прислали
  142. ledMode = Serial.parseInt(); // парсим в тип данных int
  143. change_mode(ledMode); // меняем режим через change_mode (там для каждого режима стоят цвета и задержки)
  144. }
  145. switch (ledMode) {
  146. case 999: break; // пазуа
  147. case 2: rainbow_fade(); break; // плавная смена цветов всей ленты
  148. case 3: rainbow_loop(); break; // крутящаяся радуга
  149. case 4: random_burst(); break; // случайная смена цветов
  150. case 5: color_bounce(); break; // бегающий светодиод
  151. case 6: color_bounceFADE(); break; // бегающий паровозик светодиодов
  152. case 7: ems_lightsONE(); break; // вращаются красный и синий
  153. case 8: ems_lightsALL(); break; // вращается половина красных и половина синих
  154. case 9: flicker(); break; // случайный стробоскоп
  155. case 10: pulse_one_color_all(); break; // пульсация одним цветом
  156. case 11: pulse_one_color_all_rev(); break; // пульсация со сменой цветов
  157. case 12: fade_vertical(); break; // плавная смена яркости по вертикали (для кольца)
  158. case 13: rule30(); break; // безумие красных светодиодов
  159. case 14: random_march(); break; // безумие случайных цветов
  160. case 15: rwb_march(); break; // белый синий красный бегут по кругу (ПАТРИОТИЗМ!)
  161. case 16: radiation(); break; // пульсирует значок радиации
  162. case 17: color_loop_vardelay(); break; // красный светодиод бегает по кругу
  163. case 18: white_temps(); break; // бело синий градиент (?)
  164. case 19: sin_bright_wave(); break; // тоже хрень какая то
  165. case 20: pop_horizontal(); break; // красные вспышки спускаются вниз
  166. case 21: quad_bright_curve(); break; // полумесяц
  167. case 22: flame(); break; // эффект пламени
  168. case 23: rainbow_vertical(); break; // радуга в вертикаьной плоскости (кольцо)
  169. case 24: pacman(); break; // пакман
  170. case 25: random_color_pop(); break; // безумие случайных вспышек
  171. case 26: ems_lightsSTROBE(); break; // полицейская мигалка
  172. case 27: rgb_propeller(); break; // RGB пропеллер
  173. case 28: kitt(); break; // случайные вспышки красного в вертикаьной плоскости
  174. case 29: matrix(); break; // зелёненькие бегают по кругу случайно
  175. case 30: new_rainbow_loop(); break; // крутая плавная вращающаяся радуга
  176. case 31: strip_march_ccw(); break; // чёт сломалось
  177. case 32: strip_march_cw(); break; // чёт сломалось
  178. case 33: colorWipe(0x00, 0xff, 0x00, thisdelay);
  179. colorWipe(0x00, 0x00, 0x00, thisdelay); break; // плавное заполнение цветом
  180. case 34: CylonBounce(0xff, 0, 0, 4, 10, thisdelay); break; // бегающие светодиоды
  181. case 35: Fire(55, 120, thisdelay); break; // линейный огонь
  182. case 36: NewKITT(0xff, 0, 0, 8, 10, thisdelay); break; // беготня секторов круга (не работает)
  183. case 37: rainbowCycle(thisdelay); break; // очень плавная вращающаяся радуга
  184. case 38: TwinkleRandom(20, thisdelay, 1); break; // случайные разноцветные включения (1 - танцуют все, 0 - случайный 1 диод)
  185. case 39: RunningLights(0xff, 0xff, 0x00, thisdelay); break; // бегущие огни
  186. case 40: Sparkle(0xff, 0xff, 0xff, thisdelay); break; // случайные вспышки белого цвета
  187. case 41: SnowSparkle(0x10, 0x10, 0x10, thisdelay, random(100, 1000)); break; // случайные вспышки белого цвета на белом фоне
  188. case 42: theaterChase(0xff, 0, 0, thisdelay); break; // бегущие каждые 3 (ЧИСЛО СВЕТОДИОДОВ ДОЛЖНО БЫТЬ НЕЧЁТНОЕ)
  189. case 43: theaterChaseRainbow(thisdelay); break; // бегущие каждые 3 радуга (ЧИСЛО СВЕТОДИОДОВ ДОЛЖНО БЫТЬ КРАТНО 3)
  190. case 44: Strobe(0xff, 0xff, 0xff, 10, thisdelay, 1000); break; // стробоскоп
  191.  
  192. case 45: BouncingBalls(0xff, 0, 0, 3); break; // прыгающие мячики
  193. case 46: BouncingColoredBalls(3, ballColors); break; // прыгающие мячики цветные
  194.  
  195. case 888: demo_modeA(); break; // длинное демо
  196. case 889: demo_modeB(); break; // короткое демо
  197. }
  198. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement