#4898488
Please drop any info about the spirit Halloween proton pack modifications here! I have painted mine flat black, attached gb2 ribbon cable, weathered pack, attached to Alice frame. Can't figure out how to post pics here. :/ does anyone know if someone is already making what I am wanting?
#4898490
This post may contain an affiliate link that helps support GBFans.com when you make a purchase at no additional cost to you.

My spirit pack probably won't be here until close to halloween so my plan has switched to a minimal lighting upgrade. I'm not going to touch the wand or the sounds. I plan to stick an arduino in it that is programmed to do the normal idle powercell/cyclotron patterns. To me it needs to have the idle sequence at least.

The setup basically consists of 1 arduino nano to control the lights, 1 power converter for the battery, 10 - 12 neopixel leds for the powercell and probably 2 neopixels per cyclotron. Then just power it separately from the spirit pack and add a switch somewhere to turn it on and off. I'll probably make a 4 AAA powerpack for it and use the converter to adjust down to 5v

https://www.amazon.com/gp/product/B0713XK923 - arduinos
https://www.amazon.com/gp/product/B01AG8X1X8 - individual neopixels
https://www.amazon.com/gp/product/B01MQGMOKI - power converter

so for around $30 bucks I get a nice power cycle in the spirit pack and keep the firing stuff. I'll decide if I want to keep the pack firing animations or move them maybe. For next halloween I plan to update the sounds and replace the small wand with an 83% 3d printed version.

Code for the arduino is easy. It's just a subset of my current full pack code. I've already tested it and works fine.

It is only the idle sequence animation from this video of the full pack code

Code: Select all
#include <Adafruit_NeoPixel.h>

#define NEO_POWER 2 // Arduino pin for cyclotron and powercell
// my full pack uses 44 neopixels for the powercell (16) and cyclotron (7 each)
// adjust for the number of neopixels used. Probably 20 for the spirit pack
Adafruit_NeoPixel powerStick = Adafruit_NeoPixel(44, NEO_POWER, NEO_GRB + NEO_KHZ800); 

void setup() {
  // configure powercell/cyclotron
  powerStick.begin();
  powerStick.setBrightness(80);
  powerStick.show(); // Initialize all pixels to 'off'
}

int pwr_interval = 60;       // interval at which to cycle lights for the powercell.
int cyc_interval = 1000;      // interval at which to cycle lights for the cyclotron.

void loop() {
  // get the current time
  int currentMillis = millis();

  powerSequenceOne(currentMillis, pwr_interval, cyc_interval);
}

void setCyclotronLightState(int startLed, int endLed, int state ){
  switch ( state ) {
    case 0:
      for(int i=startLed; i <= endLed; i++) { // red
        powerStick.setPixelColor(i, powerStick.Color(150, 0, 0));
      }
      break;
    case 1:
      for(int i=startLed; i <= endLed; i++) { // orange
        powerStick.setPixelColor(i, powerStick.Color(255, 106, 0));
      }
      break;
    case 2:
      for(int i=startLed; i <= endLed; i++) { // off
        powerStick.setPixelColor(i, 0);
      }
      break;
  }
}

/*************** Powercell/Cyclotron Animations *********************/
// These are the start and end locations for each cyclotron led in the chain. It is assumed that the powercell is the first
// 0-15 neopixels
int c1Start = 16;
int c1End = 22;
int c2Start = 23;
int c2End = 29;
int c3Start = 30;
int c3End = 36;
int c4Start = 37;
int c4End = 44;

unsigned long prevPwrMillis = 0;        // last time we changed a powercell light in the idle sequence
unsigned long prevCycMillis = 0;        // last time we changed a cyclotron light in the idle sequence
int powerSeqTotal = 15;       // total number of led's for powercell 0 based
int powerSeqNum = 0;          // current running powercell sequence led

int cycOrder = 0;

// normal animation on the bar graph
void powerSequenceOne(int currentMillis, int anispeed, int cycspeed) {
  bool doUpdate = false;
  
  if (currentMillis - prevCycMillis > cycspeed) {
    prevCycMillis = currentMillis;
    
    // START CYCLOTRON
    switch ( cycOrder ) {
      case 0:
        setCyclotronLightState(c1Start, c1End, 0);
        setCyclotronLightState(c2Start, c2End, 2);
        setCyclotronLightState(c3Start, c3End, 2);
        setCyclotronLightState(c4Start, c4End, 2);
        cycOrder = 1;
        break;
      case 1:
        setCyclotronLightState(c1Start, c1End, 2);
        setCyclotronLightState(c2Start, c2End, 0);
        setCyclotronLightState(c3Start, c3End, 2);
        setCyclotronLightState(c4Start, c4End, 2);
        cycOrder = 2;
        break;
      case 2:
        setCyclotronLightState(c1Start, c1End, 2);
        setCyclotronLightState(c2Start, c2End, 2);
        setCyclotronLightState(c3Start, c3End, 0);
        setCyclotronLightState(c4Start, c4End, 2);
        cycOrder = 3;
        break;
      case 3:
        setCyclotronLightState(c1Start, c1End, 2);
        setCyclotronLightState(c2Start, c2End, 2);
        setCyclotronLightState(c3Start, c3End, 2);
        setCyclotronLightState(c4Start, c4End, 0);
        cycOrder = 0;
        break;
    }

    doUpdate = true;
    // END CYCLOTRON
  }
  
  if (currentMillis - prevPwrMillis > anispeed) {
    // save the last time you blinked the LED
    prevPwrMillis = currentMillis;

    // START POWERCELL
    for ( int i = 0; i <= powerSeqTotal; i++) {
      if ( i <= powerSeqNum ) {
        powerStick.setPixelColor(i, powerStick.Color(0, 0, 150));
      } else {
        powerStick.setPixelColor(i, 0);
      }
    }
    
    if ( powerSeqNum <= powerSeqTotal) {
      powerSeqNum++;
    } else {
      powerSeqNum = 0;
    }

    doUpdate = true;
    // END POWERCELL
  }

  if( doUpdate == true ){
    powerStick.show();
  }
}

    Also probably different release dates. USA[…]

    I like the camo tint. This is the one tint I would[…]

    Ghostbusters Day 2024

    Even if Frozen Empire somehow made a billion dolla[…]

    New details https://i.imgur.com/0cWzlPm.jpeg […]