Adds the NeoPixel state indicator
Adds BB.NSK.Leds.Controller, which shows the robot's safety state on the
four NeoPixels: blue disarmed, green ready or balancing, orange disarming,
magenta flashing when it has fallen over, red for an error.
They breathe rather than sitting still, which reads as a robot that is
running rather than one that has locked up — except :fallen, which
flashes, because it is the one state asking the operator for something.
Why this is worth having even with a panel
The panel says the same thing and takes the better part of three seconds to say it. These are immediate, and immediate is what you want from something telling you whether the robot is about to move. In a room full of these, being readable from wherever you happen to be standing matters more than being detailed.
Needs the right device tree
The ledc node is only in the nsk-balance-bot device tree, so on a board
booted with the stock setting there are no pixels to find and the controller
runs with nothing to drive. mix bb_nsk.doctor says so.
Example
mix bb_nsk.add_leds
Options
--robot- The robot module (defaults to{AppPrefix}.Robot).--brightness- Top of the pulse, 0-255 (default 40). These are bright enough to be uncomfortable at full scale, and draw current to match.