Advertisement
prampec

SoftTimer - NeoPixel with button example

Oct 9th, 2018
208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <Adafruit_NeoPixel.h>
  2. #include <PciManager.h>
  3. #include <SoftTimer.h>
  4. #include <Debouncer.h>
  5.  
  6. #define NEOPIXELPIN 13
  7. #define NUMPIXELS 12
  8. #define SWITCHPIN 7
  9.  
  10. // -- Define method signatures.
  11. void onPressed();
  12. void onReleased(unsigned long pressTimespan);
  13. void changeColor(Task* me);
  14.  
  15. Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, NEOPIXELPIN, NEO_GRB + NEO_KHZ800);
  16. Task changeColorTask(100, changeColor);
  17. Debouncer debouncer(SWITCHPIN, MODE_CLOSE_ON_PUSH, onPressed, onReleased, true);
  18.  
  19. unsigned long ColorArray[16];
  20. int DIM = 0;
  21. int NextPixel = 0;
  22. int NextColor = 0;
  23.  
  24.  
  25. void setup() {
  26.   // Set up built in colors
  27.   ColorArray[0] = strip.Color(0,0,0); // Black
  28.   ColorArray[1] = strip.Color(255,255,255); // White
  29.   ColorArray[2] = strip.Color(255,0,0); // Red
  30.   ColorArray[3] = strip.Color(0,255,0); // Lime
  31.   ColorArray[4] = strip.Color(0,0,255); // Blue
  32.   ColorArray[5] = strip.Color(255,255,0); // Yellow
  33.   ColorArray[6] = strip.Color(0,255,255); // Cyan
  34.   ColorArray[7] = strip.Color(255,0,255); // Magenta
  35.   ColorArray[8] = strip.Color(0,0,0); // Black
  36.   ColorArray[9] = strip.Color(31,31,31); // White
  37.   ColorArray[10] = strip.Color(31,0,0); // Red
  38.   ColorArray[11] = strip.Color(0,31,0); // Lime
  39.   ColorArray[12] = strip.Color(0,0,31); // Blue
  40.   ColorArray[13] = strip.Color(31,31,0); // Yellow
  41.   ColorArray[14] = strip.Color(0,31,31); // Cyan
  42.   ColorArray[15] = strip.Color(31,0,31); // Magenta
  43.  
  44.   PciManager.registerListener(SWITCHPIN, &debouncer);
  45.   SoftTimer.add(&changeColorTask);
  46.  
  47.   strip.begin();
  48.   strip.show();
  49. }
  50.  
  51. void onPressed() {
  52.   DIM = 8 - DIM; // Alter between 0 and 8;
  53. }
  54. void onReleased(unsigned long pressTimespan) {
  55.   // do nothing on release
  56. }
  57.  
  58. void changeColor(Task* me) {
  59.   if (NextPixel <= NUMPIXELS) {
  60.     strip.setPixelColor(NextPixel, ColorArray[NextColor + DIM]);
  61.     strip.show();
  62.     NextPixel++;
  63.   }
  64.   else {
  65.     NextPixel = 0;
  66.     if (NextColor++ > 6) {
  67.       NextColor = 0;
  68.     }
  69.   }
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement