tpl5111demo.ino
 1  // SPDX-FileCopyrightText: 2017 Limor Fried for Adafruit Industries
 2  //
 3  // SPDX-License-Identifier: MIT
 4  
 5  #include <Adafruit_NeoPixel.h>
 6  
 7  #if defined(ESP8266)
 8    #define NEOPIX   4
 9    #define DONEPIN  5
10  #else
11    #include <Adafruit_SleepyDog.h>
12    #define NEOPIX   13
13    #define DONEPIN  12
14  #endif
15  
16  Adafruit_NeoPixel strip = Adafruit_NeoPixel(12, NEOPIX, NEO_GRB + NEO_KHZ800);
17  
18  
19  void setup() {
20    pinMode(DONEPIN, OUTPUT);
21    digitalWrite(DONEPIN, LOW);
22    Serial.begin(115200);
23    Serial.println("Light up NeoPixels!");
24  
25    strip.begin();
26    strip.show(); // Initialize all pixels to 'off'
27    strip.setBrightness(20);
28  }
29  
30  void loop() {
31    rainbowCycle(5);
32  
33    Serial.println("NeoPixels done, sleeping");
34  
35    // toggle DONE so TPL knows to cut power!
36    while (1) {
37      digitalWrite(DONEPIN, HIGH);
38      delay(1);
39      digitalWrite(DONEPIN, LOW);
40      delay(1);
41    }
42    
43    Serial.println("Awake!");
44  }
45  
46  // Slightly different, this makes the rainbow equally distributed throughout
47  void rainbowCycle(uint8_t wait) {
48    uint16_t i, j;
49  
50    for(j=0; j<256*1; j++) { // 5 cycles of all colors on wheel
51      for(i=0; i< strip.numPixels(); i++) {
52        strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels()) + j) & 255));
53      }
54      strip.show();
55      delay(wait);
56    }
57  }
58  
59  
60  // Input a value 0 to 255 to get a color value.
61  // The colours are a transition r - g - b - back to r.
62  uint32_t Wheel(byte WheelPos) {
63    WheelPos = 255 - WheelPos;
64    if(WheelPos < 85) {
65      return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
66    }
67    if(WheelPos < 170) {
68      WheelPos -= 85;
69      return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
70    }
71    WheelPos -= 170;
72    return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
73  }