Getting Started with Proffieboard


Proffieboard is an Open Source Lightsaber Control board created by Fredrik Hubinette (profezzorn). I've put together some helpful resources for those new to Proffieboard to try to help you get started. If you're new to Open Source, Arduino or Custom Lightsabers in general I highly recommend reading and taking some time to learn.

First things first, there is a lot of information, a lot of features and a lot of resources but they are all to help you get the most out of Proffieboard. Everyone, myself included, starts out thinking this is over their head or too challenging or too complicated for them. Anything new requires learning, if you haven't used Proffieboard there is some learning involved, whether it's just learning the buttons and controls or learning to wire the board or learning to update the software you'll need to learn something. In order to help this learning I have put together this page with some basic instruction and links to help you get started.


Some typical jargon to be familiar with:

There's a lot more terminology used throughout the hobby but these are the terms you'll want to know if you're not at all familiar

Updating or Uploading to your Proffieboard

The most asked questions on Proffieboard are related to updating fonts, styles, OS, controls, etc. All updating uses the exact same process.

You need:

There are a few steps (these are described in greater detail in the Manual on the page numbers listed or the links provided)

Updating your Config - Adding Fonts, Tracks, Styles

As noted earlier, your config is the "recipe" for your saber. It's customized to you and you can edit or change anything you wan BUT you need to be mindful of formatting and syntax (so Arduino understands what you're trying to do).

Example config, it looks like a lot but it will make sense soon:

For more descriptions you can also check out:

To break down the important pieces see the referred color:


#include "proffieboard_v2_config.h"
#define NUM_BLADES 2
#define NUM_BUTTONS 2
#define VOLUME 1000
const unsigned int maxLedsPerStrip = 144;
#define ENABLE_WS2811
#define ENABLE_SD
#define FETT263_SWING_ON
#define FETT263_TWIST_OFF
#define FETT263_FORCE_PUSH
#define FETT263_LOCKUP_DELAY 200

#include "../props/saber_fett263_buttons.h"

Preset presets[] = {
{ "TeensySF", "tracks/venus.wav",
StyleNormalPtr<CYAN, WHITE, 300, 800>(), "cyan"},
{ "SmthJedi", "tracks/mars.wav",
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>(), "fire"},
{ "SmthFuzz", "tracks/uranus.wav",
StyleNormalPtr<RED, WHITE, 300, 800>(),
StyleNormalPtr<RED, WHITE, 300, 800>(), "red"},
{ "RgueCmdr", "tracks/venus.wav",
StyleFirePtr<BLUE, CYAN, 0>(),
StyleFirePtr<BLUE, CYAN, 1>(), "blue fire"},
{ "TthCrstl", "tracks/mars.wav",
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>(), "white"},
{ "SmthJedi", "tracks/uranus.wav",
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> >(), "magenta"},
{ "SmthFuzz", "tracks/mars.wav",
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>(), "rainbow"},
{ "TthCrstl", "tracks/uranus.wav",
StyleStrobePtr<WHITE, Rainbow, 15, 300, 800>(),
StyleStrobePtr<WHITE, Rainbow, 15, 300, 800>(), "strobe"},

BladeConfig blades[] = {
{ 0, WS281XBladePtr<144, bladePin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
WS281XBladePtr<1, blade2Pin, Color8::GRB, PowerPINS<bladePowerPin4, bladePowerPin5> >()
, CONFIGARRAY(presets) },

Button PowerButton(BUTTON_POWER, powerButtonPin, "pow");
Button AuxButton(BUTTON_AUX, auxPin, "aux");


Important Links

Fredrik's Site links for more information:

Other important resources: