Advertisement
Guest User

Untitled

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