Issues setting up brand new proffieboard (Issues with motion and OLED screen)

I just bought a new proffieboard v2.2 from SaberBay (KR Sabers proffie) after I absolutely destroyed my previous one. I took my time assembling this one and made a fancy chassis for it, etc.

It has 2 switches, one lit, set up as a 1 color crystal chamber (it has the proper resistor).
I have a Shtok V3 neopixel adapter wired in series, I plan on setting it up as a subblade later.
It has no recharge port or kill switch, just a removable battery setup, an SO 24mm Elite Speaker.
It also has a SSD1306 OLED display from SaberBay.

So I have a couple of issues:

  1. I have no idea how on earth if I’m properly configuring the OLED right
  2. The motion sensor seems to be having a stroke
  3. The accent LED on my switch doesn’t seem to light up.

The first issue is fairly straightforward. Best I can tell I just need to add #define INCLUDE_SSD1306 and it should work using the names I have defined in my presets? I’m not worried about any of the image stuff yet, because adding the define, and making sure I have all lowercase names gives me a black screen

The second issue I think might be correlated to the first, but I doubt it. My motion sensor sends random clashes and swings whenever it’s on. I get a whole ton of EVENT: Swing ON when the board is first powered up, and then the board locks up in Serial Monitor aside from occasionally printing unit = 2 vol = 0.00, Playing [.wav file] There was one time I seemed to have it kind of working, where it was registering clashes in serial monitor and it was responsive and there wasn’t anything weird going on, but I disconnected power and put the chassis back in my saber with the speaker and powered it on and it was back to being borken. I have yet to recreate that working state since.

My accent LED not working is likely one of my resistors not being right, due to how they were installed, but I figured I would throw it out there.

A sample of my config:

#include "proffieboard_v2_config.h"
#define INCLUDE_SSD1306
#define NUM_BLADES 2
#define NUM_BUTTONS 2
#define VOLUME 800
const unsigned int maxLedsPerStrip = 144;
#define CLASH_THRESHOLD_G 4
#define ENABLE_AUDIO
#define ENABLE_MOTION
#define ENABLE_WS2811
#define ENABLE_SD
#define IDLE_OFF_TIME 60 * 10 * 1000
#define MOTION_TIMEOUT 60 * 15 * 1000
#define SAVE_STATE
#define SA22C_SWING_ON
#define SA22C_THRUST_ON
#define SA22C_SWING_ON_SPEED 400
#define SA22C_TWIST_OFF
#define ORIENTATION ORIENTATION_USB_TOWARDS_BLADE
#endif

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

#ifdef CONFIG_PRESETS
Preset presets[] = {
{ "8-BLUE", "tracks/GESW.wav",
StylePtr<Layers<RandomFlicker<RotateColorsX<Variation,Blue>,RotateColorsX<Variation,Rgb<0,0,128>>>,LockupTrL<Layers<AlphaL<AudioFlickerL<White>,Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Int<4000>,Int<26000>>,Int<6000>>,Scale<SwingSpeed<100>,Int<14000>,Int<18000>>>>,AlphaL<White,Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Int<4000>,Int<26000>>,Int<6000>>,Int<10000>>>>,TrConcat<TrInstant,White,TrFade<400>>,TrConcat<TrInstant,White,TrFade<400>>,SaberBase::LOCKUP_NORMAL>,ResponsiveLightningBlockL<Strobe<White,AudioFlicker<White,Blue>,50,1>,TrConcat<TrInstant,AlphaL<White,Bump<Int<12000>,Int<18000>>>,TrFade<200>>,TrConcat<TrInstant,HumpFlickerL<AlphaL<White,Int<16000>>,30>,TrSmoothFade<600>>>,ResponsiveStabL<Red,TrWipeIn<600>,TrWipe<600>>,ResponsiveBlastL<White,Int<400>,Scale<SwingSpeed<200>,Int<100>,Int<400>>,Int<400>>,ResponsiveClashL<White,TrInstant,TrFade<400>,Scale<BladeAngle<0,16000>,Int<4000>,Int<26000>>,Int<6000>,Int<20000>>,LockupTrL<AlphaL<BrownNoiseFlickerL<White,Int<300>>,SmoothStep<Int<30000>,Int<5000>>>,TrWipeIn<400>,TrFade<300>,SaberBase::LOCKUP_DRAG>,LockupTrL<AlphaL<Mix<TwistAngle<>,Red,Orange>,SmoothStep<Int<28000>,Int<5000>>>,TrWipeIn<600>,TrFade<300>,SaberBase::LOCKUP_MELT>,InOutTrL<TrWipe<350>,TrWipeIn<800>,Black>>>(),
StylePtr<Layers<White,AudioFlickerL<Rgb<170,170,170>>,InOutTrL<TrFade<300>,TrFade<500>,Pulsing<White,Black,3000>>>>(),"galaxy blue"}
};

BladeConfig blades[] = {
 { 0, WS281XBladePtr<132, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
    SimpleBladePtr<CreeXPE2WhiteTemplate<550>, NoLED, NoLED, NoLED, bladePowerPin6, -1, -1, -1>()
  , CONFIGARRAY(presets) },
};
#endif

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

This config was all working on my old proffie before I broke it, only new thing is the OLED and the extra LEDs on the Neopixel adapter.

I also want to add that when I ignite the saber my neopixel adapter just turns solid white. With a blade in probably about 20 pixels ignite, all also solid white. One on the end is green. Seems like a data line problem, but all the connections are clean.

Everything is wired up pretty much exactly as the builder lays it out.

Just add #define ENABLE_SSD1306 to your config file.

Try ProffieOS 6.x and see if that works better.
It could also be an actual problem with your motion sensor.
You could try “monitor clash” in the serial monitor to see what’s going on. If you see lots of random stuff when the saber is still, you have a problem.

If you short LED6 to GND with a wire, does the button light up?

What version of ProffieOS are you using?

I added that define to my config before, no dice. I upgraded to proffie OS 6, same issue, the switch button doesn’t light up, but I’m fairly certain that’s a bad joint with my resistors, wouldn’t surprise me at all. I was running Proffie OS5.9, but I updated to Proffie OS 6 and the same issues persist. However, since my OLED is having issues, I noticed SDA and SCL interface with the accelerometer and gyroscope, which would explain my problems in that regard. Could something be going on here to cause this?

What do you think about the solid blade color? It also appears in proffie OS 6.

It’s also worth noting that I tried the default proffieboard v2 config as well with no luck.

I wasn’t able to really test anything else before Windows decided that it didn’t want to talk to the board anymore, so I had to switch everything over to macOS and that’s where I called it for the night.

That’s a good point.
If you have any kind of short on SDA/SDL, that will mess up both the display AND the motion.

I’m not sure what to think about the 20 pixels igniting white though. One thought I had was that there was a problem in ProffieOS 6.2 where I had one of my CONFIG_FILE defines not commented out, which could maybe override yours.

Ok, once I get back home I’ll desoldering the OLED entirely, and see what happens, check all those connections, then I’ll get back to you with those results. At first I thought something might be weird since I simply bridged the D2 pad on my Shtok NPXL v3 connector rather than putting a resistor, but the proffie has an inbuilt resistor, so it shouldn’t matter. My only other though is something got bridged there, so I’ll have to take a look and see what I can there also.

Only D1 has a builtin resistor. D2 does not.

My bad, connecting to D2 and soldering on R2 on the shtok PCB, I’m connected to Data 1 on the proffieboard itself.

Ah, that makes sense.

I got everything I got everything but my switch LED (again, pretty sure it’s a bad solder connection, planning to look at that next) and my OLED working. Turns out I had SCL and Neopixel data backwards on the board, since I had them the same color. I think that’s why it was the first 32 ish pixels on my blade lighting up. Anyways, now the motion works and the neopixel works, but still my OLED doesn’t seem to want to work. Could it have been damaged by having those backwards?

I don’t think that should damage it.
It is possible it got damaged in some other way though.

Yeah. It was dumb of me to not test everything before I put it together… it’s gonna be a pain to get it out now. I’m not sure how else it would’ve gotten damaged, but I’ll have to take a look. Thank you for all your help!

@profezzorn Bad news. I got another OLED, wired up straight to 3.3v so that I know it isn’t something funky with my board, and it still doesn’t do a thing. Here’s some pictures of how I have it wired. I’m a little confuzzled and not sure what to do at this point. It seems incredibly unlikely that two brand new OLEDs would both be bad and broken. And as seen on those pictures below, I can’t find a fault in my wiring on config. I have #define INCLUDE_SSD1306 in my config file, which should at least show a boot up screen with “ProffieOS” right? And I know it’s flashing, I’ve gone back and forth between versions and double checked with version in the serial monitor, that’s changing, as are other config updates. I’m out of ideas.

(Pictures show it wired up to SD Power, where I said it’s wired up to 3.3v. I’ve tried both, changing the VCC wire between those is the only thing I’ve changed in this context though.)




So, this makes me mad. I desoldered the screen and soldered it again. and it works now. I’ve resoldered it before. I didn’t change anything. I didn’t even use different wire or different solder. :man_facepalming: Whatever… it works. I’m too tired/frustrated/confused/annoyed to do anything else.

This doesn’t do anything by itself, it only includes the ssd1306 functions so that you can define your own display.
I think you want ENABLE_SSD1306

Ha, yeah, I realized that. Didn’t notice at first because for the majority of this testing I was using a super bare bones config straight from the proffieboard config page, just to make sure it came right from there, and that there weren’t any mistakes like that one in my config that would add more variables to the mix.