Advertisement
kartonman

Daily Cycle

Aug 27th, 2021
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.05 KB | None | 0 0
  1. /* this sketch has the modified pallets. Only two pallets.
  2. Daily Cycle sketch for RGB led type WS2811
  3.  
  4. Meanwhile the street lights are gradually switched On and Off.*/
  5.  
  6.  
  7. #define FASTLED_INTERNAL
  8. #include <FastLED.h>
  9. #include <Wire.h>
  10.  
  11.  
  12. #define NUM_LEDS 3 // NUMBER OF PIXELS IN THE USED STRIP
  13. #define DATA_PIN 6
  14.  
  15. uint16_t currentPixel = 0; // SET TO PIXEL NUMBER 0
  16. uint16_t led = 0;
  17.  
  18. #define STREET_LED 9 // THE PIN THAT THE STREET LEDs ARE ATTACHED TO
  19. #define STREET_LED2 10 // THE PIN THAT THE STREET LEDs ARE ATTACHED TO
  20. #define toggle1 8 // to trigger external board
  21. #define toggle2 7 // to trigger external board
  22.  
  23. int brightness_STREET = 0; // BRIGHTNESS OF THE STREET LEDs AT STARTUP
  24. int fadeAmount = 1; // KeeP THIS AMOUNT UNDER 5 FOR A NICE FADING OF THE STREET LEDs
  25.  
  26.  
  27. //-----------TIMING------------
  28.  
  29. unsigned long currentMillis = 0;
  30. unsigned long previousMillis = 0;
  31.  
  32. unsigned long speedOfEveningToMorning = 200; // DURATION IN STEPS OF nightcycle ROUTINE - 6steps/second (1 minute = 360 steps)
  33. unsigned long speedOfMorningToEvening = 200; // DURATION IN STEPS OF daycle ROUTINE - 6steps/second (1 minute = 360 steps)
  34.  
  35. unsigned long timeBaseInterval = speedOfMorningToEvening + speedOfEveningToMorning; // TIMEBASE FOR THE nightcycle + daycycle
  36. unsigned long time_Now = 0;
  37.  
  38. byte maxBrightness = 150; // VALUES FROM 0 - 255 -> THE HIGHER, THE MORE Amps NEEDED - FOR THE LED STRIPS
  39.  
  40.  
  41. static const float intervalMorningToEvening = speedOfMorningToEvening;
  42. static const float intervalEveningToMorning = speedOfEveningToMorning;
  43.  
  44.  
  45. //----------PALETTES-----------
  46.  
  47. DEFINE_GRADIENT_PALETTE (Evening_To_Morning_gp) { // EVENIG TO MORNING PALETTE (nightcycle)
  48. 0, 0, 0, 0, //black
  49. 18, 0, 0, 0, //dark red
  50. 56, 161, 83, 0, //orange
  51. 115, 212, 202, 0, //dark yellow
  52. 179, 255, 253, 213, //bright yellow
  53. 255, 255, 255, 255, //white
  54. };
  55. DEFINE_GRADIENT_PALETTE (Morning_To_Evening_gp) { // MORNING TO NOON PALETTE (daycycle)
  56. 0, 255, 255, 255, //white
  57. 18, 255, 253, 213, //bright yellow
  58. 56, 212, 202, 0, //dark yellow
  59. 115, 161, 83, 0, //orange
  60. 179, 98, 0, 0, //dark red
  61. 255, 0, 0, 0 //black
  62.  
  63.  
  64.  
  65.  
  66. CRGBPalette16 myPal1 = Evening_To_Morning_gp; // CREATING PALETTE OBJECTS AS MANY AS THERE ARE PALETTES IN USE
  67. CRGBPalette16 myPal2 = Morning_To_Evening_gp;
  68.  
  69.  
  70. struct CRGB leds[NUM_LEDS]; // DEFINE OBJECT OF LEDS
  71. static uint8_t paletteIndex = 0; // CURRENT GRADIENT PALETTE COLOUR
  72.  
  73. //------------------------------
  74. //------------SETUP-------------
  75.  
  76. void setup() {
  77. Serial.begin(9600);
  78. FastLED.addLeds<WS2811, DATA_PIN, BRG>(leds, NUM_LEDS); // BRG SEQUENCE IN PLACE OF RGB FOR MY STRIP
  79.  
  80. pinMode(STREET_LED, OUTPUT);
  81. pinMode(STREET_LED2, OUTPUT);
  82. pinMode(toggle1, OUTPUT);
  83. pinMode(toggle2, OUTPUT);
  84.  
  85. }
  86.  
  87. //-----------------------------
  88. //------------LOOP-------------
  89.  
  90. void loop() {
  91.  
  92. nightycle();
  93. dayCycle();
  94.  
  95.  
  96. FastLED.show();
  97.  
  98. currentMillis = millis(); // capture the latest value of millis()
  99. // this is equivalent to noting the time from a clock
  100. // use the same time for all LED flashes to keep them synchronized
  101. if (millis() >= time_Now + timeBaseInterval)
  102. {
  103. time_Now += timeBaseInterval;
  104. streetLightFading();
  105. }
  106. }
  107.  
  108. //------------------------------
  109. //-----DAY TO NIGHT CYCLES------
  110.  
  111. void nightycle()
  112. {
  113. CRGB colour = ColorFromPalette(myPal1, paletteIndex, maxBrightness, LINEARBLEND); // OR EVENTUALLY A BUILT-IN PALETTE
  114. fill_solid(leds, NUM_LEDS, colour); // LIGHT THE WHOLE STRIP WITH THE COLOUR GRABBED FROM THE PALETTE
  115.  
  116.  
  117. EVERY_N_MILLISECONDS(intervalEveningToMorning) { // TRAVERSE THE COMPLETE PALETTE
  118. if (paletteIndex < 255) {
  119. paletteIndex++;
  120. }
  121. if (paletteIndex == 255) {
  122. paletteIndex = 0;
  123. }
  124. }
  125. Serial.println(colour); // MAY BE REMOVED AFTER TESTING
  126. }
  127.  
  128. void dayCycle()
  129. {
  130. CRGB colour = ColorFromPalette(myPal2, paletteIndex, maxBrightness, LINEARBLEND);
  131. fill_solid(leds, NUM_LEDS, colour);
  132.  
  133.  
  134.  
  135. EVERY_N_MILLISECONDS(intervalMorningToEvening) {
  136. if (paletteIndex < 255) {
  137. paletteIndex++;
  138. }
  139. if (paletteIndex == 255) {
  140. paletteIndex = 0;
  141. }
  142. }
  143. Serial.println(colour); // MAY BE REMOVED AFTER TESTING
  144. }
  145.  
  146.  
  147.  
  148. //--------FADING LIGHTS---------
  149.  
  150. void streetLightFading()
  151. {
  152. if (currentMillis - previousMillis >= timeBaseInterval)
  153. analogWrite(STREET_LED, brightness_STREET);
  154. analogWrite(STREET_LED2, brightness_STREET);
  155. brightness_STREET = brightness_STREET + fadeAmount;
  156. if (brightness_STREET <= 0 || brightness_STREET >= 255) {
  157. fadeAmount = -fadeAmount ;
  158. }
  159. delayMicroseconds(timeBaseInterval); //waits for "timeBaseInterval" to see the fading effect
  160.  
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement