Proffie E-11 Blaster on OS 7.8

@baldusi

Here is my Proffie Blaster mock-up. I still have to design and print a chassis for the battery, rcp, proffieboard, and speaker. I also have to drill out the bolt for wire passage for the tri-cree and switch/OLED wires! But, the idea is all working. Hopefully I can work with baldusi to make the blaster prop file even better! I still love our original iteration, but I know we can do more with the OLED!!! Excited to get going on this project!

3 Likes

Cool! Not to complicate things further but i wonder if there is a way to have two OLED’s from one proffieboard? Thinking a scope display would look amazing.

Yes, but it’s not well supported.
For instance, there isn’t an easy way to specify different content on the two displays.
Also, I don’t think it would work if the displays are different sizes.

It is done! Now, to get on the thread with Baldusi! Feedback: right now, the only OLED types that work with the stock blaster prop file are: boot.bmp, font.bmp. It would be nice to get some more functionality on that, to go with a “round count”. I actually like the Imperial/Rebel logos on the battery meter on a blaster anyway. Seems to me we ought to be worried about energy remaining, instead of “bullets/rounds remaining”. But that is just me. Also, IMHO, blasters don’t jam. Firearms jam from holding pistols too softly, or being dirty, or casing not fully ejecting because all of the above. In a blaster, we don’t have bullets/casings…so I always thought that jams and round limitations were a moot point. That is just me though, I know Brian C. built round limiters into prop file.

suggestions for .bmps: reload, stun, fire?, maybe a mode switch.bmp. SA FIre, Stun, Auto Fire? The Proffie blaster prop file is as simple as we first designed it on OS 4? But it is also very effective at driving tri crees, normal leds, neopixels, and OLEDs!!!

Much of that is in the works, just on a back burner at the moment I suppose.

and

1 Like

They’re togglable via defines…
#define BLASTER_SHOTS_UNTIL_EMPTY // Not defined = unlimited shots.
#define BLASTER_JAM_PERCENTAGE // If this is not defined, random from 0-100%.
So 0 will never jam.
I just like smacking the blaster to unjam. Adds a level of realism for me, even if not technically “jammed”, the ol’ Fonzerelli smack to make something wonky work again is real world stuff!

1 Like

Full build video:

Wiring Diagram for Proffie 1.5: https://i.imgur.com/8IISdGL.jpg

My config file:

#ifdef CONFIG_TOP
#include "proffieboard_v1_config.h"
#define NUM_BLADES 2
#define NUM_BUTTONS 2
#define VOLUME 2000
const unsigned int maxLedsPerStrip = 144;
#define CLASH_THRESHOLD_G 1.0
#define ENABLE_AUDIO
#define ENABLE_WS2811
#define ENABLE_SD
#define DELAYED_OFF
#define ENABLE_BLASTER_AUTO
#define ENABLE_SSD1306
#define MOTION_TIMEOUT 60 * 15 * 1000
#define IDLE_OFF_TIME 60 * 10 * 1000
#endif

#ifdef CONFIG_PROP
#include "../props/blaster.h"
#endif

#ifdef CONFIG_PRESETS

