Advertisement
Guest User

Untitled

a guest
Oct 7th, 2016
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.07 KB | None | 0 0
  1. #include "FastLED/FastLED.h"
  2. #define NUM_LEDS 12
  3.  
  4. FASTLED_USING_NAMESPACE;
  5.  
  6. CRGB leds[NUM_LEDS];
  7.  
  8. SYSTEM_MODE(MANUAL);
  9.  
  10. //int debug_led = D7;
  11. int tmp = 0;
  12. int up = 1;
  13. int mode = 1;
  14. int my_delay = 500;
  15.  
  16. int set_mode(String str) {
  17.     mode = atoi(str);
  18.     return 1;
  19. }
  20.  
  21.  
  22. int set_delay(String str) {
  23.     my_delay = atoi(str);
  24.     return 1;
  25. }
  26.  
  27. void setup() {
  28.     Serial.begin(9600);
  29.     Serial.println("in setup");
  30.     connect();
  31.     Particle.function("set_mode", set_mode);
  32.     Particle.function("set_delay", set_delay);
  33.     FastLED.addLeds<NEOPIXEL, D6>(leds, NUM_LEDS);
  34. }
  35.  
  36. void loop() {
  37.   do_mode();
  38.   if (try_process() != 1) {
  39.     delay(my_delay);
  40.   }
  41.  
  42.   FastLED.show();
  43. }
  44.  
  45. void connect () {
  46.     if (Particle.connected() == false) {
  47.         Serial.println("connecting");
  48.         Particle.connect();
  49.     }
  50. }
  51.  
  52. int try_process () {
  53.     static unsigned long old = 0;
  54.     unsigned long now = millis();
  55.     unsigned long odiff = now - old;
  56.    
  57.     if (odiff > 2000UL) {
  58.         connect();
  59.         Particle.process();
  60.         unsigned long diff = millis() - old;
  61.        
  62.         Serial.println(millis());
  63.         Serial.println(now);
  64.         Serial.println(old);
  65.         Serial.println(odiff);
  66.         Serial.println(diff);
  67.        
  68.         old = now;
  69.         if (diff > my_delay) {
  70.             Serial.println("skipping delay");
  71.             return 0;
  72.         }
  73.         return 1;
  74.     }
  75.  
  76.     return 1;
  77. }
  78.  
  79. void do_mode () {
  80.     switch (mode) {
  81.         case 0:
  82.             off();
  83.             break;
  84.         case 1:
  85.             night_rider();
  86.             break;
  87.         default:
  88.             night_rider();
  89.     }
  90. }
  91.  
  92. void off () {
  93.     for (int i = 0; i < NUM_LEDS; i++) {
  94.         leds[i] = CRGB::Black;
  95.     }
  96. }
  97.  
  98. void night_rider() {
  99.   for (int i = 0; i < NUM_LEDS; i++) {
  100.     if (i == tmp) {
  101.       leds[i] = CRGB::Red;
  102.     } else {
  103.       leds[i] = CRGB::Black;
  104.     }
  105.   }
  106.  
  107.   if (up) {
  108.     tmp++;
  109.   } else {
  110.     tmp--;
  111.   }
  112.  
  113.   if (tmp >= NUM_LEDS) {
  114.     up = 0;
  115.     tmp = NUM_LEDS - 2;
  116.   }
  117.  
  118.   if (tmp < 0) {
  119.     up = 1;
  120.     tmp = 0;
  121.   }
  122. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement