Due to issues with the Internet.ee domain registry, our main domain, paste.ee, is currently disabled due to abuse reports. We are looking into alternative domains to continue operation, but for now the pastee.dev domain is the primary domain.
If you wish to blame someone, blame the scum using this site as a malware host.
Submitted on January 7, 2016 at 10:12 PM

Section 1 (Text)

#include <Adafruit_NeoPixel.h>
int i = 0;
int t = 0;
#define PIN 9

//Original Code by Adafruit (adafruit.com), Edited by PerfectPixel, 2016 (instructables.com/member/perfectpixel)
//Code is public domain, Enjoy!
Adafruit_NeoPixel strip = Adafruit_NeoPixel(8, PIN, NEO_GRB + NEO_KHZ800);

// An important announcement from Adafruit:
// 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() {
  pinMode(3, INPUT);
  //Serial.begin(9600); //Debugging
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
}

void loop() {
  switch(i) {  //Change the RGB values in the colorWipe functions to change the colors that the redstone cube becomes.
    case 0: colorWipe(strip.Color(0, 0, 0), 5);
    break;
    case 1:colorWipe(strip.Color(255, 0, 0), 5);
    break;
    case 2:colorWipe(strip.Color(0, 255, 0), 5);
    break;
    case 3:colorWipe(strip.Color(0, 0, 255), 5);
    break;
    case 4:colorWipe(strip.Color(0, 255, 255), 5);
    break;
    case 5:colorWipe(strip.Color(255, 0, 255), 5);
    break;
    case 6:colorWipe(strip.Color(255, 255, 0), 5);
    break;
    case 7:colorWipe(strip.Color(255, 35, 97), 5);
    break;
    case 8:colorWipe(strip.Color(13, 73, 216), 5);
    break;
    case 9:colorWipe(strip.Color(248, 60, 49), 5);
    break;
    case 10:colorWipe(strip.Color(191, 84, 229), 5);
    break;
    case 11:colorWipe(strip.Color(76, 255, 5), 5);
    break;
    case 12:colorWipe(strip.Color(0, 240, 80), 5);
    break;
    case 13:colorWipe(strip.Color(7, 234, 233), 5);
    break;
    case 14:colorWipe(strip.Color(73, 10, 61), 5);
    break;
    case 15:colorWipe(strip.Color(63, 184, 175), 5);
    break;
    case 16:colorWipe(strip.Color(196, 77, 88), 5);
    break;
  }
  if(analogRead(3) < 600){ //by default, 600 is the threshhold for detecting if the tap sensor has been activated.
    i++;
    delay(250);
    if(i > 16) i = 0;
  }

  t++;
  delay(25);
  //Serial.println(analogRead(3)); //Debugging

  if(t > 1000){ //this will automatically turn off the LED's after some time.
    t = 0;
    i = 0; 
  }
}

// Fill the dots one after the other with a color
void colorWipe(uint32_t c, uint8_t wait) {
  for(uint16_t i=0; i<strip.numPixels(); i++) {
    strip.setPixelColor(i, c);
    strip.show();
    delay(wait);
  }
}

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

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

// Slightly different, this makes the rainbow equally distributed throughout
void rainbowCycle(uint8_t wait) {
  uint16_t i, j;

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

//Theatre-style crawling lights.
void theaterChase(uint32_t c, uint8_t wait) {
  for (int j=0; j<10; j++) {  //do 10 cycles of chasing
    for (int q=0; q < 3; q++) {
      for (int i=0; i < strip.numPixels(); i=i+3) {
        strip.setPixelColor(i+q, c);    //turn every third pixel on
      }
      strip.show();

      delay(wait);

      for (int i=0; i < strip.numPixels(); i=i+3) {
        strip.setPixelColor(i+q, 0);        //turn every third pixel off
      }
    }
  }
}

//Theatre-style crawling lights with rainbow effect
void theaterChaseRainbow(uint8_t wait) {
  for (int j=0; j < 256; j++) {     // cycle all 256 colors in the wheel
    for (int q=0; q < 3; q++) {
      for (int i=0; i < strip.numPixels(); i=i+3) {
        strip.setPixelColor(i+q, Wheel( (i+j) % 255));    //turn every third pixel on
      }
      strip.show();

      delay(wait);

      for (int i=0; i < strip.numPixels(); i=i+3) {
        strip.setPixelColor(i+q, 0);        //turn every third pixel off
      }
    }
  }
}

// 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);
}