Preset presets[] = {

// Default basic blast color with red audio flicker on blast

{ "trooper;common", "common/tracks/march.wav",

StylePtr<Lockup<BlastFadeout<BlastFadeout<Black,AudioFlicker<Black,Red>,250,EFFECT_FIRE>,AudioFlicker<Black,Blue>,1500,EFFECT_STUN>,AudioFlicker<Black,Red>>>(),

StylePtr<Lockup<BlastFadeout<BlastFadeout<Black,AudioFlicker<Black,Red>,250,EFFECT_FIRE>,AudioFlicker<Black,Blue>,1500,EFFECT_STUN>,AudioFlicker<Black,Red>>>(),
"Imperial\nTrooper"},



{"trooper;common","common/tracks/swars.wav",

StylePtr<Lockup<BlastFadeout<BlastFadeout<Black,AudioFlicker<Black,Red>,250,EFFECT_FIRE>,AudioFlicker<Black,Blue>,1500,EFFECT_STUN>,AudioFlicker<Black,Red>>>(),

StylePtr<Lockup<BlastFadeout<BlastFadeout<Black,AudioFlicker<Black,Red>,250,EFFECT_FIRE>,AudioFlicker<Black,Blue>,1500,EFFECT_STUN>,AudioFlicker<Black,Red>>>(),
"Imperial\nTrooper2"
},



{"bank2;common","common/tracks/swars.wav",
StylePtr<Lockup<BlastFadeout<BlastFadeout<Black,AudioFlicker<Black,Red>,250,EFFECT_FIRE>,AudioFlicker<Black,Blue>,1500,EFFECT_STUN>,AudioFlicker<Black,Red>>>(),

StylePtr<Lockup<BlastFadeout<BlastFadeout<Black,AudioFlicker<Black,Red>,250,EFFECT_FIRE>,AudioFlicker<Black,Blue>,1500,EFFECT_STUN>,AudioFlicker<Black,Red>>>(),
"bank2"},



{"bank3;common","common/tracks/fates.wav",

StylePtr<Lockup<BlastFadeout<BlastFadeout<Black,AudioFlicker<Black,Red>,250,EFFECT_FIRE>,AudioFlicker<Black,Blue>,1500,EFFECT_STUN>,AudioFlicker<Black,Red>>>(),

StylePtr<Lockup<BlastFadeout<BlastFadeout<Black,AudioFlicker<Black,Red>,250,EFFECT_FIRE>,AudioFlicker<Black,Blue>,1500,EFFECT_STUN>,AudioFlicker<Black,Red>>>(),
"bank3"


},



{"bank4;common","common/tracks/credits.wav",

StylePtr<Lockup<BlastFadeout<BlastFadeout<Black,AudioFlicker<Black,Red>,250,EFFECT_FIRE>,AudioFlicker<Black,Blue>,1500,EFFECT_STUN>,AudioFlicker<Black,Red>>>(),

StylePtr<Lockup<BlastFadeout<BlastFadeout<Black,AudioFlicker<Black,Red>,250,EFFECT_FIRE>,AudioFlicker<Black,Blue>,1500,EFFECT_STUN>,AudioFlicker<Black,Red>>>(),
"bank5"
},



{"bank5;common","common/tracks/swars.wav",

StylePtr<Lockup<BlastFadeout<BlastFadeout<Black,AudioFlicker<Black,Red>,250,EFFECT_FIRE>,AudioFlicker<Black,Blue>,1500,EFFECT_STUN>,AudioFlicker<Black,Red>>>(),

StylePtr<Lockup<BlastFadeout<BlastFadeout<Black,AudioFlicker<Black,Red>,250,EFFECT_FIRE>,AudioFlicker<Black,Blue>,1500,EFFECT_STUN>,AudioFlicker<Black,Red>>>(),
"bank6"
},

{"blstr1;common","common/tracks/fett.wav",

StylePtr<Lockup<BlastFadeout<BlastFadeout<Black,AudioFlicker<Black,Red>,250,EFFECT_FIRE>,AudioFlicker<Black,Blue>,1500,EFFECT_STUN>,AudioFlicker<Black,Red>>>(),

StylePtr<Lockup<BlastFadeout<BlastFadeout<Black,AudioFlicker<Black,Red>,250,EFFECT_FIRE>,AudioFlicker<Black,Blue>,1500,EFFECT_STUN>,AudioFlicker<Black,Red>>>(),
"boba\nfett"


},

{"blstr1;common","common/tracks/theme.wav",

StylePtr<Lockup<BlastFadeout<BlastFadeout<Black,AudioFlicker<Black,Red>,250,EFFECT_FIRE>,AudioFlicker<Black,Blue>,1500,EFFECT_STUN>,AudioFlicker<Black,Red>>>(),

StylePtr<Lockup<BlastFadeout<BlastFadeout<Black,AudioFlicker<Black,Red>,250,EFFECT_FIRE>,AudioFlicker<Black,Blue>,1500,EFFECT_STUN>,AudioFlicker<Black,Red>>>(),
"boba\nfett"


},




};

template<int milliohms = 1200>

struct CreeXPE2DRedTemplate {

static constexpr float MaxAmps = 1.0;

static constexpr float MaxVolts = 2.5;

static constexpr float P2Amps = 0.35;

static constexpr float P2Volts = 2.1;

static constexpr float R = milliohms / 1000.0;

static const int Red = 255;

static const int Green = 0;

static const int Blue = 0;

};

template<int milliohms = 1200>

struct CreeXPE2DRed2Template {

static constexpr float MaxAmps = 1.0;

static constexpr float MaxVolts = 2.5;

static constexpr float P2Amps = 0.35;

static constexpr float P2Volts = 2.1;

static constexpr float R = milliohms / 1000.0;

static const int Red = 0;

static const int Green = 255;

static const int Blue = 0;

};

template<int milliohms = 300>

struct CreeXPE2RBlueTemplate {

static constexpr float MaxAmps = 1.0;

static constexpr float MaxVolts = 3.4;

static constexpr float P2Amps = 0.35;

static constexpr float P2Volts = 3.1;

static constexpr float R = milliohms / 1000.0;

static const int Red = 0;

static const int Green = 0;

static const int Blue = 255;

};



BladeConfig blades[] = {

{ 0, SimpleBladePtr<CreeXPE2DRedTemplate<1200>, CreeXPE2DRed2Template<1200>,CreeXPE2BlueTemplate<300>, NoLED>(),

WS2811BladePtr<14, WS2811_800kHz | WS2811_GRB, bladePin, PowerPINS<bladePowerPin6>>(),

CONFIGARRAY(presets) },

};
#endif



#ifdef CONFIG_BUTTONS
Button FireButton(BUTTON_FIRE, powerButtonPin, "fire");
Button ModeButton(BUTTON_MODE_SELECT, auxPin, "modeselect");
#endif 

3D Sterling Model: STERLING SMG MK4 (L2A3) by TK14082 - Thingiverse
3d ANH E11 add ons for Sterling: E11 BLASTER (EPISODE IV: A NEW HOPE) ACCESSORY KIT by TK14082 - Thingiverse
My first ever designed chassis for this model: E-11 Chassis that works with Bryan Roller's Sterling E11 Model to convert it to functioning prop with Proffieboard by TomTilmon - Thingiverse

If you are going to build this model, then you have to cut off the back of the bolt and secure your LED module onto the front of the bolt. I drilled a wire through the center of the bolt for my tri cree wires, and removed the side of the bolt opposite the charge handle to make wire routing easier. I also drilled holes into the Hegster Counter box, as well as the rifle to allow my 6 wires from counter box (2 aux switch wires and 4 from OLED Display) to pass into the rifle. Trigger switch mounted behind funcioning trigger, and wires routed through trigger housing into rifle.

Imgur
Imgur
Imgur
Imgur

2 Likes

Short Video for those with ADHD: