#4894028
I have the tub lengths updated to the sizes I'll be using on the prop and I've been designing the connection between the front pvc tube and the cut down plastic test tube. I've also sized the front widget on the gun and sized it for the tube so everything should press fit together. There is a space in between the front pvc tube and the clear test tube for the neopixel jewel to be mounted for the lights. I'm printing out those parts now to test fit. If all works well I'll update thingiverse with the new files soon.

Image
xoff00 liked this
#4894114
I've got the models worked out and I've been playing with the electronics for the last few days. The neopixels came in as well as the sx1509. I'm loving both of these products. The neopixel jewel fits perfectly into the clear test tube I cut and I think looks really awesome when fired. I bought a few of the sticks but I'm having a little trouble getting them soldered together back to back. I only need 2 together for the power cell but it has proven to be a challenge. I need more helping hands for this task.

The sx1509 works really well. Fired right up and I was able to program the bar graph in less than an hour. Really happy with that piece of hardware. I'm nearing the point where I'll be splitting things out into the 2 main boards but it looks like it's all going to work well.

Here's a quick video of the current progress

#4894115
Outstanding! I'm very glad the SX1509 and Neopixels have worked out for you!

For my powercell I'm using a superdense 144 pixels/m strip...I get about 16 pixels in the window. TBH, I'd be happy to send you the proper amount - I bought a meter and needed a few inches. ;) You'd need to do some "surgery" to solder the end (likely sacrificing an LED) but the offer is there.

Two questions:

1. What's the battery pack you're using? I'm still debating mine.
2. For the bargraph, are you just randomly displaying patterns or basing them on something?
#4894121
Yeah thanks for the recommendations. The Sx1509 is so much easier to work with. The shift regulator was doable but my brain does not work in binary :) I might take you up on your offer. I bought 2 of the sticks with the intent to solder them together but so far I have been unsuccessful in bridging the gap. It really needs something strong between the boards and I just don't have enough hands to do it.

I'm using an old 1800mAh 11.1v lipo I had laying around from the rc airplane/heli days. I've got a ton of 11.1v lips in the 1500-2500mAh range. I just grabbed one that had a good charge on it still :) I'll probably be making a battery mount for one of the 2500mAh packs in the main shell

I've been watching the movie and looking at what others have done when it comes to the bar graph. There are very few scenes where you get to see the controls but I thought I saw something like the firing animation in one of the scenes. I've also seen several other packs on youtube that have similar animations and I thought it looked cool so decided I'd go with something like that. A little artistic license.
xoff00 liked this
#4894647
Had a bit of a setback. My printer died after 700 hours of printing in 6 months. I upgraded to the monoprice maker select. So far it seems to be a nice printer but the quality is iffy. Y axis bearings are shot out of the gate but from other reviews I expected that. New bearings on the way.

I've started splitting the code between the two Arduino and preparing for final assembly of the wand. I updated the main body on thingiverse with adjustments for the face switches and bar graph. They should sit much more flush now. Can't wait to get it all assembled and see it working. Then I can move on to the pack
#4894668
Ah man, sorry to hear that!

Been struggling with a bad back myself, haven't got a lot done, except playing with the code for the bargraph via the SX1509.

I had a couple of "Ah, CRAP!" setbacks...

I realized I couldn't use the resistor networks I wanted to, because in sink mode the resistor is between the SX1509 and the pin, not to ground, but I can use the resistors as jumper wires effectively, so that'll help keep things clean.

Secondly, I realized I can't use Neopixels attached to the SX1509 - DUH! But luckily I have an extra wire coming from the Pack and I can chain all the Neopixels I'm using for individual LEDs into an ad-hoc array.
#4894672
I've got my bargraph all figured out and soldered. I'm looking for a good 16 wire ribbon cable to go from the cpu board to the bargraph board. I've got the resistor networks on the negative lead but in my setup it could go either side easily. I'll take a picture of it when I get home. Using 2 of the nanos gives me tons of inputs left over using the neopixels and one sx1509. I found a few cheaper 7 led jewels so will be using those for the cyclotron. Makes the wiring so much easier using all neopixels on the pack.
xoff00 liked this
#4894679
Looking forward to the picture!

Love the look of the neopixel jewels for the cyclotron lights, got lots of likes when I showed the video to the local Ghostbusters on Ghostbusters Day.
#4894680
Here is the prototype board. It works really well in this configuration
Image

I took the bargraph section and soldered it directly to a solderable breadboard that I cut down to size

Image

Image

I was tempted to have a board fabricated by oshpark as it would only have been 2 bucks but I had these lying around so just went ahead and built it like this. The ground is the first pad and then the ribbon cable goes on the non resister side. I'm going to be doing my best to reduce the number of free wires on this build to keep things clean. The arduino and the sx1509 will be soldered to another breadboard.

My new printer (monoprice maker select v2.1) is in and working. Prints really nicely too out of the box. Quite pleased. For $299 I was expecting cheaper. I will need to upgrade some bearings and do a few other mods but overall it's quite nice and has a large build area.

Image

Image
#4894686
Looks awesome! I've heard good things about that printer, would be my first choice if I was buying one today.

I haven't tried the bargraph using sourcing current from the SX1509 (where I could use the resistor networks) as you can only do 8ma per pin that way, and the SX1509 docs suggest doing sinking current, where you can do 15ma...I'm not sure of the brightness difference, I should probably check that out. I don't think it'll be enough to matter, and the individual resistors I'm using as wires from the SX1509 to the breakout of the ribbon cable. I'm attaching the SX1509 breakouts "above" my solderable breadboard (like a daughterboard) as I have lots of space available in that dimension. I'm using an Adafruit 1/2 permaproto, which conveniently has 2 power rails, one I'm using for 3v3 (for the SX1509 and bargraphs) and one for 5v (for the Neopixels.)

I'm doing only Arduino and mp3 shield those are going into the Pack, and the only things in the Wand will be the bargraph (using 3x5mm LEDs on a ribbon cable) and two SX1509s (one for the bargraph, one for switches and non-neopixel LEDs) all on a single breadboard. Connecting from the Pack to the Wand is an 8 wire ethernet cable. Of those 8, I need 6 (3v3, 3v3 GND, 5v, 5v GND, SCL, SCA) so will have 2 available for Neopixel arrays.

But you have me rethinking everything! I could likely ditch the SX1509 entirely and just use a Nano in the Wand, I'd have just enough pins directly if I used Neopixels...Hmm...I've never done projects with 2 Arduinos communicating...
#4894693
I went with 330ohm resister networks for my setup

https://www.digikey.com/product-detail/ ... ND/3787988
https://www.digikey.com/product-detail/ ... ND/1088983

A great suggestion btw. I had totally forgotten about them :) I'm reading 3 - 4ma when the light is lit per pin and it's just the right brightness for me. I don't want this bargraph to be so bright you can't look at it but bright enough you can see it. The video shows it pretty well. I was using 220's but saw a good current drop and not significant brightness drop with these bar graphs I decided to go with the 330. That's what I was using in the video. Only down side I see with these pre made bar graphs is the 5 led graph has a different width between the led's than the 10 led one. I've found I have to put the 5 at the top or the distance is visually disturbing to me. When the larger gap is at the top it's not a big deal. Kinda interesting

In my day job I'm constantly writing distributed software so when my goals are small and dispersed I immediately think of separating things out. Put with that the cost of the nanos being 3 for $11 and it just makes sense :) I'm going to have a pretty simple protocol between them and the fact that you can string as many things on the i2c buss is a big plus. I've written all the code to do the sounds and lights so now I'm separating them out and will have them communicating soon. Fun challenge and a simpler solution in my mind than trying to do it all with one.

I will be using only one of the sx1509's in my setup. The pack is basically 2 pins for neopixels. One for the bargraph and one for the cyclotron. And then the hookup for the sound board. All being powered off one of the buck converters. I may be able to get away with 1 buck converter for the whole setup. I don't think I'm getting anywhere close to 3 amps constant these things are rated for. We'll see when I test it. I have a ton of those so can separate out the wand power if I need to.

There is for sure a learning curve between the Davinci mini and the Monoprice. I'm trying to print my first part from Cura right now and the control you have is amazing but I've also already had 2 failed prints due to settings. All with curling of the ends as I've never used a heated bed before and the part I'm printing is already prone to curling. It's certainly a cheap printer as the bearings on the y axis are shot out of the gate. It works but it feels like there is sand in there. For $7 you can fix it with new bearings but it is something to consider. I'm having amazon send me another one to see if that one is better before I go off and buy 3d party bearing.
xoff00 liked this
#4894696
I'm printing out the gun track which is a difficult part to print due to the narrow and long size of it. As I mentioned in the previous post I've had a few failures. I could not print it in one piece on the davinci mini but I can on the Maker Select. I had previously split the part so it could be printed and glued it together. That worked ok but the new part is coming out great on the new printer.

Image

not a warp in sight on this one and I even had a little on the half prints on the davinci mini.

Image
xoff00 liked this
#4894697
Looking good!

When I can stand to sit in my lab chair, I'll see what amperage I'm drawing, I suspect it's similar to what you found, and it really doesn't matter sink or source. I think I mentioned, I printed an awesome little bevel for bargraph, I just need to reprint with some different angles at the top and bottom, and I'll be set there. Having the printer makes custom little parts just so easy!

I'm "satisfied" with the bargraph animations I've done, but need to convert them to milis versus delays, and I'd like them to be smoother, which I'll work on after.

I'm printing PLA, but have a heated bed (and XYZ size increase) upgrade in a box. It's a little tricky to install, so I have a friend who is going to help me if we ever aren't broken at the same time...
#4894701
Yeah I know what you mean. I've got a bad back as well and just had an injection on Tuesday dealing with a herniated disk. Chiropractor every week keeps me going but man is it expensive.

In my arduino code I have banned delays. I only add them if it increases stability. Sometimes it good to pause for a millisecond. Other than that though I use the clock timer. Here's my bar graph code and main switch code. As I said I've been separating things out a bit preparing to get the 2 arduinos talking to each other. My bargraph has 2 animations right now. The on but idle sweep and the firing animation. I also want to add a firing done animation and a more interesting power on animation. Code is a mess as it's in transition but should give you an idea what I'm doing
Code: Select all
#include <Wire.h> // Include the I2C library (required)
#include <SparkFunSX1509.h> // Include SX1509 library
#include <Adafruit_NeoPixel.h>

// for led triggers
#define HIGH 0x1
#define LOW  0x0

// neopixel pins
#define NEO_NOSE 9
Adafruit_NeoPixel noseJewel = Adafruit_NeoPixel(7, NEO_NOSE, NEO_GRB + NEO_KHZ800);

bool powerBooted = false; // has the pack booted up

// inputs
const int THEME_SWITCH = 5;
const int STARTUP_SWITCH = 6;
const int SAFETY_SWITCH = 7;
const int FIRE_BUTTON = 8;

// switch states
bool theme = false;
bool startup = false;
bool safety = false;
bool fire = false;
bool warning = false;

// dialog trigger times/states
unsigned long startDialogMillis;
const int numDialog = 3;
int currentDialog = 1;
const int dialogWaitTime = 5000;
const int warnWaitTime = 10000;

// SX1509 I2C address (set by ADDR1 and ADDR0 (00 by default):
const byte SX1509_ADDRESS = 0x3E;  // SX1509 I2C address
SX1509 io; // Create an SX1509 object to be used throughout

int seq_1_current = 0;  // current led in sequence 1
const int num_led = 15; // total number of leds in bar graph

// SX1509 pin definitions:
const byte SX1509_BAR_01 = 0; 
const byte SX1509_BAR_02 = 1; 
const byte SX1509_BAR_03 = 2; 
const byte SX1509_BAR_04 = 3; 
const byte SX1509_BAR_05 = 4; 
const byte SX1509_BAR_06 = 5; 
const byte SX1509_BAR_07 = 6; 
const byte SX1509_BAR_08 = 7; 
const byte SX1509_BAR_09 = 8; 
const byte SX1509_BAR_10 = 9; 
const byte SX1509_BAR_11 = 10; 
const byte SX1509_BAR_12 = 11; 
const byte SX1509_BAR_13 = 12; 
const byte SX1509_BAR_14 = 13; 
const byte SX1509_BAR_15 = 14; 

void setup() {
  // Call io.begin(<address>) to initialize the SX1509. If it
  // successfully communicates, it'll return 1.
  if (!io.begin(SX1509_ADDRESS)){
    while (1) ; // If we fail to communicate, loop forever for now but lets warn the user somehow
  }

  noseJewel.begin();
  noseJewel.show(); // Initialize all pixels to 'off'
  
  pinMode(THEME_SWITCH, INPUT);
  pinMode(STARTUP_SWITCH, INPUT);
  pinMode(SAFETY_SWITCH, INPUT);
  pinMode(FIRE_BUTTON, INPUT);

  io.pinMode(SX1509_BAR_01, OUTPUT);
  io.pinMode(SX1509_BAR_02, OUTPUT);
  io.pinMode(SX1509_BAR_03, OUTPUT);
  io.pinMode(SX1509_BAR_04, OUTPUT);
  io.pinMode(SX1509_BAR_05, OUTPUT);
  io.pinMode(SX1509_BAR_06, OUTPUT);
  io.pinMode(SX1509_BAR_07, OUTPUT);
  io.pinMode(SX1509_BAR_08, OUTPUT);
  io.pinMode(SX1509_BAR_09, OUTPUT);
  io.pinMode(SX1509_BAR_10, OUTPUT);
  io.pinMode(SX1509_BAR_11, OUTPUT);
  io.pinMode(SX1509_BAR_12, OUTPUT);
  io.pinMode(SX1509_BAR_13, OUTPUT);
  io.pinMode(SX1509_BAR_14, OUTPUT);
  io.pinMode(SX1509_BAR_15, OUTPUT);

  shutdown_leds();
  
  digitalWrite(THEME_SWITCH, HIGH);
  digitalWrite(STARTUP_SWITCH, HIGH);
  digitalWrite(SAFETY_SWITCH, HIGH);
  digitalWrite(FIRE_BUTTON, HIGH);
}

bool isFiring = false;

void loop() {
  int currentMillis = millis();
  int theme_switch = digitalRead(THEME_SWITCH);
  //int playing = digitalRead(ACT);
  int playing = 0;
  
  if (theme_switch == 1) {
    if (theme == false) {
      //playTrack(themeTrack); // send message to other board to play track
      theme = true;
    }
  } else {
    theme = false;
  }

  int startup_switch = digitalRead(STARTUP_SWITCH);
  int safety_switch = digitalRead(SAFETY_SWITCH);
  int fire_button = digitalRead(FIRE_BUTTON);
  if (startup_switch == 1) {
    if (playing == 1) {
      // playTrack(idleTrack); // send message to other board to play track
    }

    /*
    if( powerBooted == true ){
      powerSequenceOne(currentMillis);
    }else{
      powerSequenceBoot(currentMillis);
    }
    */
    
    if (startup == false) {
      startup = true;
      // playTrack(startupTrack); // send message to other board to play track

      if (safety_switch == 1 && safety == false) {
        safety = true;
      }
    }

    if( safety_switch == 1 && fire_button == 0){
      if( isFiring == false ){
        shutdown_leds();
        isFiring = true;
      }
      barGraphSequenceTwo(currentMillis);
    }else{
      if( isFiring == true ){
        shutdown_leds();
        isFiring = false;
      }
      barGraphSequenceOne(currentMillis);
    }

    // fire loop 
    if (startup == true && safety_switch == 1) {
      if (safety == false) {
        safety = true;
        // playTrack(clickTrack); // send message to other board to play track
      }

      if (fire_button == 0) {
        fireStrobe();
        if (fire == false) {
          fire = true;
          //startDialogMillis = millis();
          //playTrack(blastTrack); // send message to other board to play track
        } else {
          if (playing == 1) {
            // playTrack(blastTrack); // send message to other board to play track
          }
        }
      } else {
        if (fire == true) {
          clearFireStrobe();
          fire = false;
          // see if we've been firing long enough to get the dialog
          long diff = millis() - startDialogMillis;
          if( diff > warnWaitTime){
            // playTrack(warnTrack); // send message to other board to play track
          }else if( diff > dialogWaitTime){
            switch(currentDialog){
              case(1):
                // playTrack(choreTrack); // send message to other board to play track
                break;
              case(2):
                // playTrack(toolsTrack); // send message to other board to play track
                break;
              case(3):
                // playTrack(texTrack); // send message to other board to play track
                break;
            }
            if( currentDialog >= numDialog ){
              currentDialog = 1;
            }else{
              currentDialog++;
            }
          }else{
            // playTrack(endTrack); // send message to other board to play track
          }
        }
      }
    } else {
      if (safety == true) {
        safety = false;
        // playTrack(clickTrack); // send message to other board to play track
      }
    }
  } else {
    // clearPowerStrip();
    shutdown_leds();
    
    if (startup == true) {
      startup = false;
      safety = false;
      fire = false;

      // playTrack(shutdownTrack); // send message to other board to play track
    }
  }
  delay(1);
}

unsigned long prevFireMillis = 0; 
const long fire_interval = 2;     // interval at which to cycle lights (milliseconds).
int fireSeqNum = 0;
int fireSeqTotal = 3;

void clearFireStrobe(){
  for( int i=0; i< 7; i++) {
     noseJewel.setPixelColor(i, 0);
  }
  noseJewel.show();
  fireSeqNum = 0;
}

void fireStrobe(){
  switch( fireSeqNum ){
    case 0:
      noseJewel.setPixelColor(0, noseJewel.Color(255,255,255));
      noseJewel.setPixelColor(1, noseJewel.Color(255,255,255));
      noseJewel.setPixelColor(2, 0);
      noseJewel.setPixelColor(3, noseJewel.Color(255,255,255));
      noseJewel.setPixelColor(4, 0);
      noseJewel.setPixelColor(5, noseJewel.Color(255,255,255));
      noseJewel.setPixelColor(6, 0);
      break;
    case 1:
      noseJewel.setPixelColor(0, noseJewel.Color(0,0,255));
      noseJewel.setPixelColor(1, noseJewel.Color(255,0,0));
      noseJewel.setPixelColor(2, noseJewel.Color(255,255,255));
      noseJewel.setPixelColor(3, noseJewel.Color(255,0,0));
      noseJewel.setPixelColor(4, noseJewel.Color(255,255,255));
      noseJewel.setPixelColor(5, noseJewel.Color(255,0,0));
      noseJewel.setPixelColor(6, noseJewel.Color(255,255,255));
      break;
    case 2:
      noseJewel.setPixelColor(0, noseJewel.Color(255,0,0));
      noseJewel.setPixelColor(1, 0);
      noseJewel.setPixelColor(2, noseJewel.Color(0,0,255));
      noseJewel.setPixelColor(3, 0);
      noseJewel.setPixelColor(4, noseJewel.Color(0,0,255));
      noseJewel.setPixelColor(5, 0);
      noseJewel.setPixelColor(6, noseJewel.Color(0,0,255));
      break;
    case 3:
      noseJewel.setPixelColor(0, noseJewel.Color(0,0,255));
      noseJewel.setPixelColor(1, noseJewel.Color(255,0,0));
      noseJewel.setPixelColor(2, noseJewel.Color(255,255,255));
      noseJewel.setPixelColor(3, noseJewel.Color(255,0,0));
      noseJewel.setPixelColor(4, noseJewel.Color(255,255,255));
      noseJewel.setPixelColor(5, noseJewel.Color(255,0,0));
      noseJewel.setPixelColor(6, noseJewel.Color(255,255,255));
      break;
  }

  noseJewel.show();

  fireSeqNum++;
  if( fireSeqNum > fireSeqTotal ){
    fireSeqNum = 0;
  }
}

unsigned long prevBarMillis_on = 0;   // bargraph on tracker
const long pwrcl_interval = 60;     // interval at which to cycle lights (milliseconds).
bool reverseSequenceOne = false;
void barGraphSequenceOne(int currentMillis){
  // normal sync animation on the bar graph
  if (currentMillis - prevBarMillis_on > pwrcl_interval) {
    // save the last time you blinked the LED
    prevBarMillis_on = currentMillis;
    
    if( reverseSequenceOne == false ){
        switch_led(seq_1_current, HIGH);
        seq_1_current++;
        if( seq_1_current > num_led ) { 
          reverseSequenceOne = true;
        }
    }else{
        switch_led(seq_1_current, LOW);
        seq_1_current--;
        if( seq_1_current < 0  ) { 
          reverseSequenceOne = false;
        }
    }
  }
}

unsigned long prevBarMillis_fire = 0; // bargraph firing tracker
const long firing_interval = 40;    // interval at which to cycle firing lights (milliseconds).
int fireSequenceNum = 1;
void barGraphSequenceTwo(int currentMillis){
  // normal sync animation on the bar graph
  if (currentMillis - prevBarMillis_fire > firing_interval) {
    // save the last time you blinked the LED
    prevBarMillis_fire = currentMillis;

    switch (fireSequenceNum) {
      case 1:
        switch_led(2, LOW);
        switch_led(14, LOW);
        switch_led(1, HIGH);
        switch_led(15, HIGH);
        fireSequenceNum++;
        break;
      case 2:
        switch_led(1, LOW);
        switch_led(15, LOW);
        switch_led(2, HIGH);
        switch_led(14, HIGH);
        fireSequenceNum++;
        break;
      case 3:
        switch_led(2, LOW);
        switch_led(14, LOW);
        switch_led(3, HIGH);
        switch_led(13, HIGH);
        fireSequenceNum++;
        break;
      case 4:
        switch_led(3, LOW);
        switch_led(13, LOW);
        switch_led(4, HIGH);
        switch_led(12, HIGH);
        fireSequenceNum++;
        break;
      case 5:
        switch_led(4, LOW);
        switch_led(12, LOW);
        switch_led(5, HIGH);
        switch_led(11, HIGH);
        fireSequenceNum++;
        break;
      case 6:
        switch_led(5, LOW);
        switch_led(11, LOW);
        switch_led(6, HIGH);
        switch_led(10, HIGH);
        fireSequenceNum++;
        break;
      case 7:
        switch_led(6, LOW);
        switch_led(10, LOW);
        switch_led(7, HIGH);
        switch_led(9, HIGH);
        fireSequenceNum++;
        break;
      case 8:
        switch_led(7, LOW);
        switch_led(9, LOW);
        switch_led(6, HIGH);
        switch_led(10, HIGH);
        fireSequenceNum++;
        break;
      case 9:
        switch_led(6, LOW);
        switch_led(10, LOW);
        switch_led(5, HIGH);
        switch_led(11, HIGH);
        fireSequenceNum++;
        break;
      case 10:
        switch_led(5, LOW);
        switch_led(11, LOW);
        switch_led(4, HIGH);
        switch_led(12, HIGH);
        fireSequenceNum++;
        break;
      case 11:
        switch_led(4, LOW);
        switch_led(12, LOW);
        switch_led(3, HIGH);
        switch_led(13, HIGH);
        fireSequenceNum++;
        break;
      case 12:
        switch_led(3, LOW);
        switch_led(13, LOW);
        switch_led(2, HIGH);
        switch_led(14, HIGH);
        fireSequenceNum = 1;
        break;
    }
  }
}

void shutdown_leds(){
  // reset the sequence
  seq_1_current = 1; 
  fireSequenceNum = 1;
  
  // shut all led's off
  switch_led(1, LOW); 
  switch_led(2, LOW); 
  switch_led(3, LOW); 
  switch_led(4, LOW); 
  switch_led(5, LOW); 
  switch_led(6, LOW); 
  switch_led(7, LOW); 
  switch_led(8, LOW); 
  switch_led(9, LOW); 
  switch_led(10, LOW); 
  switch_led(11, LOW); 
  switch_led(12, LOW); 
  switch_led(13, LOW); 
  switch_led(14, LOW);
  switch_led(15, LOW);
}

void switch_led(int num, int state){
  switch (num) {
    case 1:
      io.digitalWrite(SX1509_BAR_01, state); 
      break;
    case 2:
      io.digitalWrite(SX1509_BAR_02, state); 
      break;
    case 3:
      io.digitalWrite(SX1509_BAR_03, state); 
      break;
    case 4:
      io.digitalWrite(SX1509_BAR_04, state); 
      break;
    case 5:
      io.digitalWrite(SX1509_BAR_05, state); 
      break;
    case 6:
      io.digitalWrite(SX1509_BAR_06, state); 
      break;
    case 7:
      io.digitalWrite(SX1509_BAR_07, state); 
      break;
    case 8:
      io.digitalWrite(SX1509_BAR_08, state); 
      break;
    case 9:
      io.digitalWrite(SX1509_BAR_09, state); 
      break;
    case 10:
      io.digitalWrite(SX1509_BAR_10, state); 
      break;
    case 11:
      io.digitalWrite(SX1509_BAR_11, state); 
      break;  
    case 12:
      io.digitalWrite(SX1509_BAR_12, state); 
      break;  
    case 13:
      io.digitalWrite(SX1509_BAR_13, state); 
      break;
    case 14:
      io.digitalWrite(SX1509_BAR_14, state); 
      break;
    case 15:
      io.digitalWrite(SX1509_BAR_15, state); 
      break;
    }
  }
xoff00 liked this
#4894711
Checking out this new printer. It's clear the bad bearings do some weird stuff to the print. You can see waves in it very clearly. The yellow print was done on the davinci mini and the black on on the monoprice. The replacement monoprice printer showed up today and so far it looks like it doesn't have the same bearing issue. We'll see when I get it setup.

Having good slicing software does make a difference with how hard it is to clean up the prints. This piece needs quite a lot of support and even with the default support settings it was a lot easier to clean up than the Davinci slicer software. Now to see if the new printer can print some straight lines...

Image

This is also my 4th version of the main box that has cutouts to bring the face switches and bar graph closer to the surface. I also cut back the lip on the front of the bargraph. I think it's looking really good. The black piece is usable but would require a lot of finishing work to clean up the waves. The baseplate I printed yesterday came out really good though so the bearings must be getting worse.

Image

Image
#4894738
Pro-tip on the MP printer. If you start using the heated bed get a mosfet. If you dont you will have major issues within 6 months. I had to fully replace my board with a RAMPS board because it fried itself. Honestly all of the upgrades at the site below are worth doing. Also tighten your belts, just doing that improved my prints quite a bit.

http://3dprinterwiki.info/wiki/wanhao-d ... fet-board/

Also it looks like you are using the Clippard I redesigned.
https://www.thingiverse.com/thing:2286284
xoff00 liked this
#4894748
Thanks for the suggestion. I had read about those mosfet boards. Right now I'm just fighting the stupid bearings. I think I have the second printer gliding kinda smoothly now but it's taken some work. The one I just got appears have all of the 2.1 upgrades. Completely new bottom tray with 4 plastic bearing blocks, new guide bar mount, new bearing block for the extruder, etc. It's supposed to have better electronics but I won't be taking that chance given how crappy these bearings are.

I am using your clippard on mine. I don't include a clippard at all in my thing on thingiverse.
https://www.thingiverse.com/thing:2334883

I do link to yours as it is awesome :) Thanks for it!
#4895553
I was listing out all of the electronics for my pack and I realized the build list is quite extensive. This sure did get complicated fast :)

1 11.1v 2000mAh battery
2 arduino nano's
1 buck converter
2 neopixel sticks for the powercell
5 neopixel jewels. 4 for the cyclotron and 1 for the end of the wand
1 10 led bargraph for the wand
1 5 led bargraph for the wand to make 15 led bargraph
1 Sparkfun SX1509 breakout board for the bargraph
1 Adafruit Audio FX Sound Board - WAV/OGG Trigger with 2MB Flash
1 stereo amplifier board
3 toggle switches
1 push button
various 5mm and 3mm led's for the rest of the lights.

I've been on holiday for the past few weeks so I've not done too much. I'm about to start assembly of the wand as everything is printed and tested and I believe the first one is ready. I'll post some pictures as soon as I have it assembled
xoff00, Tebasaki liked this
#4895598
Three quick questions (to your beautiful build!):

1a. Is that the full list of the electronic parts you've used for that YouTube video? 1b. What site do you go for your parts?

2. Is that the full code you're using that you've posted? (As for timing, I've seen folks do it a bit differently: like putting the whole thing in a function or it's own class).

Again, that's looking fantastic!
#4895617
This post may contain an affiliate link that helps support GBFans.com when you make a purchase at no additional cost to you.

Tebasaki wrote:Three quick questions (to your beautiful build!):

1a. Is that the full list of the electronic parts you've used for that YouTube video?
I think that is the main stuff for the most part. There are a few other things like solderable breadboards and the resistor networks that I used. In that video I was doing it all on one arduino. I buy them in packs of 3 so they are pretty cheap and easy to work with
1b. What site do you go for your parts?
I buy a lot of the arduino stuff from amazon. I'm really impatient and prime is my friend. When I have an idea I gotta implement within days otherwise I forget so it works well for me. For instance I've been buying these neopixel jewels as they are cheaper
https://www.amazon.com/gp/product/B0105VMT4S/
and these arduino boards
https://www.amazon.com/gp/product/B0713XK923/

For resistors, diodes, led bargraphs, and other things like that I use https://www.digikey.com/. Shipping is fast but expensive so I usually do larger orders with them and get lots of extras. http://www.mouser.com/ is also good for stuff like that if I can't find it at digikey. I usually get orders in 3 days from digikey at their cheapest shipping option.



2. Is that the full code you're using that you've posted? (As for timing, I've seen folks do it a bit differently: like putting the whole thing in a function or it's own class).
That is not the full code. I've started splitting the stuff between the 2 arduinos so the power cell animation and audio triggers are in another file. I don't have that fully working yet so didn't want to post that. I really should have saved off the code I used in that video but unfortunately I didn't.

For arduino coding you only have a few timers you can use. There is the main timer loop and you can also tap into the other clocks to do 2 other loops I believe. I have not had to do that yet as I try to limit delays and the single clock loop has been running more than fast enough for me.

https://learn.adafruit.com/multi-taskin ... 2?view=all


Again, that's looking fantastic!
Thanks :)
Tebasaki liked this
#4895639
With that 11.1v battery, which buck converter would you recommend? Also, how long would you suspect he battery to last?
Is it loud enough and produce enough bass to clearly hear it? (I would really not mind carrying something heavy if it meant getting that sweet bass rumble when switched on!

Which stereo amplifier board was that. I'm looking at your picture and I'm trying to pic it out.
#4895648
This post may contain an affiliate link that helps support GBFans.com when you make a purchase at no additional cost to you.

I'm using these buck converters: https://www.amazon.com/gp/product/B01MQGMOKI

I've not checked the total current draw but it's well under 2 amps right now. Probably closer to .5 to 1 to be honest. Those converters are rated for 3 amps and I should not come anywhere near that. The led's are really low current.

In that video I'm using a single 3w speaker with a mono amp from adafruit: https://www.amazon.com/gp/product/B00PY2YSI4 and they sound really good together. I also bought one of these:
https://www.amazon.com/gp/product/B00XBG7GN4 but I am not very happy with the stereo sound it produces. A lot of noise that the adafruit one does not produce. I'll probably end up just going with one of these for my setup https://www.amazon.com/Adafruit-Stereo- ... B00SLYAK1G

The audio is plenty loud for me but it does not have a ton of bass. I'm building two of these packs for my wife and son and they don't need to be very loud. Adafruit has a 20W board that would probably do what you are looking for with bigger speakers https://www.amazon.com/Adafruit-Stereo- ... B00SK8OH30

I've not used it though so can't say how good it is.

With my target I should get a very long time out of a fully charged lipo dropped down to 5v through the converter.
Tebasaki liked this
#4895652
Thanks for the quick reply!

What speakers would you recommend?

Here's what I have so far for the shopping list:
A majority of the stuff.
http://a.co/bgD1n2L
10 bar
http://www.digikey.com/scripts/DkSearch ... 8103579711
5 bar
http://www.digikey.com/scripts/DkSearch ... 8103589711
Sound board
https://www.adafruit.com/product/2133
Breakout board
https://www.sparkfun.com/products/13601


Am I missing anything?
#4895657
This post may contain an affiliate link that helps support GBFans.com when you make a purchase at no additional cost to you.

Looks like a good start. For the bar graphs that you have chosen you will need to use resistors. I recommend using a resistor network to save space. For mine I went with these:

https://www.digikey.com/product-detail/ ... ND/3787988
https://www.digikey.com/product-detail/ ... ND/1088983

330 is a good brightness for me but 220 would be brighter. I wanted a lower current draw and did not see a significant brightness difference on the graph from 220 to 330 but did see a significant current drop.

The links to the bar graphs are not working for me. I went with these

https://www.digikey.com/product-detail/ ... ND/4745985
https://www.digikey.com/product-detail/ ... ND/4745584

Assuming those jewels and pixels work like the name brands you should be good to go on those. Best value I can see for the amount of control you get.

The toggle switches look good but I would recommend looking for screw base buttons for the main fire mechanism. The ones you have linked to are board mounted. Probably something more like this

https://www.amazon.com/Frentaly-Round-M ... B017EFQD6S

I used one that I stripped from one of my son's toys so I can't vouch for that completely.

For the various lights and stuff you might want to look at picking up a pack of color leds

https://www.amazon.com/gp/product/B01MSRBEW8/

That's what I use and did on my PKE meter and on this build as well. Lots of color options to choose from.

Good luck. My target is 2 packs by halloween (one a lefty) so I have my work cut out for me too :)
Last edited by CountDeMonet on July 18th, 2017, 5:00 pm, edited 1 time in total.
#4895887
With time getting short I've decided to focus on my son's proton pack. He's a lefty, and trust me, he can't use a right handed proton pack. So I'm building him a lefty version. Basically just reversed all the parts that needed to be and printed them out. You don't want to know how many of the main body I have printed. It's a lot...

I think it's looking good. I have a lot of sanding to do but the new printer is working really nice. After a few modifications it's printing better than the Davinci mini. I'm about to add the mosfet board for safety and a new feeder gear. Then I think I should be good to go for a while with this guy.

Image

Here is the lefty wand. I've printed the main body and bottom parts at around 50% infill for weight. It's not as heavy as a metal one but it's got some good weight to it and it should balance well. It's going to come to life real soon I promise...

Image
Image
Image
Image
  • 1
  • 2
  • 3
  • 4
  • 5
  • 25

Make it that pack, sell it for $599. (While I […]

Yeah, we've been building this thing for ten[…]

Someone on FB found it. NARDA ELECTROMAGNETIC RADI[…]

It appears that some time today someone who […]