A little help with getting my Version 1 Teensy saber functioning correctly

Hi there,

I wonder if someone would be able to help me out a little. I have built from the instructions on Fredrik Hubinette’s website ( just wanted to say what a fantastic job he has done and a big thank you for sharing the plans) to build a Version 1 Teensy saber with the following items.

Teensy 3.2, PJRC prop board, SD card reader, a 4 GB memory card, and a string of SK6812 RBGW addressable Leds .

The saber seems to work ok in testing but seems a bit erratic on the LED front, I used a standard luxion LED at first to check that the FET’s were switching ok and then progressed to the SK6812 which seemed to work fine as well until I was skipping through the styles menu (* Which I am a little confused about how it works) I held the power on button down and gently tapped the body of the saber against the table to make it skip to the next style but this time i tapped it twice by accident, the board then said “no prop directory found” so I removed the battery reset the saber which worked but I now only seem to have 3 styles spoken to me when i go through the menu but I don’t have any patterns or lights working on the SK6812 strip. I wondered if I had come across a menu used to turn off styles or the data to the led strip but looking at the data line to the strip I am seeing data on an oscilloscope as well as the FET gate lines. I am using Version 5.9 of ProffieOS and have played around with the config files but could do with a pointer to setting it up.

For example i don’t understand what the difference is between the top section of the config file starting with Preset presets[] = { and the section Preset red_presets[] = {

Preset presets[] = {
  { "TeensySF", "tracks/venus.wav",
    StyleNormalPtr<CYAN, WHITE, 300, 800>(), "cyan"},
   { "SmthJedi", "tracks/mars.wav",
    StylePtr<InOutSparkTip<EASYBLADE(BLUE, WHITE), 300, 800> >(), "blue"},
   { "SmthGrey", "tracks/mercury.wav",
    StyleFirePtr<RED, YELLOW>(), "fire"},
   { "SmthFuzz", "tracks/uranus.wav",
    StyleNormalPtr<RED, WHITE, 300, 800>(), "red"},
   { "RgueCmdr", "tracks/venus.wav",
    StyleFirePtr<BLUE, CYAN>(), "blue fire"},
   { "TthCrstl", "tracks/mars.wav",
    StylePtr<InOutHelper<EASYBLADE(OnSpark<GREEN>, WHITE), 300, 800> >(), "green"},
   { "TeensySF", "tracks/mercury.wav",
    StyleNormalPtr<WHITE, RED, 300, 800, RED>(), "white"},
   { "SmthJedi", "tracks/uranus.wav",
    StyleNormalPtr<AudioFlicker<YELLOW, WHITE>, BLUE, 300, 800>(), "yellow"},
   { "SmthGrey", "tracks/venus.wav",
    StylePtr<InOutSparkTip<EASYBLADE(MAGENTA, WHITE), 300, 800> >(), "magenta"},
   { "SmthFuzz", "tracks/mars.wav",
    StyleNormalPtr<Gradient<RED, BLUE>, Gradient<CYAN, YELLOW>, 300, 800>(), "gradient"},
   { "RgueCmdr", "tracks/mercury.wav",
    StyleRainbowPtr<300, 800>(), "rainbow"},
   { "TthCrstl", "tracks/uranus.wav",
    StyleStrobePtr<WHITE, Rainbow, 15, 300, 800>(), "strobe"},
   { "TeensySF", "tracks/venus.wav",
    &style_pov, "POV"},
   { "SmthJedi", "tracks/mars.wav",
    &style_charging, "Battery\nLevel"},

#ifdef ENABLE_WS2811
  { "TeensySF", "tracks/venus.wav", &style_pov, "POV" },
#endif

  { "SmthJedi", "tracks/mars.wav", &style_charging, "battery" },
};

Preset red_presets[] = {
  { "TeensySF", "tracks/venus.wav", StyleNormalPtr<RED, WHITE, 100, 200>()},
  { "SmthJedi", "tracks/mars.wav", StyleNormalPtr<RED, WHITE, 100, 200>()},
  { "TthCrstl", "tracks/uranus.wav", StyleStrobePtr<RED, WHITE, 15, 100, 200>()},
};

Preset simple_presets[] = {
  { "SmthJedi", "tracks/mars.wav", StyleNormalPtr<BLUE, WHITE, 100, 200>() },
  { "TthCrstl", "tracks/uranus.wav", StyleNormalPtr<BLUE, WHITE, 100, 200>() },
  { "RgueCmdr", "tracks/venus.wav", StyleStrobePtr<BLUE, WHITE, 15, 100, 200>() },
};

Preset white_presets[] = {
  { "TeensySF", "tracks/venus.wav", StyleNormalPtr<WHITE, WHITE, 100, 200>() },
  { "SmthFuzz", "tracks/mars.wav", StyleNormalPtr<WHITE, WHITE, 100, 200>() },
  { "SmthGrey", "tracks/mercury.wav", StyleStrobePtr<WHITE, WHITE, 15, 100, 200>() },
};

Preset charging_presets[] = {
  { "charging", "", &style_charging },
};

I hope this makes sense and that I might be able to get a little help if possible as I have been playing with it for weeks now trying to figure it out if i have some faulty hardware.

With kind regards,

Nick

It’s probably saying “font directory not found”.

Please post your complete config file.
You have several preset arrays, but without the blades array I can’t see which ones you’re actually using.

I think you are just switching between presets. Not sure I would consider that a “menu”.

Thank you very much for your prompt reply. Well the the font directory spoken error has gone now and i get the word teensy, smooth jedi or Rogue commander now when I change to style and when I activate the sabre it plays all the right sounds but no blade illumination at all.

This is my config file my_luke_v1_config.h

// This is a sample configuration file.
// This saber has:
//   o TeensySaber V1 hardware.
//   o A touchbutton and a regular button
//   o An 8-pin blade connector
//   o All blades and presets are stored in common_config.h
// If you have a saber similar to this one, make a copy and use the copy.

#ifdef CONFIG_TOP

// V1 electronics
#include "v1_config.h"

// Number of simultaneously connected blades.
// (For interchangeable blades, see the blades[] array.)
#define NUM_BLADES 1

// Number of buttons
#define NUM_BUTTONS 2

// Dual power buttons means that clicking AUX will also turn the saber on.
// If not defined, AUX will go to next preset when off.
#define DUAL_POWER_BUTTONS

// Volume, useful range is about 0-2000.
#define VOLUME 1800

// If you have two 144 LED/m strips in your blade, connect
// both of them to bladePin and drive them in parallel.
const unsigned int maxLedsPerStrip = 144;

// This defines how sensitive the clash detection is.
#define CLASH_THRESHOLD_G 1.0

// Define this if your power button is a touch button.
#define POWER_TOUCHBUTTON_SENSITIVITY 1700
// #define AUX_TOUCHBUTTON_SENSITIVITY 1700
// #define AUX2_TOUCHBUTTON_SENSITIVITY 1700

// For V1 electronics, there is an external pullup resistor to measure
// battery voltage. This specifies how many Ohms it is.
#define BATTERY_PULLUP_OHMS 23000

// If your electonics inverts the bladePin for some reason, define this.
// #define INVERT_WS2811

// Feature defines, these let you turn off large blocks of code
// used for debugging.
#define ENABLE_AUDIO
#define ENABLE_MOTION
// #define ENABLE_SNOOZE
#define ENABLE_WS2811

// FASTLED is experimental and untested right now
// #define ENABLE_FASTLED
// #define ENABLE_WATCHDOG
#define ENABLE_SD
#define ENABLE_SERIALFLASH

#endif

#include "my_luke_common_presets.h"

#ifdef CONFIG_BUTTONS

// There are currently three available button classes:
// Button (standard momentary button)
// TouchButton (similar to momentary button, but reacts to touch).
// LatchingButton (on/off button, always controls ignition)

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

which includes v1_config.h

// This config file contains all the things should be the same for all
// V1 teensysaber configurations. In most cases there should be no need
// to change anything in this file.

#define VERSION_MAJOR 1
#define VERSION_MINOR 0
#define GYRO_CLASS FXAS21002
#define ACCEL_CLASS FXOS8700

// Teensy 3.2 pin map:
// A lot of these can be changed, but be careful, because:
//   o The pins used by the prop shield cannot be easily changed.
//   o Pins that are going to control normal LEDs (not neopixels) need PWM capability,
//     and not all teensy pins can do PWM.
//   o Touch input is not available on all pins.
//   o Sdcard chip select pin depends on what shield you use.
//   o Battery level and blade identification needs analog input, which is not possible
//     on all pins.
//
// See the teensy 3.2 pinout diagram for more info: https://www.pjrc.com/teensy/pinout.html
enum SaberPins {
  // Bottom edge (in pin-out diagram)
  sdCardSelectPin = 0,            // (See File->Example->SD->ReadWrite for
                                  // other possible values.)
  freePin1 = 1,                   // FREE
  motionSensorInterruptPin = 2,   // motion sensor interrupt (prop shield)
  freePin3 = 3,                   // FREE
  freePin4 = 4,                   // FREE (make this sdCardSelectPin if you're using a Wiz820+SD shield)
  amplifierPin = 5,               // Amplifier enable pin (prop shield)
  serialFlashSelectPin = 6,       // serial flash chip select (prop shield)
  spiLedSelect = 7,               // APA102/dotstar chip select (prop shield)
  freePin8 = 8,                   // FREE
  spiLedDataOut = 11,
  spiLedClock = 13,
  freePin9 = 9,                   // FREE
  freePin10 = 10,                 // FREE
  spiDataOut = 11,                // spi out, serial flash, spi led & sd card
  spiDataIn = 12,                 // spi in, serial flash & sd card

  // Top edge
  spiClock = 13,                  // spi clock, flash, spi led & sd card
  batteryLevelPin = 14,           // battery level input
  auxPin = 15,                    // AUX button
  powerButtonPin = 16,            // power button
  aux2Pin = 17,                   // AUX2 button
  i2cDataPin = 18,                // I2C bus, Used by motion sensors
  i2cClockPin = 19,               // I2C bus, Used by motion sensors
  bladePin = 20,                  // blade control, either WS2811 or PWM
  bladeIdentifyPin = 20,          // blade identify input / FoC
  bladePowerPin1 = 21,            // blade power control
  bladePowerPin2 = 22,            // blade power control
  bladePowerPin3 = 23,            // blade power control
};

#ifndef TEENSYDUINO
#error Please select your Teensy model from Tools->Board
#endif

and the my_luke_common_preset.h file

// If you have multiple sabers that use the same blade connector, and your
// blades use blade ID resistors, you will probably want to share your blades[]
// and preset[] arrays between all your sabers. This file is an example of
// how to do that. My recommendation is to make a copy of this file, edit it
// for your purposes, and then include it from your config file.
// See "graflex_v1_config.h" and "owk_v2_config.h" for examples of how I do this.

#ifdef CONFIG_PRESETS

// CONFIGURABLE
// Each preset line consists of:
// { "font directory", "sound track", Style },
// Where Style is one of:
//   StyleNormalPtr<BaseColor, FlashColor, out millis, in millis>()
//   StyleFirePtr<LowHeatColor, HighHeatColor>()
//   StyleRainBowPtr<out millis, in millis>()
//   StyleStrobePtr<BaseColor, FlashColor, out millis, in millis>()
//   &style_charging
// All colors can be specied as three numbers or using one the handy macros above.
// If you wish to have different presets for different blades, copy this array and
// name it something other than "preset", then use the new name inside the blade
// configuration array below. See "simple_presets" and "charging_presets"
// below for examples.
Preset presets[] = {
  { "TeensySF", "tracks/venus.wav",
    StyleNormalPtr<CYAN, WHITE, 300, 800>(), "cyan"},
   { "SmthJedi", "tracks/mars.wav",
    StylePtr<InOutSparkTip<EASYBLADE(BLUE, WHITE), 300, 800> >(), "blue"},
   { "SmthGrey", "tracks/mercury.wav",
    StyleFirePtr<RED, YELLOW>(), "fire"},
   { "SmthFuzz", "tracks/uranus.wav",
    StyleNormalPtr<RED, WHITE, 300, 800>(), "red"},
   { "RgueCmdr", "tracks/venus.wav",
    StyleFirePtr<BLUE, CYAN>(), "blue fire"},
   { "TthCrstl", "tracks/mars.wav",
    StylePtr<InOutHelper<EASYBLADE(OnSpark<GREEN>, WHITE), 300, 800> >(), "green"},
   { "TeensySF", "tracks/mercury.wav",
    StyleNormalPtr<WHITE, RED, 300, 800, RED>(), "white"},
   { "SmthJedi", "tracks/uranus.wav",
    StyleNormalPtr<AudioFlicker<YELLOW, WHITE>, BLUE, 300, 800>(), "yellow"},
   { "SmthGrey", "tracks/venus.wav",
    StylePtr<InOutSparkTip<EASYBLADE(MAGENTA, WHITE), 300, 800> >(), "magenta"},
   { "SmthFuzz", "tracks/mars.wav",
    StyleNormalPtr<Gradient<RED, BLUE>, Gradient<CYAN, YELLOW>, 300, 800>(), "gradient"},
   { "RgueCmdr", "tracks/mercury.wav",
    StyleRainbowPtr<300, 800>(), "rainbow"},
   { "TthCrstl", "tracks/uranus.wav",
    StyleStrobePtr<WHITE, Rainbow, 15, 300, 800>(), "strobe"},
   { "TeensySF", "tracks/venus.wav",
    &style_pov, "POV"},
   { "SmthJedi", "tracks/mars.wav",
    &style_charging, "Battery\nLevel"},
#ifdef ENABLE_WS2811
  { "TeensySF", "tracks/venus.wav", &style_pov, "POV" },
#endif

  { "SmthJedi", "tracks/mars.wav", &style_charging, "battery" },
};

Preset red_presets[] = {
  { "TeensySF", "tracks/venus.wav", StyleNormalPtr<RED, WHITE, 100, 200>()},
  { "SmthJedi", "tracks/mars.wav", StyleNormalPtr<RED, WHITE, 100, 200>()},
  { "TthCrstl", "tracks/uranus.wav", StyleStrobePtr<RED, WHITE, 15, 100, 200>()},
};

Preset simple_presets[] = {
  { "SmthJedi", "tracks/mars.wav", StyleNormalPtr<BLUE, WHITE, 100, 200>() },
  { "TthCrstl", "tracks/uranus.wav", StyleNormalPtr<BLUE, WHITE, 100, 200>() },
  { "RgueCmdr", "tracks/venus.wav", StyleStrobePtr<BLUE, WHITE, 15, 100, 200>() },
};

Preset white_presets[] = {
  { "TeensySF", "tracks/venus.wav", StyleNormalPtr<WHITE, WHITE, 100, 200>() },
  { "SmthFuzz", "tracks/mars.wav", StyleNormalPtr<WHITE, WHITE, 100, 200>() },
  { "SmthGrey", "tracks/mercury.wav", StyleStrobePtr<WHITE, WHITE, 15, 100, 200>() },
};

Preset charging_presets[] = {
  { "charging", "", &style_charging },
};

// CONFIGURABLE
// Each line of configuration should be:
//     { blade id resistor ohms, blade, CONFIGARRAY(array of presets) },

BladeConfig blades[] = {
#ifdef ENABLE_WS2811
  // PL9823 blade, 97 LEDs
  {   2600, WS2811BladePtr<97, WS2811_580kHz>(), CONFIGARRAY(presets) },

  // Charging adapter, single PL9823 LED.
  {  15000, WS2811BladePtr<1, WS2811_580kHz>(), CONFIGARRAY(charging_presets) },

  // For testing (makes the charging blade behave like a normal blade.)
  //  {  15000, WS2811BladePtr<1, WS2811_580kHz>(), CONFIGARRAY(presets) },

  // WS2811 string blade 144 LEDs
  {   7800, WS2811BladePtr<144, WS2811_ACTUALLY_800kHz | WS2811_GRB>(), CONFIGARRAY(presets) },
#endif

  // Simple blue string blade.
  {   5200, SimpleBladePtr<Blue3mmLED,Blue3mmLED,Blue3mmLED,NoLED>(), CONFIGARRAY(simple_presets) },

  // Blue-Blue-White LED star
  { 20000, SimpleBladePtr<CreeXPE2White, CreeXPE2Blue, CreeXPE2Blue, NoLED>(), CONFIGARRAY(simple_presets) },

  // Blue LED string (with green flourescent tube)
  { 27000, SimpleBladePtr<Blue8mmLED100, Blue8mmLED100, Blue8mmLED100, NoLED>(), CONFIGARRAY(simple_presets) },

  // Red LED string
//  { 33000, SimpleBladePtr<Red8mmLED100, Red8mmLED100, Red8mmLED100, NoLED>(), CONFIGARRAY(red_presets) },

  // 3 x Cree XL-L LED star
  { 100000, SimpleBladePtr<CreeXPL, CreeXPL, CreeXPL, NoLED>(), CONFIGARRAY(white_presets) },
};

#endif

One thing i have got to sort out is the resistor I put in for the blade I cant remember the value so i will have to check that .

I hope that i have quoted the files you require.

with kind regards,

Nick

Do you have multiple blades and need blade ID to figure out which one is actually connected?
If not, I suggest removing all entries you don’t care about from the blades[] array. That way, the resistor, blade ID and all that stuff just doesn’t matter.

If you do need blade id, you will probably need to power the blade while blade ID is calculated. For that you need this define:

#define ENABLE_POWER_FOR_ID PowerPINS<bladePowerPin2,bladePowerPin3>

(Replace the list of pins with the ones that actually go to your blade.)

You can use the serial monitor to see what value the blade ID reads as.
Also, you can use the command scanid to make it re-do the blade ID scan.
More information here:

Thank you for your very quick reply !!!

I have done what you suggested and it is all working fine now :). There is one last thing that i am a bit puzzled about and that is the creation of colours for the blade, i am using the styles editor page that I found a link for and examples that fett263 showed. One example is the ROTJ Luke blade which is exactly what I would like as a font in my Saber. I have pasted the style in to the the config section and i get an illuminated blade but its not green at all. I am guessing that it might be something to do with the way the RGB is set up as i have a RGBW strip but i think that is what you used in your Version 1 build but maybe I got the wrong strip, I have been scratching around trying to find the answer. Is this something you have come across ?

I would really appreciate your help if you have time.

With kind regards,

Nick

Did you try GRBw in the blade config?

NoSloppy is right that it is probably a byte order problem.
When you want it to be green, what color does it actually become?
Also, what does your blades[] array look like now?

Thanks NoSloppy and profezzorn,

Well I couldn’t see a config with GRBw in there only a WS2811_GBR one .

// WS2811 string blade 144 LEDs
  {   7800, WS2811BladePtr<144, WS2811_ACTUALLY_800kHz | WS2811_GRB>(), CONFIGARRAY(presets) },

Well, when I turn the saber on the SK6812 strip produces a repeated pattern of 3 Neopixles, the first one a not so bright Red then a very bright White with a hint of Green and then a not so bright Blue. This pattern continues right to the end of the blade.

My latest config file is as follows

// If you have multiple sabers that use the same blade connector, and your
// blades use blade ID resistors, you will probably want to share your blades[]
// and preset[] arrays between all your sabers. This file is an example of
// how to do that. My recommendation is to make a copy of this file, edit it
// for your purposes, and then include it from your config file.
// See "graflex_v1_config.h" and "owk_v2_config.h" for examples of how I do this.

#ifdef CONFIG_PRESETS

// CONFIGURABLE
// Each preset line consists of:
// { "font directory", "sound track", Style },
// Where Style is one of:
//   StyleNormalPtr<BaseColor, FlashColor, out millis, in millis>()
//   StyleFirePtr<LowHeatColor, HighHeatColor>()
//   StyleRainBowPtr<out millis, in millis>()
//   StyleStrobePtr<BaseColor, FlashColor, out millis, in millis>()
//   &style_charging
// All colors can be specied as three numbers or using one the handy macros above.
// If you wish to have different presets for different blades, copy this array and
// name it something other than "preset", then use the new name inside the blade
// configuration array below. See "simple_presets" and "charging_presets"
// below for examples.
Preset presets[] = {
   {"TeensySF", "tracks/venus.wav",
    StylePtr<InOutHelper<LocalizedClash<Lockup<Blast<AudioFlicker<Green,Rgb<0,200,0>>,White,200,100,400>,Pulsing<Gradient<AudioFlicker<Green,Rgb<0,200,0>>,AudioFlicker<Green,Rgb<0,200,0>>,BrownNoiseFlicker<White,Strobe<Red,White,50,1>,100>,AudioFlicker<Green,Rgb<0,200,0>>,AudioFlicker<Green,Rgb<0,200,0>>,AudioFlicker<Green,Rgb<0,200,0>>>,Gradient<AudioFlicker<Green,Rgb<0,200,0>>,AudioFlicker<Green,Rgb<0,200,0>>,BrownNoiseFlicker<White,Strobe<Red,White,50,1>,100>,AudioFlicker<Green,Rgb<0,200,0>>,AudioFlicker<Green,Rgb<0,200,0>>>,3500>,RandomPerLEDFlicker<White,Green>>,White,50,80>,180,300,Black>>(),},
   {"TeensySF", "tracks/venus.wav",
    StyleNormalPtr<CYAN, WHITE, 300, 800>(), "cyan"},
   { "SmthJedi", "tracks/mars.wav",
    StylePtr<InOutSparkTip<EASYBLADE(BLUE, WHITE), 300, 800> >(), "blue"},
   { "SmthGrey", "tracks/mercury.wav",
    StyleFirePtr<RED, YELLOW>(), "fire"},
   { "SmthJedi", "tracks/mars.wav",
    &style_charging, "Battery\nLevel"},
#ifdef ENABLE_WS2811
  { "TeensySF", "tracks/venus.wav", &style_pov, "POV" },
#endif

  { "SmthJedi", "tracks/mars.wav", &style_charging, "battery" },
};

Preset red_presets[] = {
  { "TeensySF", "tracks/venus.wav", StyleNormalPtr<RED, WHITE, 100, 200>()},
  { "SmthJedi", "tracks/mars.wav", StyleNormalPtr<RED, WHITE, 100, 200>()},
  { "TthCrstl", "tracks/uranus.wav", StyleStrobePtr<RED, WHITE, 15, 100, 200>()},
};

Preset simple_presets[] = {
  { "SmthJedi", "tracks/mars.wav", StyleNormalPtr<BLUE, WHITE, 100, 200>() },
  { "TthCrstl", "tracks/uranus.wav", StyleNormalPtr<BLUE, WHITE, 100, 200>() },
  { "RgueCmdr", "tracks/venus.wav", StyleStrobePtr<BLUE, WHITE, 15, 100, 200>() },
};

Preset white_presets[] = {
  { "TeensySF", "tracks/venus.wav", StyleNormalPtr<WHITE, WHITE, 100, 200>() },
  { "SmthFuzz", "tracks/mars.wav", StyleNormalPtr<WHITE, WHITE, 100, 200>() },
  { "SmthGrey", "tracks/mercury.wav", StyleStrobePtr<WHITE, WHITE, 15, 100, 200>() },
};

Preset charging_presets[] = {
  { "charging", "", &style_charging },
};

// CONFIGURABLE
// Each line of configuration should be:
//     { blade id resistor ohms, blade, CONFIGARRAY(array of presets) },

BladeConfig blades[] = {
#ifdef ENABLE_WS2811
  // PL9823 blade, 97 LEDs
  //{   2600, WS2811BladePtr<97, WS2811_580kHz>(), CONFIGARRAY(presets) },

  // Charging adapter, single PL9823 LED.
  //{  15000, WS2811BladePtr<1, WS2811_580kHz>(), CONFIGARRAY(charging_presets) },

  // For testing (makes the charging blade behave like a normal blade.)
  //{  15000, WS2811BladePtr<1, WS2811_580kHz>(), CONFIGARRAY(presets) },

  // WS2811 string blade 144 LEDs
  {   7800, WS2811BladePtr<144, WS2811_ACTUALLY_800kHz | WS2811_GRB>(), CONFIGARRAY(presets) },
#endif

};

#endif

That is typically what happens if you get the RGB vs. RGBW wrong.

I suggest using WS281XBladePtr instead of WS2811BladePtr, it gives you more control over the byte order, more information here:

I would help more, but it’s my bed time… If you still need help tomorrow, I will write a more detailed explanation.

Ohhhh well that would be much appreciated if you don’t mind. Of course Yes… I am sorry about the bloomin time zone problem. I am in the UK .
With many thanks,
Nick

Just a matter of changing the byte order.
As profezzorn said, use a more current WS281XBladePtr.
Something based on this
WS281XBladePtr<144, bladePin, Color8::GRBw, PowerPINS<bladePowerPin2, bladePowerPin3> >()

Thanks NoSloppy, I have had a go at the suggested format that you shared and with the data on the wiki page that profezzorn shared.

WS281XBladePtr<144, bladePin, Color8::GRBw, PowerPINS<bladePowerPin2, bladePowerPin3> > ()

I can see how it works although it will not compile, I get lots of errors relating to semi colons or commas in the wrong place.

Could you show me what the format should be as I have tired to see how it is in the others parts on my blade array and have tried a large number of combinations at the end

> >()

As per your suggestion

> >,() },

As is on most of the blade array lines

> >, CONFIGARRAY(presets) },

With many thank,

Nick

You need to post the first few error messages and the whole config file if you need help checking for errors.

Hi there NoSloppy, funny enough I was playing around a bit more and I managed to figure it out it was the lack of a ‘{’ at the beginning and a comma at the end.

{7800, WS281XBladePtr<144, bladePin, Color8::GRBW, PowerPINS<bladePowerPin2, bladePowerPin3> >(), CONFIGARRAY(presets) },

I can now confirm that I have the correct cookies now :slightly_smiling_face:. The next problem on my list is that I only have a blade that only had about 60 LEDs illuminated out of a possible 144.

I don’t suppose you have come across that problem have you.

With many thanks.

Nick

*Colour not cookies… although cookies would be nice as well :slightly_smiling_face:

Is the blade about half lit only on one side, or both sides?
The numbers in your config are not causing that as it’s set to run 144 (which is likely more than you have).
Where is the blade from?

With ProffieOS 5.9, you need to set maxLedsPerStrip 34% higher than the number of pixels if you are using RBGW pixels. So try changing maxLedsPerStrip to 192 and see if that works better.
(It’s no longer necessary in ProffieOS 6.x though.)