Atm_fade_WS2812.hpp 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #pragma once
  2. #ifndef ATM_FADE_WS2812_H_
  3. #define ATM_FADE_WS2812_H_
  4. #include <Automaton.h>
  5. #include "FastLED.h"
  6. class Atm_fade_WS2812 : public Machine {
  7. public:
  8. enum { IDLE, ON, START, STARTU, UP, STARTD, DOWN, REPEAT, DONE, OSTARTU, OUP, OSTARTD, ODOWN };
  9. enum { EVT_CNT_FADE, EVT_TM_FADE, EVT_TM_ON, EVT_TM_OFF, EVT_CNT_RPT, EVT_ON, EVT_OFF, EVT_BLINK, EVT_TOGGLE, EVT_TOGGLE_BLINK, ELSE };
  10. enum { EVT_START = EVT_BLINK };
  11. Atm_fade_WS2812( CRGB *_leds, int _num_leds, int _offset_leds) ;
  12. ~Atm_fade_WS2812 (void) ;
  13. Atm_fade_WS2812& begin();
  14. Atm_fade_WS2812& trace( Stream& stream );
  15. Atm_fade_WS2812& blink( uint32_t duration, uint32_t pause_duration, uint16_t repeat_count = ATM_COUNTER_OFF );
  16. Atm_fade_WS2812& blink( uint32_t duration );
  17. Atm_fade_WS2812& blink( void );
  18. Atm_fade_WS2812& pause( uint32_t duration );
  19. Atm_fade_WS2812& fade( int fade_length);
  20. Atm_fade_WS2812& fade( int fade_length, bool fade_light, int fade_chase);
  21. Atm_fade_WS2812& fadeSpeed( float fade_speed);
  22. Atm_fade_WS2812& fadeSpeed( float fade_speed, bool fade_light, int fade_chase);
  23. Atm_fade_WS2812& repeat( uint16_t repeat );
  24. Atm_fade_WS2812& on( void );
  25. Atm_fade_WS2812& off( void );
  26. Atm_fade_WS2812& toggle( void );
  27. Atm_fade_WS2812& toggleBlink( void );
  28. Atm_fade_WS2812& start( void );
  29. Atm_fade_WS2812& onFinish( Machine& machine, int event = 0 );
  30. Atm_fade_WS2812& onFinish( atm_cb_push_t callback, int idx = 0 );
  31. Atm_fade_WS2812& setColor(int hue, int sat, int val);
  32. Atm_fade_WS2812& setColor(CHSV hsvColor);
  33. Atm_fade_WS2812& setColor(CRGB rgbColor);
  34. Atm_fade_WS2812& replaceValues(bool replace); // if true replace the array, else just add values
  35. Atm_fade_WS2812& updateRate(int new_update_rate); // change update rate
  36. Atm_fade_WS2812& update();
  37. Atm_fade_WS2812& reversed(bool _reverse);
  38. private:
  39. //destination array
  40. CRGB * leds ;
  41. int num_leds ;
  42. int offset_leds ;
  43. //buffer array
  44. CRGB * leds_buffer ;
  45. CHSV color ;
  46. bool reverse = false ;
  47. int FADE_STEPS = 254 ;
  48. uint32_t fade_duration ; //last led to update
  49. unsigned long fade_start_millis ;
  50. uint32_t fade_ellapsed_millis ;
  51. uint32_t fade_update_rate = 22 ;
  52. bool _fade_light = true ;
  53. bool _fade_chase = 0 ;
  54. void update_leds(float fade_value) ;
  55. bool _replace_array = true ;
  56. bool update_flag = true; // for synchronised update
  57. enum { ENT_REPEAT, ENT_OFF, ENT_ON, ENT_UP, ENT_DOWN, ENT_START, ENT_DONE };
  58. // short pin;
  59. uint16_t repeat_count;
  60. atm_connector onfinish;
  61. atm_timer_millis timer_fade, timer_on, timer_off, timer_update;
  62. atm_counter counter_fade, counter_repeat;
  63. int event( int id );
  64. void action( int id );
  65. protected:
  66. // virtual void initLED();
  67. // virtual void switchOn();
  68. // virtual void switchOff();
  69. // virtual void setBrightness(int value);
  70. };
  71. #endif