Proffie v3 with a neopixel blade that won't light up

Hello there! My name is cisco, and I am a newbie to saber building and am having just a bit of trouble with my build. As you can probably tell by the topic I am having just a bit of trouble with my blade. I have a KR Sabers Kestis hilt and have wired it according to other diagrams I’ve found for similar sabers, and for the most part everything works but the blade. I have updated the OS on the proffie 3.9 soundboard, have tested all the features and they all work. Also, I have an illuminated hilt PCB that does work and lights up when the saber is ignited. I haven’t the foggiest idea of what I’m doing wrong, I have double checked my wiring, diagrams, and have made a new test blade to try and get it working. This has had me stumped for a few days and any help with it would be much appreciated. Down below I will list the materials used for this blade and saber. As well as the diagram I made and used to wire everything as well as a copy of my config file. Again any help or hints to help get this fixed is much appreciated! This is the last piece to get my saber fully functional. Thank you all!


Config File
Cestis_Saber_1.h (3.6 KB)
Parts List

  • ShtokCustomWorx Rotary Chassis PCB Set

  • ShtokCustomWorx Thin Neck Micro PCB

  • Blade Side PCB (Custom Saber Shop)

  • BTF-Lighting WS2812B RGB LED strip (amazon) Blade LEDs

  • ECO NPXL Short Pins Connector (illuminated Hilt Connector)

There are multiple ways to connect the npxl blade pcb (14). which option did you go with? Check the manual for connection options.

If the emitter pcb is a v3 or v4, there are multiple data pads. I would check how that is connected.

i believe it is a v4 i believe, and there is more than one data pad? Here is a picture of the one i have, and is there a manual? KR Sabers doesnt have a manual for this saber yet. So is one of the pins a data pad?

ah, I forgot about the eco pcb. Looks like it only has one data, so as long as the soldering is good, it should work.

Here is the shtok npxl manual: https://drive.google.com/file/d/1S0gRH6mnw8OvC6XNEBnWZGeY1ES1nhG6/view

There is also a lot if pin connections in that hilt, as you know. I would go thru the mechanic’s of it make sure they all look they should be connecting.

Okay, yeah I thought there was only one data pad :joy:, so just go through all the pins and make sure everything is connecting got it, i will go through all the pins too and make sure all the solider joints are good. Do I have the right leds thou?

What do you mean? Connections?

Also - I see you have 2 data pins specified in your config, but are only using one pad in the diagram. If that’s the case, you need to update your config to only use the one data pad.

It doesn’t exactly explain the issue you have, but it seems to me it shouldn’t work as it is now.

I meant for the led strip I have it is the correct one, and really? Where in my config does it say that and how can I fix it?

The only leds you have that I see are on the blade pcb. All that wiring looks fine to me.

In your blade config (lines 74 thru 79, you have:

BladeConfig blades[] = {
 { 0, WS281XBladePtr<144, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
    SubBladeWithStride(0, 15, 2, WS281XBladePtr<16, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >()),
    SubBladeWithStride(1, 15, 2, NULL)
  , CONFIGARRAY(presets) },
};

Line 75 has bladePin and line 76 has blade2pin, those are specifying the actual data pad/line you want to use. So blade2pin means data2 pad.

So I think you need to look at your blade config. You have 3 “blades” setup. On data1 pad you have the blade itself. Then on data2 pad you have 2 subbladewithstride’s those would be half the hilt pcb leds.

I do not know why a connected blade doesn’t work. It looks to me like it should.

Yeah it’s weird idk why it’s not working either, so how would I edit this to get my main blade for the first data pad?

Would something like this work?
#define bladePin 1
#define blade2Pin 2
#define bladePowerPin2 3
#define bladePowerPin3 4
#define powerButtonPin 5

no, I do not think those are real defines. I think you want something like this:

BladeConfig blades[] = {
 { 0, 
    SubBlade(16, 159, WS281XBladePtr<159, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >()),
    SubBladeWithStride(0, 15, 2, NULL),
    SubBladeWithStride(1, 15, 2, NULL),
    CONFIGARRAY(presets)
 }
};

Okay cool, so the 16 is for PIN number on the board right?

No, these are led numbers. 0 thru 15 are the 16 leds on the pcb, then 16 thru 159 are the 144 you have in the blade.

The numbers in the blade config are addresses to the pixel leds in sequence.

You still use you wiring diagram to figure what pad the wire goes to.

Gotcha, I will change that in my config and upload it to my board. I’ll plug in my test blade and give it a test.

I recommend reading the POD. If you’re using AI or anything like that, avoid it like the plague.

There are detailed descriptions for all these things there:

okay cool thanks! i will take a look at it, especially since i just got these errors.

In file included from C:\Users\franc\Downloads\ProffieOS\ProffieOS.ino:621:
C:\Users\franc\Downloads\ProffieOS\config\Cestis_Saber_1.h:85:42: error: expected ')' before 'SubBladeWithStride'
   85 |     SubBladeWithStride(0, 15, 2, nullptr)
      |                                          ^
      |                                          )
   86 |     SubBladeWithStride(1, 15, 2, nullptr)
      |     ~~~~~~~~~~~~~~~~~~                    
