Load the following code onto your GEMMA using the Adafruit Arduino IDE or Codebender:
//Cortana costume animating NeoPixels
//based on the Larson Scanner Shades by Phillip Burgess
//https://learn.adafruit.com/larson-scanner-shades
//modified by Becky Stern for Adafruit
#include <Adafruit_NeoPixel.h>
#define PIN 1
// Parameter 1 = number of pixels in strip
// Parameter 2 = Arduino 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(21, PIN, NEO_GRB + NEO_KHZ800);
int ringRightSide[] = {0, 1, 2, 3, 4, 5, 6, 7, 8};
int ringLeftSide[] = {0, 15, 14, 13, 12, 11, 10, 9, 8};
int singlePixels[] = {16, 17, 18, 19, 20};
// IMPORTANT: To reduce NeoPixel burnout risk, add 1000 uF capacitor across
// pixel power leads, add 300 - 500 Ohm resistor on first pixel's data input
// and minimize distance between Arduino and first pixel. Avoid connecting
// on a live circuit...if you must, connect GND first.
void setup() {
strip.begin();
strip.show(); // Initialize all pixels to 'off'
}
int pos = 0;
int pos2 = 0;
void loop() {
// Draw 5 pixels centered on pos. setPixelColor() will clip any
// pixels off the ends of the strip, we don't need to watch for that.
strip.setPixelColor(ringRightSide[abs((pos - 2)%9)], strip.Color(0, 0, 80)); // Dark blue
strip.setPixelColor(ringRightSide[abs((pos - 1)%9)], strip.Color(0, 0, 150)); // Medium blue
strip.setPixelColor(ringRightSide[abs((pos )%9)], strip.Color(15, 15, 200)); // Center pixel is brightest
strip.setPixelColor(ringRightSide[abs((pos + 1)%9)], strip.Color(0, 0, 150)); // Medium blue
strip.setPixelColor(ringRightSide[abs((pos + 2)%9)], strip.Color(0, 0, 80)); // Dark blue
strip.setPixelColor(ringLeftSide[abs((pos - 2)%9)], strip.Color(0, 0, 80)); // Dark blue
strip.setPixelColor(ringLeftSide[abs((pos - 1)%9)], strip.Color(0, 0, 150)); // Medium blue
strip.setPixelColor(ringLeftSide[abs((pos )%9)], strip.Color(15, 15, 200)); // Center pixel is brightest
strip.setPixelColor(ringLeftSide[abs((pos + 1)%9)], strip.Color(0, 0, 150)); // Medium blue
strip.setPixelColor(ringLeftSide[abs((pos + 2)%9)], strip.Color(0, 0, 80)); // Dark blue
strip.setPixelColor(singlePixels[abs(pos2 - 1)], strip.Color(0, 0, 80)); // Dark blue
strip.setPixelColor(singlePixels[abs(pos2 )], strip.Color(15, 15, 200)); // Center pixel is brightest
strip.setPixelColor(singlePixels[abs(pos2 + 1)], strip.Color(0, 0, 80)); // Dark blue
strip.show();
delay(100);
// Rather than being sneaky and erasing just the tail pixel,
// it's easier to erase it all and draw a new one next time.
for(int j=-2; j<= 2; j++) {
strip.setPixelColor(ringRightSide[(pos+j)%9], 0);
strip.setPixelColor(ringLeftSide[(pos+j)%9], 0);
strip.setPixelColor(singlePixels[(pos2+j)%5], 0);
}
pos += 1;
if(pos < 0) {
pos = 1;
} else if(pos >= 9) {
pos = 0;
}
pos2 += 1;
if(pos2 < 0) {
pos2 = 1;
} else if(pos2 >= 6) {
pos2 = 0;
}
}
Page last edited September 04, 2014
Text editor powered by tinymce.