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 }