Blade, sound and OLED problems

Hello,

I am a novice, and I need help:

1/ my neopixel blade (purchased from Custom Saber Shop) is almost not working. I say “almost” because it happens suddenly, on some presets, that it lights up briefly when closing. It is very curious.

2/ the sound is much too low and not clear at all. It sounds like there is interference or the speaker is broken, but it’s not a hardware problem. I installed a new one, and it’s the same.

3/ the OLED screen does not work.

Here is my config.h file:


#ifdef CONFIG_TOP
#include "proffieboard_v2_config.h"
#define NUM_BLADES 3
#define NUM_BUTTONS 2
#define VOLUME 1100
const unsigned int maxLedsPerStrip = 164;
#define CLASH_THRESHOLD_G 1.0
#define ENABLE_AUDIO
#define ENABLE_MOTION
#define ENABLE_WS2811
#define ENABLE_SD
#define ENABLE_SSD1306
#define SAVE_STATE
#define SHARED_POWER_PINS
#endif

#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,
    WS281XBladePtr<122, bladePin, Color8::GRBw, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
    WS281XBladePtr<16, blade2Pin, Color8::GRBw, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
    WS281XBladePtr<1, blade4Pin, Color8::GRBw, PowerPINS<bladePowerPin6> >(),
    CONFIGARRAY(presets) },
};
#endif

#ifdef CONFIG_BUTTONS
Button PowerButton(BUTTON_POWER, powerButtonPin, "pow");
Button AuxButton(BUTTON_AUX, auxPin, "aux");
#endif

Any advice will be highly appreciated. Thanks in advance.

All these symptoms point to a low battery, except OLED.
Did it ever work before?
What changed?

The config file looks reasonable, assuming it matches how your saber is wired of course.
Who installed your saber?
Did it ever work?
How is it wired?

Thank you for your quick response.

Here is the wiring diagram (file 1) and a video of the problems with the blade and with the sound (file 2).

Good news: I fixed the problem with the OLED screen (as you can see in the video). I changed it, and rewired it!

This is an entirely personal project. I learned everything (or tried to learn, to be more precise) and I did everything myself (except the graflex itself and the design of the “metal master” chassis from md-sabers).

Since I once burned a soundboard, I took special care to do the wiring properly.

I am at the end of this work. The blade has never worked yet. I just rechecked the wiring, soldering and insulation of the wires.

As for the sound, I also rechecked the wiring, soldering and wire insulation. I tried changing the speaker. I even tried reversing the polarity. The problem persists.

My battery is working, and the serial monitor indicates a normal voltage (according to my memory 4.1 volts).

Thanks in advance for your help and advice

