User Tools

Site Tools


projects:neopixel-backpack

This is an old revision of the document!


NeoPixel BackPack


Hardware

  1. 1* Backpack
  2. 1* esp8266
  3. 2* WS2812B IP67 (75 Led long, or the length you need)
  4. wire to connect esp8266 and WS2812B
  5. heat shrink tube
  6. 1* Generic Plastic Case (LxHxB)
  7. 1* Battery Pack
  8. 1* USB cable to connect esp8266 with battery pack

Assembly

IN PROGRESS


Current Arduino Code

#include <Adafruit_NeoPixel.h>
#define PIN 15
#define NUM_LEDS 75
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);

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

void loop() {
  Main(0x50, 0, 0x50, 4, 60, 0);
  Party(0x50, 0x50, 0, 2, 100, 100);
  Interrupt(0x50, 0, 0x50, 25, 100);
  Main1(0x50, 0x50, 0, 4, 60, 0);
  Party(0x50, 0, 0x50, 2, 100, 100);
  Interrupt(0x50, 0x50, 0, 25, 100);
}

void Main(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay){
  CenterToOutside(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
  OutsideToCenter(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
  CenterToOutside(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
  OutsideToCenter(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
}

void CenterToOutside(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay) {
  for(int i =((NUM_LEDS-EyeSize)/2); i>=0; i--) {
    setAll(0,0,0);
    
    setPixel(i, 0x50, 0x50, 0);
    for(int j = 1; j <= EyeSize; j++) {
      setPixel(i+j, red, green, blue);
    }
    setPixel(i+EyeSize+1, 0x50, 0x50, 0);

    setPixel(NUM_LEDS-i, 0x50, 0x50, 0);
    for(int j = 1; j <= EyeSize; j++) {
    setPixel(NUM_LEDS-i-j, red, green, blue);
    }
    setPixel(NUM_LEDS-i-EyeSize-1, 0x50, 0x50, 0);
  
    showStrip();
    delay(SpeedDelay);
  }
  delay(ReturnDelay);
}

void OutsideToCenter(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay) {
  for(int i = 0; i<=((NUM_LEDS-EyeSize)/2); i++) {
    setAll(0,0,0);
   
    setPixel(i, 0x50, 0x50, 0);
    for(int j = 1; j <= EyeSize; j++) {
      setPixel(i+j, red, green, blue);
    }
    setPixel(i+EyeSize+1, 0x50, 0x50, 0);
 
    setPixel(NUM_LEDS-i, 0x50, 0x50, 0);
    for(int j = 1; j <= EyeSize; j++) {
      setPixel(NUM_LEDS-i-j, red, green, blue);
    }
    setPixel(NUM_LEDS-i-EyeSize-1, 0x50, 0x50, 0);
 
    showStrip();
    delay(SpeedDelay);
  }
  delay(ReturnDelay);
}

void Main1(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay){
  CenterToOutside1(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
  OutsideToCenter1(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
  CenterToOutside1(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
  OutsideToCenter1(red, green, blue, EyeSize, SpeedDelay, ReturnDelay);
}

void CenterToOutside1(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay) {
  for(int i =((NUM_LEDS-EyeSize)/2); i>=0; i--) {
    setAll(0,0,0);
  
    setPixel(i, 0x50, 0, 0x50);
    for(int j = 1; j <= EyeSize; j++) {
      setPixel(i+j, red, green, blue);
    }
    setPixel(i+EyeSize+1, 0x50, 0, 0x50);

    setPixel(NUM_LEDS-i, 0x50, 0, 0x50);
    for(int j = 1; j <= EyeSize; j++) {
      setPixel(NUM_LEDS-i-j, red, green, blue);
    }
    setPixel(NUM_LEDS-i-EyeSize-1, 0x50, 0, 0x50);
  
    showStrip();
    delay(SpeedDelay);
  }
  delay(ReturnDelay);
}

void OutsideToCenter1(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay) {
  for(int i = 0; i<=((NUM_LEDS-EyeSize)/2); i++) {
    setAll(0,0,0);
 
    setPixel(i, 0x50, 0, 0x50);
    for(int j = 1; j <= EyeSize; j++) {
      setPixel(i+j, red, green, blue);
    }
    setPixel(i+EyeSize+1, 0x50, 0, 0x50);
 
    setPixel(NUM_LEDS-i, 0x50, 0, 0x50);
    for(int j = 1; j <= EyeSize; j++) {
      setPixel(NUM_LEDS-i-j, red, green, blue);
    }
    setPixel(NUM_LEDS-i-EyeSize-1, 0x50, 0, 0x50);
 
    showStrip();
    delay(SpeedDelay);
  }
  delay(ReturnDelay);
}

void Interrupt(byte red, byte green, byte blue, int Count, int SpeedDelay) {
  setAll(0,0,0);
  for (int i=0; i<Count; i++) {
    setPixel(random(NUM_LEDS),red,green,blue);
    showStrip();
    delay(SpeedDelay);
  }
  delay(SpeedDelay);
}

void Party(byte red, byte green, byte blue, int EyeSize, int SpeedDelay, int ReturnDelay){
  for(int i =((NUM_LEDS-EyeSize)/2); i>=0; i--) {

    for(int j = 1; j <= EyeSize; j++) {
      setPixel(i+j, red, green, blue);
    }
    setPixel(i+EyeSize+1, red, blue, green);

    for(int j = 1; j <= EyeSize; j++) {
      setPixel(NUM_LEDS-i-j, red, green, blue);
    }
    setPixel(NUM_LEDS-i-EyeSize-1, red, blue, green);
  
    showStrip();
    delay(SpeedDelay);
  }
  delay(ReturnDelay);
}

void showStrip() {
  strip.show();
}

void setPixel(int Pixel, byte red, byte green, byte blue) {
  strip.setPixelColor(Pixel, strip.Color(red, green, blue));
}

void setAll(byte red, byte green, byte blue) {
  for(int i = 0; i < NUM_LEDS; i++ ) {
    setPixel(i, red, green, blue);
  }
  showStrip();
}

—-

Result

Only one LED stripe on the backside.
Plan is do have two, starting at the below middle and over the shoulder to the front.

Battery and esp8266 are placed in the bottom next to the rain cover.

projects/neopixel-backpack.1575383772.txt.gz · Last modified: 2019-12-03 14:36 by seven