BackgroundRingClass.h 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. #ifndef BackGroundRingClass_h
  2. #define BackGroundRingClass_h
  3. #include <SoftwareSerial.h>
  4. #include "Arduino.h"
  5. #include "Adafruit_NeoPixel.h"
  6. #include "WS2812_Definitions.h"
  7. typedef enum Action {
  8. Idle,
  9. Solid,
  10. Pulse,
  11. Spin,
  12. Flip,
  13. Slowroll
  14. };
  15. class BackgroundRingClass : public Adafruit_NeoPixel {
  16. public:
  17. int led_count;
  18. Action action;
  19. BackgroundRingClass(int ledcount, int pin);
  20. void tick();
  21. // Helper Functions
  22. void setColor(unsigned long color, uint8_t brightness=255, bool show=false);
  23. void setRepeating(unsigned long* colors, int elements, int rotation);
  24. // Idle
  25. void init_idle();
  26. void tick_idle();
  27. // Solid
  28. void init_solid(unsigned long int color, uint8_t brightness);
  29. void tick_solid();
  30. // Pulse
  31. struct {
  32. bool increasing;
  33. unsigned long color;
  34. unsigned long starttime;
  35. unsigned long steptime;
  36. uint8_t maxbrightness;
  37. uint8_t curbrightness;
  38. } pulseinfo;
  39. void init_pulse(unsigned long color, uint8_t maxbrightness, unsigned long ms);
  40. void tick_pulse();
  41. // Spin
  42. struct {
  43. unsigned long color1;
  44. unsigned long color2;
  45. unsigned long ms;
  46. unsigned long tickdelay;
  47. unsigned long starttime;
  48. unsigned long lasttick;
  49. int rotation;
  50. } spininfo;
  51. void init_spin(unsigned long color1, unsigned long color2, unsigned long ms=2000, unsigned long tickdelay=125);
  52. void tick_spin();
  53. // Flip
  54. struct {
  55. unsigned long color1;
  56. unsigned long color2;
  57. unsigned long ms;
  58. unsigned long tickdelay;
  59. unsigned long starttime;
  60. unsigned long lasttick;
  61. bool flipper;
  62. } flipinfo;
  63. void init_flip(unsigned long color1, unsigned long color2, unsigned long ms=5000, unsigned long tickdelay=500);
  64. void tick_flip();
  65. // Slowroll
  66. struct {
  67. unsigned long color1;
  68. unsigned long color2;
  69. unsigned long ms;
  70. unsigned long tickdelay;
  71. unsigned long starttime;
  72. unsigned long lasttick;
  73. bool flipper;
  74. } slowrollinfo;
  75. void init_slowroll(unsigned long color1, unsigned long color2, unsigned long ms=5000, unsigned long tickdelay=500);
  76. void tick_slowroll();
  77. };
  78. #endif