file 1
[Proffieboard V2 Wiring Diagram.pdf|attachment]
(upload://nKSae7uAOTfrwsOMAY3a1XNZnDg.pdf) (4.0 MB)

file 2

Unfortunately, the wiring diagram didn’t seem to get uploaded for some reason, please try again.

It’s a weird problem though, and I’m not sure exactly what would cause that.
Does the serial monitor say the battery is still 4.1 volts even when the blade is on?
What does “sdtest” say?

Hello,

Indeed, this is a strange problem. I certainly can’t fix it by myself!

Here is the wire diagram in PDF and JPEG format.

Proffieboard V2 Wiring Diagram.pdf (4.2 MB)

Here is also a copy of the serial monitor logs when I did the “sdtest”, in PDF and text format.

Graflex_sr_sdtest_20220615.pdf (20.2 KB)

Graflex_sr_sdtest_20220615.txt (6.5 KB)

I have tried two different SD cards, and the problem persists.

I’m still hopeful, but I might have to buy another soundboard…

Thank you. I am impressed by the help I get

Stephane

No issue when disconnected from USB, yes?
It seems like you just have Mass Storage active. Tools>USB Type>Serial+Mass Storage.
Look for the SD card on the computer, right click and choose “eject”.
Then the board will take it over and use it normally.

It seems like the SD card was busy (mounted on the computer) when you ran sdtest. So sdtest was not able to open any files to find out how long it takes to read them, which is why there are no results. Try “eject safely” or whatever it is called on your computer before running “sdtest”.

Hello! Here are the results of the sdtest, when the sdcard was safely ejected

Graflex_rs_sdtest_2022-06-18.txt (6.2 KB)

Graflex_rs_sdtest_2022-06-18.pdf (19.3 KB)

The sdtest results looks reasonable, not super fast, but fast enough.

The sound issue makes me think that there is something wrong with your 5v booster. Do you have 5 volts on the 5v pad when sound is playing? It could also be an issue with the speaker or the amplifier.

The blade is super weird though.
I’m wondering if maybe the pogo pin PCB doesn’t have the right resistors/jumpers. (Like, D1 could be shorted to something else maybe?)

Good evening,
I have solved the sound problem. I realized that the negative wire that connects the speaker to the board was damaged in one place. I simply changed it.
The problem of the blade, however, persists…
I’m exploring your suggestion that a resistor error is the source of the problem.
I realized that the V4 configuration of the NPXL (blade + pcb leds independent) requires that the R2 resistor be removed, which I had not done.
At first, to avoid removing the R2 resistor (which is delicate), I tried to use the V2 configuration by cutting the D1 wire (which led me, in the “config.h” file, to reduce to 2 the number of blades).
It didn’t work. In fact, the Pixelblade Lit Connector did not produce any light anymore, even without the blade… Which suggests to me, unfortunately, that the board itself might be broken.
So, before changing the board for a new one (I’m going to get another one very soon, anyway, which I’ve already ordered for another project), I propose to go back to the R4 configuration, which implies: (1) reconnecting the D1 wire; (2) removing the R2 resistor; (3) going back to the previous “config.h” file.
Am I on the right track, in your opinion?
Thanks again for your help
Stéphane

Not quite.
D1 pad on the NPXL is a direct connection to the center pogo pin that feeds a connected main blade its data.
D2 is the data feed for the onboard LEDs of the NPXL PCB itself.

R2 is a data resistor that is in between D2 and the on-board LEDs, like this:
D2 -> R2 -> on-board LEDs
Removing R2 is never one of the options, because then you’d have no path to the LEDs.

So using Version4 of the wiring options simply directly sends data through D1 right to the main blade, and a different data stream through D2, through R2, to the on-board LEDs .

Changing to Version2 wiring option, would be to run both in parallel. The suggested wiring connects a data pad from the Proffieboard right to D2 pad on NPXL, which then splits to both the R1 and R2 resistors, then onto the main blade and on-board LEDs respectively.
Like this:

     / ->R2 -> on-board LEDs
D2 ->
     \ ->R1 -> Main blade

Hello,
Good thing I wrote to you before I did anything…
If I understand correctly, to come back to the V4 configuration (blade + pcb leds independent), I should remove the R1 resistor instead of the R2? This is what is written on page 4 of the NPXL User manual…

NPXL User Manual p 4.pdf (1.1 MB)

One thing still puzzles me, though. Why neither the Blade LEDs nor the On board LEDs work in my current V2 configuration? The answer might be in the “config.h” file, so here is the one I’m currently using:


#ifdef CONFIG_TOP
#include "proffieboard_v2_config.h"
#define NUM_BLADES 2 // V2(parallel) ou V3(serie)
// #define NUM_BLADES 3 // V4(independant)
#define NUM_BUTTONS 2
#define VOLUME 1200
const unsigned int maxLedsPerStrip = 139;
#define CLASH_THRESHOLD_G 1.0
#define ENABLE_AUDIO
#define ENABLE_MOTION
#define ENABLE_WS2811
#define ENABLE_SD
#define ENABLE_SSD1306
#define SAVE_STATE
// #define SHARED_POWER_PINS // V4
#define IDLE_OFF_TIME 60*10*1000
#endif

#ifdef CONFIG_PRESETS
Preset presets[] = {
    
    { "RgueCmdr", "tracks/venus.wav",
    StyleNormalPtr<AudioFlicker<DeepSkyBlue,White>,Yellow,300,800>(),
    // StyleNormalPtr<AudioFlicker<DeepSkyBlue,White>,Yellow,300,800>(), // V4
    StyleNormalPtr<AudioFlicker<DeepSkyBlue,White>,Yellow,300,800>(), "deep sky"},

    { "RgueCmdr", "tracks/venus.wav",
    StyleFirePtr<DeepSkyBlue,White,0>(),
    // StyleFirePtr<DeepSkyBlue,White,1>(), // V4
    StyleFirePtr<DeepSkyBlue,White,2>(), "blue fire"},

    { "SmthJedi", "tracks/uranus.wav",
    StyleNormalPtr<AudioFlicker<Green,White>,Yellow,300,800>(),
    // StyleNormalPtr<AudioFlicker<Green,White>,Yellow,300,800>(), // V4
    StyleNormalPtr<AudioFlicker<Green,White>,Yellow,300,800>(), "green"},

    { "SmthJedi", "tracks/uranus.wav",
    StyleFirePtr<Green,Yellow,0>(),
    // StyleFirePtr<Green,Yellow,1>(), // V4
    StyleFirePtr<Green,Yellow,2>(), "green fire"},

    { "RgueCmdr", "tracks/mars.wav",
    StyleNormalPtr<Red,Red,300,800>(),
    // StyleNormalPtr<Red,Red,300,800>(), // V4
    StyleNormalPtr<Red,Red,300,800>(), "red"},

    { "RgueCmdr", "tracks/mars.wav",
    StyleFirePtr<Red,White,0>(),
    // StyleFirePtr<Red,White,1>(), // V4
    StyleFirePtr<Red,White,2>(), "red fire"},

   { "SmthGrey", "tracks/mercury.wav",
    StyleNormalPtr<AudioFlicker<White,Yellow>,Yellow,300,800>(),
    // StyleNormalPtr<AudioFlicker<White,Yellow>,Yellow,300,800>(), // V4
    StyleNormalPtr<AudioFlicker<White,Yellow>,Yellow,300,800>(), "white"},

   { "SmthFuzz", "tracks/uranus.wav",
    StyleNormalPtr<Yellow,White,300,800>(),
    // StyleNormalPtr<Yellow,White,300,800>(), // V4
    StyleNormalPtr<Yellow,White,300,800>(), "yellow"},

   { "TeensySF", "tracks/venus.wav",
    StyleNormalPtr<Magenta,White,300,800>(),
    // StyleNormalPtr<Magenta,White,300,800>(), // V4
    StyleNormalPtr<Magenta,White,300,800>(), "magenta"}

};

BladeConfig blades[] = {
    
{ 0,
    WS281XBladePtr<122, bladePin, Color8::GRBw, PowerPINS<bladePowerPin2, bladePowerPin3> >(), // V2 ou V4
    // WS281XBladePtr<138, bladePin, Color8::GRBw, PowerPINS<bladePowerPin2, bladePowerPin3> >(), // V3(122+16)
    // WS281XBladePtr<16, blade2Pin, Color8::GRBw, PowerPINS<bladePowerPin2, bladePowerPin3> >(), // V4
    WS281XBladePtr<1, blade4Pin, Color8::GRBw, PowerPINS<bladePowerPin6> >(),
    CONFIGARRAY(presets) },
    
};
#endif

#ifdef CONFIG_BUTTONS
Button PowerButton(BUTTON_POWER, powerButtonPin, "pow");
Button AuxButton(BUTTON_AUX, auxPin, "aux");
#endif

My hypothesis is that there is a resistance in the blade, between the Pogo D1 and the Blade LEDs… So there would be three resistors in the V2 configuration: R1, R2 and the internal resistor in the blade. Is this the reason why the Blade LEDs don’t work, according to you?
In case my current V2 configuration should theoretically work, the problem could be either in the Board (which would be broken) or in my blade… This is a blade I ordered from Custom Saber Shop:

https://www.thecustomsabershop.com/KR-Pixel-Show-blade-78-OD-x-32875-long-V2-P1683.aspx

Thanks again… We (especially you, actually) are close to finding the answer to our questions, I think. I’m learning a lot, anyway, as someone who started from scratch, literally, not so long ago!

Stéphane

you have Color8::GRBw

I think you don’t want to define the blade(s) as having a dedicated white channel.

Color8::GRB is likely what you want.

ALL PROBLEMS ARE SOLVED!
This is thanks to the good advice I received on this blog. I want to thank the community, but especially NoSloppy and, of course, Profezzorn (long live the ProffieBoard and ProffieOS)!
Here, for our collective memory, is what I did. I went back to the R4 configuration, which involved: (1) reconnecting the D1 wire; (2) removing the R2 resistor on the NPXL Lit Connector; (3) going back to the previous config.h file, with the proviso that I corrected an error by replacing Color8::GRBw with Color8::GRB in the code I had reproduced at the very beginning, 14 days ago.
Everything now works perfectly!

Stéphane

Just to make it clear, i think you meant “V4” configuration, and “(2) removing the “R1” resistor”