0

Neopixel Jewel 10 Minute Necklace
Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.

Neopixel Jewel 10 Minute Necklace

by jeremyzschau on Sat Sep 30, 2017 8:22 am

How do I edit the colors?
Code: Select all | TOGGLE FULL SIZE
#include <Adafruit_NeoPixel.h>

#define PIN 1

Adafruit_NeoPixel pixels = Adafruit_NeoPixel(40, PIN);

uint8_t  mode   = 0, // Current animation effect
         offset = 0;
uint32_t color  = 0X00A4B3; // Starting color
uint32_t prevTime;

void setup() {
  pixels.begin();
  pixels.setBrightness(40); // 1/3 brightness
  prevTime = millis();
}

void loop() {
  uint8_t  i;
  uint32_t t;

  switch(mode) {
   
   case 0: //rainbow hold
    rainbowHold(20);
    delay(500);
    break;
   
   case 1: //rainbow cycle slow
    rainbowCycleslow(20);
    delay(50);
    break;
       
   case 2: //rainbow cycle fast
    rainbowCycle(5);
    delay(50);
    break;
  }

  t = millis();
  if((t - prevTime) > 8000) {      // Every 8 seconds...
    mode++;                        // Next mode
    if(mode > 3) {                 // End of modes?
      mode = 0;                    // Start modes over
      color >>= 8;                 // Next color R->G->B
      if(!color) color = 0xB300A4; // Reset color
    }
    for(i=0; i<32; i++) pixels.setPixelColor(i, 0);
    prevTime = t;
   
  }

 
}
void rainbow(uint8_t wait) {
  uint16_t i, j;

  for(j=0; j<256; j++) {
    for(i=0; i<pixels.numPixels(); i++) {
      pixels.setPixelColor(i, Wheel((i+j) & 255));
    }
    pixels.show();
    delay(wait);
  }
}

void rainbowCycle(uint8_t wait) {
  uint16_t r, j;

  for(j=0; j<256*6; j++) { // 6 cycles of all colors on wheel
    for(r=0; r< pixels.numPixels(); r++) {
      pixels.setPixelColor(r, Wheel(((r * 256 / pixels.numPixels()) + j) & 255));
    }
    pixels.show();
    delay(wait);
  }
}
void rainbowCycleslow(uint8_t wait) {
  uint16_t r, j;

  for(j=0; j<256*3; j++) { // 3 cycles of all colors on wheel
    for(r=0; r< pixels.numPixels(); r++) {
      pixels.setPixelColor(r, Wheel(((r * 256 / pixels.numPixels()) + j) & 255));
    }
    pixels.show();
    delay(wait);
  }
}
void rainbowHold(uint8_t wait) {
  uint16_t r, j;

  for(j=0; j<256*1; j++) { // 3 cycles of all colors on wheel
    for(r=0; r< pixels.numPixels(); r++) {
      pixels.setPixelColor(r, Wheel(((r * 256 / pixels.numPixels()) + j) & 255));
    }
    pixels.show();
    delay(wait);
  }
}

// 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) {
  if(WheelPos < 85) {
   return pixels.Color(WheelPos * 3, 255 - WheelPos * 3, 0);
  } else if(WheelPos < 170) {
   WheelPos -= 85;
   return pixels.Color(255 - WheelPos * 3, 0, WheelPos * 3);
  } else {
   WheelPos -= 170;
   return pixels.Color(0, WheelPos * 3, 255 - WheelPos * 3);
  }
}


jeremyzschau
 
Posts: 66
Joined: Fri Feb 27, 2015 11:00 pm

Re: Neopixel Jewel 10 Minute Necklace

by adafruit_support_bill on Sat Sep 30, 2017 8:37 am

It goes through the entire rainbow. Which colors do you want to change?

adafruit_support_bill
 
Posts: 63441
Joined: Sat Feb 07, 2009 10:11 am

Re: Neopixel Jewel 10 Minute Necklace

by jeremyzschau on Sat Sep 30, 2017 8:49 am

I would like to make more purples and blues. Could the RGB value numbers be written in the code?

jeremyzschau
 
Posts: 66
Joined: Fri Feb 27, 2015 11:00 pm

Re: Neopixel Jewel 10 Minute Necklace

by adafruit_support_bill on Sat Sep 30, 2017 9:11 am

You can remove the green part of the wheel() function, so it just works in the red-purple-blue range

Something like this:

Code: Select all | TOGGLE FULL SIZE
// Input a value 0 to 255 to get a color value.
// The colours are a transition r - b - back to r.
uint32_t Wheel(byte WheelPos)
{
  if ((wheelPos < 127)
  {
     return pixels.Color(255 - WheelPos * 2, 0, WheelPos * 2); // red to blue
  }
  else
  {
     WheelPos -= 127;
     return pixels.Color(WheelPos * 2, 0, 255 - WheelPos * 2); // blue to red
  }
}

adafruit_support_bill
 
Posts: 63441
Joined: Sat Feb 07, 2009 10:11 am

Re: Neopixel Jewel 10 Minute Necklace

by jeremyzschau on Wed Oct 04, 2017 5:52 pm

OK. Thank you. I don't want any red but I understand if it can't be done.

jeremyzschau
 
Posts: 66
Joined: Fri Feb 27, 2015 11:00 pm

Re: Neopixel Jewel 10 Minute Necklace

by adafruit_support_bill on Wed Oct 04, 2017 6:29 pm

Well, purple is red plus blue. So one way or another you you do need at least some red. You can make further tweaks to the wheel code to reduce the red.

adafruit_support_bill
 
Posts: 63441
Joined: Sat Feb 07, 2009 10:11 am

Re: Neopixel Jewel 10 Minute Necklace

by jeremyzschau on Thu Oct 05, 2017 6:13 pm

OK. Thank you.

jeremyzschau
 
Posts: 66
Joined: Fri Feb 27, 2015 11:00 pm

Please be positive and constructive with your questions and comments.