Alice Lau
Published © GPL3+

Recycle Briefcase to Treasure Pocket

The briefcase that has been thrown in the corner for a long time is covered with dust, and there are traces of dogs stepping on it...

BeginnerShowcase (no instructions)2 hours453
Recycle Briefcase to Treasure Pocket

Things used in this project

Hardware components

Seeeduino V4.2
Seeed Studio Seeeduino V4.2
×1
Base Shield V2
Seeed Studio Base Shield V2
×1
Seeed Studio grove - magnetic switch
×1
Seeed Studio Flexible LED Strip - RGB
×1

Story

Read more

Code

Briefcase LED Strips

Arduino
// This is a demonstration on how to use an input device to trigger changes on your neo pixels.
// You should wire a momentary push button to connect from ground to a digital IO pin.  When you
// press the button it will change to a new pixel animation.  Note that you need to press the
// button once to start the first animation!

#include "Adafruit_NeoPixel.h"

#define BUTTON_PIN   2    // Digital IO pin connected to the button.  This will be
                          // driven with a pull-up resistor so the switch should
                          // pull the pin to ground momentarily.  On a high -> low
                          // transition the button press logic will execute.

#define PIXEL_PIN    6    // Digital IO pin connected to the NeoPixels.

#define PIXEL_COUNT 132

// Parameter 1 = number of pixels in strip,  neopixel stick has 8
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_RGB     Pixels are wired for RGB bitstream
//   NEO_GRB     Pixels are wired for GRB bitstream, correct for neopixel stick
//   NEO_KHZ400  400 KHz bitstream (e.g. FLORA pixels)
//   NEO_KHZ800  800 KHz bitstream (e.g. High Density LED strip), correct for neopixel stick
Adafruit_NeoPixel strip = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, NEO_GRB + NEO_KHZ800);

bool oldState = HIGH;
int showType = 0;
int K = 0;
bool dir_flag=0;

void setup() {
  pinMode(BUTTON_PIN, INPUT);
  strip.setBrightness(255);
  
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
}

void loop() {
  bool newState = digitalRead(BUTTON_PIN);
  startShow(newState);
}

void startShow(int i) {
  switch(i){
    case 0: 
    for(int i=0; i< strip.numPixels(); i++) {
      strip.setPixelColor(i, Wheel(((i * 256 / strip.numPixels())) & 255,1));
      delay(2);
      strip.show();
    }
    break;
    case 1: 
    if(K==0)
    {
    	dir_flag = 1;
    }else if(K>=255)
    {
    	dir_flag = 0;
    }
    if (dir_flag==1)
    {
    	K=K+1;
    }else
    {
    	K=K-1;
      if(K<0) K=0;
    }
    for (int q = 0; q < 3; q++) {
      for (int i = 0; i < strip.numPixels(); i = i + 3) {
        strip.setPixelColor(i + q, Wheel( (i + K) % 255,1)); //turn every third pixel on
      }
      strip.show();
      delay(30);
      for (int i = 0; i < strip.numPixels(); i = i + 3) {
        strip.setPixelColor(i + q, 0);      //turn every third pixel off
      }
    }
    break;
  }
}

// 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, float b) {
  WheelPos = 255 - WheelPos;
  if(WheelPos < 85) {
    return strip.Color((255 - WheelPos * 3)*b, 0, WheelPos * 3*b);
  }
  if(WheelPos < 170) {
    WheelPos -= 85;
    return strip.Color(0, WheelPos * 3*b, (255 - WheelPos * 3)*b);
  }
  WheelPos -= 170;
  return strip.Color(WheelPos * 3 *b, (255 - WheelPos * 3)*b, 0);
}

Credits

Alice Lau

Alice Lau

2 projects • 2 followers
Seeed Studio Operation.

Comments