Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <Adafruit_NeoPixel.h>
- #ifdef __AVR__
- #include <avr/power.h> // Required for 16 MHz Adafruit Trinket
- #endif
- // Which pin on the Arduino is connected to the NeoPixels?
- // On a Trinket or Gemma we suggest changing this to 1:
- #define LED_PIN 1
- // How many NeoPixels are attached to the Arduino?
- #define LED_COUNT 5
- // Declare our NeoPixel strip object:
- Adafruit_NeoPixel strip(LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
- // Argument 1 = Number of pixels in NeoPixel strip
- // Argument 2 = Arduino pin number (most are valid)
- // Argument 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)
- // NEO_RGBW Pixels are wired for RGBW bitstream (NeoPixel RGBW products)
- // setup() function -- runs once at startup --------------------------------
- void setup() {
- // These lines are specifically to support the Adafruit Trinket 5V 16 MHz.
- // Any other board, you can remove this part (but no harm leaving it):
- #if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
- clock_prescale_set(clock_div_1);
- #endif
- // END of Trinket-specific code.
- strip.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
- strip.show(); // Turn OFF all pixels ASAP
- strip.setBrightness(50); // Set BRIGHTNESS to about 1/5 (max = 255)
- }
- // loop() function -- runs repeatedly as long as board is on ---------------
- void loop() {
- redPulse(30); // Red
- greenPulse(30); // green
- bluePulse(30); // blue
- colorWipe(strip.Color( 255, 0, 0), 300); // red
- colorWipe_r(strip.Color( 0, 255, 0), 300); // Green
- colorWipe(strip.Color(0, 0, 255), 300); // Blue
- rainbow(50); // Flowing rainbow cycle along the whole strip
- }
- // Some functions of our own for creating animated effects -----------------
- // Fill strip pixels one after another with a color. Strip is NOT cleared
- // first; anything there will be covered pixel by pixel. Pass in color
- // (as a single 'packed' 32-bit value, which you can get by calling
- // strip.Color(red, green, blue) as shown in the loop() function above),
- // and a delay time (in milliseconds) between pixels.
- void colorWipe(uint32_t color, int wait) {
- for (int i = 0; i < strip.numPixels(); i++) { // For each pixel in strip...
- strip.setPixelColor(i, color); // Set pixel's color (in RAM)
- strip.show(); // Update strip to match
- delay(wait); // Pause for a moment
- }
- }
- void colorWipe_r(uint32_t color, int wait) {
- for (int i = strip.numPixels() + 1; i > 0; i--) { // For each pixel in strip...
- strip.setPixelColor(i - 1, color); // Set pixel's color (in RAM)
- strip.show(); // Update strip to match
- delay(wait); // Pause for a moment
- }
- }
- void redPulse(int wait) {
- for (int c = 0; c < 255; c++) {
- for (int i = 0; i < strip.numPixels(); i++) { // For each pixel in strip...
- strip.setPixelColor(i, c, 0, 0); // Set pixel's color (in RAM)
- strip.show(); // Update strip to match
- }
- delay(wait);
- }
- for (int c = 255; c > 0; c--) {
- for (int i = 0; i < strip.numPixels(); i++) { // For each pixel in strip...
- strip.setPixelColor(i, c, 0, 0); // Set pixel's color (in RAM)
- strip.show(); // Update strip to match
- }
- delay(wait);
- }
- }
- void greenPulse(int wait) {
- for (int c = 0; c < 255; c++) {
- for (int i = 0; i < strip.numPixels(); i++) { // For each pixel in strip...
- strip.setPixelColor(i, 0, c, 0); // Set pixel's color (in RAM)
- strip.show(); // Update strip to match
- }
- delay(wait);
- }
- for (int c = 255; c > 0; c--) {
- for (int i = 0; i < strip.numPixels(); i++) { // For each pixel in strip...
- strip.setPixelColor(i, 0, c, 0); // Set pixel's color (in RAM)
- strip.show(); // Update strip to match
- }
- delay(wait);
- }
- }
- void bluePulse(int wait) {
- for (int c = 0; c < 255; c++) {
- for (int i = 0; i < strip.numPixels(); i++) { // For each pixel in strip...
- strip.setPixelColor(i, 0, 0, c); // Set pixel's color (in RAM)
- strip.show(); // Update strip to match
- }
- delay(wait);
- }
- for (int c = 255; c > 0; c--) {
- for (int i = 0; i < strip.numPixels(); i++) { // For each pixel in strip...
- strip.setPixelColor(i, 0, 0, c); // Set pixel's color (in RAM)
- strip.show(); // Update strip to match
- }
- delay(wait);
- }
- }
- // Rainbow cycle along whole strip. Pass delay time (in ms) between frames.
- void rainbow(int wait) {
- // Hue of first pixel runs 5 complete loops through the color wheel.
- // Color wheel has a range of 65536 but it's OK if we roll over, so
- // just count from 0 to 5*65536. Adding 256 to firstPixelHue each time
- // means we'll make 5*65536/256 = 1280 passes through this outer loop:
- for (long firstPixelHue = 0; firstPixelHue < 5 * 65536; firstPixelHue += 256) {
- for (int i = 0; i < strip.numPixels(); i++) { // For each pixel in strip...
- // Offset pixel hue by an amount to make one full revolution of the
- // color wheel (range of 65536) along the length of the strip
- // (strip.numPixels() steps):
- int pixelHue = firstPixelHue + (i * 65536L / strip.numPixels());
- // strip.ColorHSV() can take 1 or 3 arguments: a hue (0 to 65535) or
- // optionally add saturation and value (brightness) (each 0 to 255).
- // Here we're using just the single-argument hue variant. The result
- // is passed through strip.gamma32() to provide 'truer' colors
- // before assigning to each pixel:
- strip.setPixelColor(i, strip.gamma32(strip.ColorHSV(pixelHue)));
- }
- strip.show(); // Update strip with new contents
- delay(wait); // Pause for a moment
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement