NeoPixel Ring Bangle Bracelet Created by Becky Stern Last updated on 2015-08-29 02:51:42 PM EDT
Guide Contents Guide Contents Overview Circuit Diagram Build it! Code Wear it! 2 3 6 7 13 20 https://learn.adafruit.com/neopixel-ring-bangle-bracelet Page 2 of 21
Overview Wear a bangle of light! Build a charming bracelet from four NeoPixel rings and GEMMA, Adafruit's tiny wearable electronics platform. You will need: 4x NeoPixel Rings (http://adafru.it/1463) (16-size) GEMMA (http://adafru.it/1222) tiny lipoly battery (http://adafru.it/1317) tiny switch (http://adafru.it/805) jewelry findings (http://adafru.it/d2f) jump rings magnetic clasp (http://adafru.it/d2g) two pairs of pliers small gauge stranded wire soldering iron (http://adafru.it/180) and solder (http://adafru.it/145) wire strippers (http://adafru.it/527) flush snips (http://adafru.it/152) E6000 craft adhesive https://learn.adafruit.com/neopixel-ring-bangle-bracelet Page 3 of 21
https://learn.adafruit.com/neopixel-ring-bangle-bracelet Page 4 of 21
https://learn.adafruit.com/neopixel-ring-bangle-bracelet Page 5 of 21
Circuit Diagram Click to enlarge. GEMMA's D1 pin is wired to the first pixel ring's input pin. Signal output of first ring chains to subsequent ring's input pin, and so on. GEMMA's Vout pin is wired to all four pixel ring's VCC pins. Likewise GEMMA's ground pin is wired to all the rings' GND pins. https://learn.adafruit.com/neopixel-ring-bangle-bracelet Page 6 of 21
Build it! Lay out four NeoPixel rings on a gridded surface like a cutting mat. Glue on your metal jewelry findings as shown with E6000 craft adhesive and let dry overnight. The orientation of the rings in the photo above matches up with our coding diagram on the next page. This orientation affects how any multi-ring animations will look! Open your jump rings by twisting the wire ends away from each other with two pairs of pliers. Torque the wire ends, don't splay them. Use your jump rings to attach the jewelry findings to one another, and also to attach a magnetic clasp. Close jump rings the same way you opened them: twist the wire ends towards each other with two pairs of pliers until they match up. https://learn.adafruit.com/neopixel-ring-bangle-bracelet Page 7 of 21
https://learn.adafruit.com/neopixel-ring-bangle-bracelet Page 8 of 21
Follow the circuit diagram to connect GEMMA and the four NeoPixel Rings. Use small-gauge stranded wire, and route the wires through the jump rings so they are hidden from the front side of the pixel rings. Make sure that the wires are not under strain-- they should be long enough to allow the segments of the bracelet to move semi-freely without tugging. The metal findings/jump ring should be responsible for strain relief. https://learn.adafruit.com/neopixel-ring-bangle-bracelet Page 9 of 21
When soldering power and ground connections, where more than one wire will affix to each joint, put both wires in at once before soldering. It's easier to solder two wires at once than it is to solder one wire in, then have to reheat the solder to add another. https://learn.adafruit.com/neopixel-ring-bangle-bracelet Page 10 of 21
You are making a piece of delicate jewelry, but you'll wear it out on your wrist, so there's a chance your wires could get snagged! To provide extra strain relief, add a dot of E6000 over each solder connection on the NeoPixel rings. To add a power switch, cut and strip one of the wires leading to your battery. Add two small pieces of heat shrink tubing to the stripped wires and solder to two legs of the small switch (center leg and one outer leg). Slide the heat shrink to cover the exposed metal and shrink with a heat gun. Use a piece of foam tape to stick the battery behind the GEMMA, with the switch sticking out the side. Plug in the battery and glue the switch in place. https://learn.adafruit.com/neopixel-ring-bangle-bracelet Page 11 of 21
https://learn.adafruit.com/neopixel-ring-bangle-bracelet Page 12 of 21
Code To program GEMMA, make sure you have downloaded the GEMMA-fied Arduino IDE from the "Introducing GEMMA" guide (http://adafru.it/cyi). Above is a diagram numbering the NeoPixels in their programatic order. It's handy for writing animations that seem to flow between rings, like the basic sine wave animation here: https://learn.adafruit.com/neopixel-ring-bangle-bracelet Page 13 of 21
//Basic sine wave animation for NeoPixel Ring Bangle Bracelet //by Dano Wall and Becky Stern for Adafruit #include <Adafruit_NeoPixel.h> #define PIN 1 //marked D1 on GEMMA // Parameter 1 = number of pixels in strip // Parameter 2 = pin number (most are valid) // Parameter 3 = pixel type flags, add together as needed: // NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/ws2812 LEDs) // NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers) // NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products) // NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2) Adafruit_NeoPixel strip = Adafruit_NeoPixel(64, PIN, NEO_GRB + NEO_KHZ800); int sine[] = {4, 3, 2, 1, 0, 15, 14, 13, 12, 20, 21, 22, 23, 24, 25, 26, 27, 28, 36, 35, 34, 33, 32, 47, 46, 45, 44, 52 void setup() { strip.begin(); strip.setbrightness(40); //adjust brightness here strip.show(); // Initialize all pixels to 'off' void loop() { for(int i=0; i<36; i++) { strip.setpixelcolor(sine[i], strip.color(75, 250, 100)); //change RGB color value here delay(40); for (int j=0; j<25; j++){ strip.setpixelcolor(sine[(j+i+4)%36], strip.color(0, 0, 0)); strip.show(); Here's another fun animation, it's similar to the sine wave but loops back around on itself when it gets to the fourth ring in a "figure eight." https://learn.adafruit.com/neopixel-ring-bangle-bracelet Page 14 of 21
https://learn.adafruit.com/neopixel-ring-bangle-bracelet Page 15 of 21
//Figure-Eight animation for Neopixel Ring Bangle Bracelet //By Dano Wall and Becky Stern for Adafruit #include <Adafruit_NeoPixel.h> #define PIN 1 //marked D1 on GEMMA // Parameter 1 = number of pixels in strip // Parameter 2 = pin number (most are valid) // Parameter 3 = pixel type flags, add together as needed: // NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/ws2812 LEDs) // NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products) Adafruit_NeoPixel strip = Adafruit_NeoPixel(64, PIN, NEO_GRB + NEO_KHZ800); //Array of pixels in order of animation - 70 in total int sine[] = {4, 3, 2, 1, 0, 15, 14, 13, 12, 20, 21, 22, 23, 24, 25, 26, 27, 28, 36, 35, 34, 33, 32, 47, 46, 45, 44, 52 void setup() { strip.begin(); strip.setbrightness(40); //adjust brightness here strip.show(); // Initialize all pixels to 'off' void loop() { for(int i=0; i<70; i++) { strip.setpixelcolor(sine[i], strip.color(0, 0, 0)); for (int j=0; j<10; j++){ strip.setpixelcolor(sine[(j+i+1)%70], strip.color(5, 250, 200)); //change RGB color value here strip.show(); delay(60); This code randomly flashes pixels in three colors of your choice. https://learn.adafruit.com/neopixel-ring-bangle-bracelet Page 16 of 21
//Random Flash animation for Neopixel Ring Bangle Bracelet //by Dano Wall and Becky Stern for Adafruit //based on the Sparkle Skirt, minus the accelerometer #include <Adafruit_NeoPixel.h> #define PIN 1 // Parameter 1 = number of pixels in strip // Parameter 2 = pin number (most are valid) // Parameter 3 = pixel type flags, add together as needed: // NEO_KHZ800 800 KHz bitstream (most NeoPixel products w/ws2812 LEDs) // NEO_KHZ400 400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers) // NEO_GRB Pixels are wired for GRB bitstream (most NeoPixel products) // NEO_RGB Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2) Adafruit_NeoPixel strip = Adafruit_NeoPixel(64, PIN, NEO_GRB + NEO_KHZ800); // Here is where you can put in your favorite colors that will appear! // just add new {nnn, nnn, nnn, lines. They will be picked out randomly // R G B uint8_t mycolors[][3] = {{232, 100, 255, // purple {200, 200, 20, // yellow {30, 200, 200, // blue ; // don't edit the line below #define FAVCOLORS sizeof(mycolors) / 3 https://learn.adafruit.com/neopixel-ring-bangle-bracelet Page 17 of 21
#define FAVCOLORS sizeof(mycolors) / 3 void setup() { strip.begin(); strip.setbrightness(40); strip.show(); // Initialize all pixels to 'off' void loop() { flashrandom(5, 1); // first number is 'wait' delay, shorter num == shorter twinkle flashrandom(5, 3); // second number is how many neopixels to simultaneously light up flashrandom(5, 2); void flashrandom(int wait, uint8_t howmany) { for(uint16_t i=0; i<howmany; i++) { // pick a random favorite color! int c = random(favcolors); int red = mycolors[c][0]; int green = mycolors[c][1]; int blue = mycolors[c][2]; // get a random pixel from the list int j = random(strip.numpixels()); // now we will 'fade' it in 5 steps for (int x=0; x < 5; x++) { int r = red * (x+1); r /= 5; int g = green * (x+1); g /= 5; int b = blue * (x+1); b /= 5; strip.setpixelcolor(j, strip.color(r, g, b)); strip.show(); delay(wait); // & fade out in 5 steps for (int x=5; x >= 0; x--) { int r = red * x; r /= 5; int g = green * x; g /= 5; int b = blue * x; b /= 5; strip.setpixelcolor(j, strip.color(r, g, b)); strip.show(); delay(wait); // LEDs will be off when done (they are faded to 0) https://learn.adafruit.com/neopixel-ring-bangle-bracelet Page 18 of 21
// LEDs will be off when done (they are faded to 0) https://learn.adafruit.com/neopixel-ring-bangle-bracelet Page 19 of 21
Wear it! https://learn.adafruit.com/neopixel-ring-bangle-bracelet Page 20 of 21
Enjoy your new bangle bracelet! Perfect a New Year's party, sporting event (with team colors, of course), wedding, bat mitzvah, quinceañera, and more. Last Updated: 2015-08-29 02:51:42 PM EDT Page 21 of 21