Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Adafruit_NeoPixel.h>
- #define PIN 0 //The data pin for the leds
- #define NUMLEDS 4 //The number of leds in the strip
- Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMLEDS, PIN, NEO_GRB + NEO_KHZ800);
- struct RAINBOWSTRUCT {
- unsigned long period;
- unsigned long last;
- uint16_t value;
- uint16_t bri; //brightness value
- uint16_t bridir; //brightness direction, 0 decreasing 1 increasing, for breathing effect
- unsigned long briperiod; //brightness period
- unsigned long brilast; //last time brightness process executed
- };
- struct RAINBOWSTRUCT rainbow;
- void setup() {
- rainbow.period=50;
- rainbow.last=0;
- rainbow.value=240;
- rainbow.bri=255;
- rainbow.bridir=0;
- rainbow.briperiod=15;
- rainbow.brilast=0;
- strip.begin();
- strip.show(); // Initialize all pixels to 'off'
- }
- void loop() {
- unsigned long curr_ms = millis ();
- loop_bri(curr_ms);
- //loop_rainbow(curr_ms);
- }
- void loop_rainbow(unsigned long curr_ms){
- if(curr_ms - rainbow.last >= rainbow.period){
- rainbow.last=curr_ms;//new time
- for(int i=0; i<strip.numPixels(); i++) {
- strip.setPixelColor(i,Wheel(rainbow.value));
- }
- rainbow.value=(rainbow.value+1)&255;
- strip.show();
- }
- }
- void loop_bri(unsigned long curr_ms){
- if(curr_ms - rainbow.brilast >= rainbow.briperiod){
- rainbow.brilast=curr_ms;//new time
- if(rainbow.bridir){
- rainbow.bri=rainbow.bri+1;
- }else{
- rainbow.bri=rainbow.bri-1;
- }
- strip.setBrightness(rainbow.bri);
- for(int i=0; i<strip.numPixels(); i++) {
- strip.setPixelColor(i,Wheel(rainbow.value));
- }
- strip.show();
- if(rainbow.bri==255){
- rainbow.bridir=0;
- }
- if(rainbow.bri==30){
- rainbow.bridir=1;
- }
- }
- }
- // Input a value 0 to 255 to get a color value.
- // The colours are a transition r - g - b - back to r.
- uint32_t Wheel(byte WheelPos) {
- WheelPos = 255 - WheelPos;
- if(WheelPos < 85) {
- return strip.Color(255 - WheelPos * 3, 0, WheelPos * 3);
- }
- if(WheelPos < 170) {
- WheelPos -= 85;
- return strip.Color(0, WheelPos * 3, 255 - WheelPos * 3);
- }
- WheelPos -= 170;
- return strip.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement