Arduino

This is a great basic Arduino sketch that looks fantastic on this NanoRing. You may recognize it from the example code used in the NeoPixel Tiara guide. I've updated the Random Flash animation to show flashes of 5 colors on a ring with 3 LEDs. 

If you are new to Arduino, check out this guide: Adafruit Arduino IDE Setup. This sketch uses the Adafruit NeoPixel library. You can learn more about Arduino libraries by reading this guide from Adafruit.

Plug the Gemma M0 into your computer with a working USB cable and select Gemma M0 in Tools -> board. Download the code from the download link below. Verify and upload the code to the Gemma M0.

#include <Adafruit_NeoPixel.h>
#define PIN 1
#define NUM_LEDS 3

Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);

//                          R   G   B
uint8_t myColors[][5] = {
                         {30, 144, 255},   // dodger blue
                         {232, 100, 255},  // purple
                         {204, 0, 204},    //  
                         {200, 200, 20},   // yellow 
                         {30, 200, 200},   // blue
                         };
                               
// don't edit the line below
#define FAVCOLORS sizeof(myColors) / 5

void setup() {
  strip.begin();
  strip.setBrightness(20);
  strip.show(); // Initialize all pixels to 'off'
}

void loop() {
  flashRandom(10, 1);  // first number is 'wait' delay, shorter num == shorter twinkle
  flashRandom(10, 3);  // second number is how many neopixels to simultaneously light up
  flashRandom(10, 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)
}
This guide was first published on Jan 06, 2019. It was last updated on Jan 06, 2019. This page (Arduino) was last updated on Aug 24, 2019.