#ifndef BackGroundRingClass_h #define BackGroundRingClass_h #include #include "Arduino.h" #include "Adafruit_NeoPixel.h" #include "WS2812_Definitions.h" typedef enum Action { Idle, Solid, Pulse, Spin, Flip, Slowroll }; class BackgroundRingClass : public Adafruit_NeoPixel { public: int led_count; Action action; BackgroundRingClass(int ledcount, int pin); void tick(); // Helper Functions void setColor(unsigned long color, uint8_t brightness=255, bool show=false); void setRepeating(unsigned long* colors, int elements, int rotation); // Idle void init_idle(); void tick_idle(); // Solid void init_solid(unsigned long int color, uint8_t brightness); void tick_solid(); // Pulse struct { bool increasing; unsigned long color; unsigned long starttime; unsigned long steptime; uint8_t maxbrightness; uint8_t curbrightness; } pulseinfo; void init_pulse(unsigned long color, uint8_t maxbrightness, unsigned long ms); void tick_pulse(); // Spin struct { unsigned long color1; unsigned long color2; unsigned long ms; unsigned long tickdelay; unsigned long starttime; unsigned long lasttick; int rotation; } spininfo; void init_spin(unsigned long color1, unsigned long color2, unsigned long ms=2000, unsigned long tickdelay=125); void tick_spin(); // Flip struct { unsigned long color1; unsigned long color2; unsigned long ms; unsigned long tickdelay; unsigned long starttime; unsigned long lasttick; bool flipper; } flipinfo; void init_flip(unsigned long color1, unsigned long color2, unsigned long ms=5000, unsigned long tickdelay=500); void tick_flip(); // Slowroll struct { unsigned long color1; unsigned long color2; unsigned long ms; unsigned long tickdelay; unsigned long starttime; unsigned long lasttick; bool flipper; } slowrollinfo; void init_slowroll(unsigned long color1, unsigned long color2, unsigned long ms=5000, unsigned long tickdelay=500); void tick_slowroll(); }; #endif