C:\Users\franc\Downloads\ProffieOS\config\Cestis_Saber_1.h:84:9: note: to match this '('
   84 | SubBlade(16, 159, WS281XBladePtr<159, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
      |         ^
C:\Users\franc\Downloads\ProffieOS\config\Cestis_Saber_1.h:87:26: error: expected ')' before '}' token
   87 |   , CONFIGARRAY(presets) },
      |                          ^
C:\Users\franc\Downloads\ProffieOS\config\Cestis_Saber_1.h:84:9: note: to match this '('
   84 | SubBlade(16, 159, WS281XBladePtr<159, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
      |         ^
exit status 1

Compilation error: expected ')' before 'SubBladeWithStride'

What does the config look like?

FYI any time you have an error you should post your full config alongside it.

that is a good idea, let me see if i can post what i just did to get that error.

#ifdef CONFIG_TOP
#include "proffieboard_v3_config.h"
#define NUM_BLADES 3
#define NUM_BUTTONS 1
#define VOLUME 1000
const unsigned int maxLedsPerStrip = 144;
#define CLASH_THRESHOLD_G 1.0
#define ENABLE_AUDIO
#define ENABLE_MOTION
#define ENABLE_WS2811
#define ENABLE_SD
#define SHARED_POWER_PINS
#endif
#ifdef CONFIG_PROP
#include "../props/saber_sa22c_buttons.h"
#endif
#define bladePin 1
#define blade2Pin 2
#define bladePowerPin2 21
#define bladePowerPin3 22
#define powerButtonPin 11

#ifdef CONFIG_PRESETS
Preset presets[] = {
   { "TeensySF", "tracks/venus.wav",
    StyleNormalPtr<CYAN, WHITE, 300, 800>(),
    StyleNormalPtr<CYAN, WHITE, 300, 800>(),
    StyleNormalPtr<CYAN, WHITE, 300, 800>(), "cyan"},
   { "SmthJedi", "tracks/mars.wav",
    StylePtr<InOutSparkTip<EASYBLADE(BLUE, WHITE), 300, 800> >(),
    StylePtr<InOutSparkTip<EASYBLADE(BLUE, WHITE), 300, 800> >(),
    StylePtr<InOutSparkTip<EASYBLADE(BLUE, WHITE), 300, 800> >(), "blue"},
   { "SmthGrey", "tracks/mercury.wav",
    StyleFirePtr<RED, YELLOW, 0>(),
    StyleFirePtr<RED, YELLOW, 1>(),
    StyleFirePtr<RED, YELLOW, 2>(), "fire"},
   { "SmthFuzz", "tracks/uranus.wav",
    StyleNormalPtr<RED, WHITE, 300, 800>(),
    StyleNormalPtr<RED, WHITE, 300, 800>(),
    StyleNormalPtr<RED, WHITE, 300, 800>(), "red"},
   { "RgueCmdr", "tracks/venus.wav",
    StyleFirePtr<BLUE, CYAN, 0>(),
    StyleFirePtr<BLUE, CYAN, 1>(),
    StyleFirePtr<BLUE, CYAN, 2>(), "blue fire"},
   { "TthCrstl", "tracks/mars.wav",
    StylePtr<InOutHelper<EASYBLADE(OnSpark<GREEN>, WHITE), 300, 800> >(),
    StylePtr<InOutHelper<EASYBLADE(OnSpark<GREEN>, WHITE), 300, 800> >(),
    StylePtr<InOutHelper<EASYBLADE(OnSpark<GREEN>, WHITE), 300, 800> >(), "green"},
   { "TeensySF", "tracks/mercury.wav",
    StyleNormalPtr<WHITE, RED, 300, 800, RED>(),
    StyleNormalPtr<WHITE, RED, 300, 800, RED>(),
    StyleNormalPtr<WHITE, RED, 300, 800, RED>(), "white"},
   { "SmthJedi", "tracks/uranus.wav",
    StyleNormalPtr<AudioFlicker<YELLOW, WHITE>, BLUE, 300, 800>(),
    StyleNormalPtr<AudioFlicker<YELLOW, WHITE>, BLUE, 300, 800>(),
    StyleNormalPtr<AudioFlicker<YELLOW, WHITE>, BLUE, 300, 800>(), "yellow"},
   { "SmthGrey", "tracks/venus.wav",
    StylePtr<InOutSparkTip<EASYBLADE(MAGENTA, WHITE), 300, 800> >(),
    StylePtr<InOutSparkTip<EASYBLADE(MAGENTA, WHITE), 300, 800> >(),
    StylePtr<InOutSparkTip<EASYBLADE(MAGENTA, WHITE), 300, 800> >(), "magenta"},
   { "SmthFuzz", "tracks/mars.wav",
    StyleNormalPtr<Gradient<RED, BLUE>, Gradient<CYAN, YELLOW>, 300, 800>(),
    StyleNormalPtr<Gradient<RED, BLUE>, Gradient<CYAN, YELLOW>, 300, 800>(),
    StyleNormalPtr<Gradient<RED, BLUE>, Gradient<CYAN, YELLOW>, 300, 800>(), "gradient"},
   { "RgueCmdr", "tracks/mercury.wav",
    StyleRainbowPtr<300, 800>(),
    StyleRainbowPtr<300, 800>(),
    StyleRainbowPtr<300, 800>(), "rainbow"},
   { "TthCrstl", "tracks/uranus.wav",
    StyleStrobePtr<WHITE, Rainbow, 15, 300, 800>(),
    StyleStrobePtr<WHITE, Rainbow, 15, 300, 800>(),
    StyleStrobePtr<WHITE, Rainbow, 15, 300, 800>(), "strobe"},
   { "TeensySF", "tracks/venus.wav",
    &style_pov,
    StyleNormalPtr<BLACK, BLACK, 300, 800>(),
    StyleNormalPtr<BLACK, BLACK, 300, 800>(), "POV"},
   { "SmthJedi", "tracks/mars.wav",
    &style_charging,
    StyleNormalPtr<BLACK, BLACK, 300, 800>(),
    StyleNormalPtr<BLACK, BLACK, 300, 800>(), "Battery\nLevel"}
};
BladeConfig blades[] = {
 { 0, 
SubBlade(16, 159, WS281XBladePtr<159, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
    SubBladeWithStride(0, 15, 2, nullptr)
    SubBladeWithStride(1, 15, 2, nullptr)
  , CONFIGARRAY(presets) },
};
#endif

#ifdef CONFIG_BUTTONS
Button PowerButton(BUTTON_POWER, powerButtonPin, "pow");
#endif

Right out of the gate, remove this. I don’t know where it came from, but it’s completely erroneous.

You’re missing a ) at the end of the first SubBlade (before the comma)

You’re missing a comma after the other two SubBladeWithStride’s

EDIT: Just after the first SubBladeWithStride. The second one’s comma is placed weird.